![]() |
AW: Zugriff auf Objekt in TObjectList
Hallo,
Zitat:
Zeig mal die DFM (falls es das noch gibt, ich kenne mich mit WebCore nicht aus). |
AW: Zugriff auf Objekt in TObjectList
Zitat:
Hier der Aufbau meines Programm-Starts. Ich habe die richtige Reihenfolge mit den nummerierten ShowMessages abgeprüft! Form_NMain
Delphi-Quellcode:
implementation
uses Form_LogInUnit, Form_UebersichtUnit, Form_DispoUnit, TDataUnit, TDesignUnit, TLogicUnit;
Delphi-Quellcode:
Data_Module
procedure TForm_NMain.WebFormShow(Sender: TObject);
begin FullScreen; ShowMessage('1 Main_Show'); ShowMessage(Sheet_LogIn.Name); Data_Module.xConnection_connect(procedure begin ShowMessage('3 AonConnect'); Data_Module.Get_Property; ShowMessage('4 Get_Property done'); Data_Module.Get_Sprache(Create_frmLogIn); end ); end;
Delphi-Quellcode:
implementation
uses TLogicUnit, TDesignUnit;
Delphi-Quellcode:
procedure TData_Module.xConnection_connect (AOnConnect: TConnectCallback);
procedure OnConnect; begin if Assigned(AOnConnect) then begin ShowMessage('2 Connection Ready'); AOnConnect(); end; end; procedure OnError(Error: TXDataWebConnectionError); begin ShowMessage('XData server connection failed with error: ' + Error.ErrorMessage); end; begin if xConnection.Connected then begin if Assigned(AOnConnect) then begin AOnConnect(); end; end else begin xConnection.Open(@OnConnect, @OnError); end; end;
Delphi-Quellcode:
procedure TData_Module.Get_Sprache(AOnDataRecieved: TDataRecievedCallback);
procedure OnResponse(Response: TXDataClientResponse); begin JSON_DataSet(xDST_Sprache, Response); ShowMessage('6 GetSprache DataReceived'); if Assigned(AOnDataRecieved) then begin AOnDataRecieved(); end; end; begin xClient.RawInvoke('IData_xChangeService.Get_Sprache',[], @OnResponse); ShowMessage('5 GetSprache'); end; Form_NMain
Delphi-Quellcode:
Unit Design
procedure TForm_NMain.Create_frmLogIn;
begin ShowMessage('7 Create FrameLogin'); if not Assigned(Form_LogIn) then begin Form_LogIn := TForm_LogIn.CreateNew(Form_NMain.Sheet_LogIn.ElementID, nil); Form_LogIn.OnLogIn_Run:=Logic.Run_LogIn; Design.Design_LogIn; end; Form_NMain.Frame_Control.TabIndex:=0; end;
Delphi-Quellcode:
implementation
uses TDataUnit, TLogicUnit, Form_NMainUnit, Form_LogInUnit;
Delphi-Quellcode:
procedure TDesign.Design_LogIn;
begin ShowMessage('8 Design LogIn'); FListe_Button.Add(Form_LogIn.btn_login_abbruch); FListe_Button.Add(Form_LogIn.btn_login_ok); Labeling_GlowButtons; end;
Delphi-Quellcode:
Die Reihenfolge 1-9 wird in korrekter Reihenfolge aufgerufen.
procedure TDesign.Labeling_GlowButtons;
var I: integer; MyButton: TTMSFNCToolBarButton; Button_Text: string; begin Showmessage('9 Labeling LogIn'); ShowMessage('Anzahl Buttons: '+IntToStr(FListe_Button.Count)); ShowMessage('Anzahl Sprach-Einträge: '+IntToStr(Data_Module.xDST_Sprache.RecordCount)); ShowMessage(Data_Module.xDST_Sprache.FieldByName('btn_login_abbruch').AsString); for I := 0 to FListe_Button.Count -1 do begin if Assigned(FListe_Button.Items[I]) then ShowMessage(FListe_Button.Items[I].ClassName) else ShowMessage('Not assigned'); //Das ist das Ergbenis if FListe_Button.Items[I] is TTMSFNCToolBarButton then ShowMessage('OK') else ShowMessage('Not OK'); //Das ist das Ergebnis end; end; Sieht jemand, was ich falsch mache??? Vielen Dank für Eure Unterstützung! Patrick |
AW: Zugriff auf Objekt in TObjectList
Hallo,
was wird denn hier ShowMessage(FListe_Button.Items[I].ClassName) angezeigt? |
AW: Zugriff auf Objekt in TObjectList
Er springt nach else und gibt "Not assigned" aus...
Delphi-Quellcode:
for I := 0 to FListe_Button.Count -1 do begin
ShowMessage(FListe_Button.Items[I].ClassName); if Assigned(FListe_Button.Items[I]) then ShowMessage(FListe_Button.Items[I].ClassName) else ShowMessage('Not assigned'); if FListe_Button.Items[I] is TTMSFNCToolBarButton then ShowMessage('OK') else ShowMessage('Not OK'); end; Und wenn ich das assigned nicht abprüfe gibt er folgenden Error aus: Zitat:
|
AW: Zugriff auf Objekt in TObjectList
Hallo,
ok, oder auch nicht, dann weiter ShowMessage(Form_LogIn.ClassName) ShowMessage(Form_LogIn.btn_login_abbruch.ClassName ) und zwar unmittelbar vor dem Labeling_GlowButtons; und noch was
Delphi-Quellcode:
procedure TForm_NMain.Create_frmLogIn;
begin ShowMessage('7 Create FrameLogin'); if not Assigned(Form_LogIn) then begin -->> ShowMessage('7.1 TForm_LogIn.CreateNew'); Form_LogIn := TForm_LogIn.CreateNew(Form_NMain.Sheet_LogIn.ElementID, nil); Form_LogIn.OnLogIn_Run:=Logic.Run_LogIn; Design.Design_LogIn; end; Form_NMain.Frame_Control.TabIndex:=0; end; |
AW: Zugriff auf Objekt in TObjectList
Also,
Delphi-Quellcode:
hat 7.1 ... korrekt angezeigt.
ShowMessage('7.1 TForm_LogIn.CreateNew');
Delphi-Quellcode:
hat TForm_LogIn ausgegeben
ShowMessage(Form_LogIn.ClassName);
Delphi-Quellcode:
hat wieder zu einem Error geführt:
ShowMessage(Form_LogIn.btn_login_abbruch.ClassName );
Zitat:
|
AW: Zugriff auf Objekt in TObjectList
Es funktioniert!
Ich verstehe zwar nicht, warum es gerade nicht funktioniert hat, aber ich habe Folgendes geändert: Aus der Procedure Create_frmLogIn habe ich das Design.Design_LogIn gelöscht.
Delphi-Quellcode:
In der Procedure WebFormShow habe ich erst das Form LogIn created und das Design als CallBack von Get_Sprache gesetzt.
procedure TForm_NMain.Create_frmLogIn;
begin ShowMessage('7 Create FrameLogin'); if not Assigned(Form_LogIn) then begin ShowMessage('7.1 TForm_LogIn.CreateNew'); Form_LogIn := TForm_LogIn.CreateNew(Form_NMain.Sheet_LogIn.ElementID, nil); Form_LogIn.OnLogIn_Run:=Logic.Run_LogIn; //Design.Design_LogIn; end; Form_NMain.Frame_Control.TabIndex:=0; end;
Delphi-Quellcode:
Eigentlich hätte ich erwartet, dass das keinen Unterschied macht...
procedure TForm_NMain.WebFormShow(Sender: TObject);
begin FullScreen; Create_frmLogIn; ShowMessage('1 Main_Show'); ShowMessage(Sheet_LogIn.Name); Data_Module.xConnection_connect(procedure begin ShowMessage('3 AonConnect'); Data_Module.Get_Property; ShowMessage('4 Get_Property done'); Data_Module.Get_Sprache(Design.Design_LogIn); end ); end; Vielen Dank für die tolle Unterstützung!!!! Patrick |
AW: Zugriff auf Objekt in TObjectList
Jetzt mach noch was als Lösung in
![]() |
AW: Zugriff auf Objekt in TObjectList
Sorry, dass ich da noch einmal nachfragen muss.
Delphi-Quellcode:
Oder geht es darum, dass ich diese Liste im weiteren Programm immer wieder mal heranziehen soll, wenn benötigt?
procedure TDesign.Design_LogIn;
var BList: TObjectList; begin BList:= TObjectList.Create; BList.OwnsObjects:= false; Try BList.Add(Form_LogIn.btn_login_abbruch); BList.Add(Form_LogIn.btn_login_ok); Design.Labeling_GlowButtons(BList); // Bringe ich nicht hier die Tüte zum Auto? (Ich finde das Beispiel klasse!) Finally BList.Free; //Werfe ich die Tüte nicht erst jetzt, wo ich meine Einkäufe im Auto habe, weg? End; end; Vielen Dank Patrick |
AW: Zugriff auf Objekt in TObjectList
Hallo,
so, wie Du das machst, ist es (auch) OK. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz