Einzelnen Beitrag anzeigen

Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#32

AW: Zugriff auf Objekt in TObjectList

  Alt 10. Dez 2019, 10:06
Zitat:
Für mich sieht das so aus, als ob du in die Liste schon ein Nil-Object reinpackst. Sprich gibt es die Button zu dem Zeitpunkt wo die Prozedur läuft schon?
Wahrscheinlich liegt hier der Fehler. Ich habe gerade mal getestet, ob ich in der Procedure, die die Buttons in die Liste packt, den Button.Name abgreifen kann. Das Ergebnis war wieder der gleiche Error...

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:
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;
Data_Module
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:
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;
Unit Design
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:
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;
Die Reihenfolge 1-9 wird in korrekter Reihenfolge aufgerufen.

Sieht jemand, was ich falsch mache???

Vielen Dank für Eure Unterstützung!
Patrick
Patrick

Geändert von Ykcim (10. Dez 2019 um 10:09 Uhr)
  Mit Zitat antworten Zitat