Warum kann ich den Inhalt der Titelbar nicht ändern:
Code: Alles auswählen
frmMitarbeiterbearbeiten.Caption := 'Neuen Mitarbeiter hinzufügen';
Wenn ich statt der Form einen Lable angebe, wird dieser ordnungsgemäß geändert.
Danke für Eure Hilfe
Code: Alles auswählen
frmMitarbeiterbearbeiten.Caption := 'Neuen Mitarbeiter hinzufügen';
Code: Alles auswählen
//----------------------------------------------------------
// Form wird angezeigt
//----------------------------------------------------------
procedure TfrmMitarbeiterbearbeiten.FormActivate(Sender: TObject);
begin
case m_Bearbeitungstyp of
1:
begin
//lblMitarbeiter.Caption :='Neuen Mitarbeiter hinzufügen'; //<--funktioniert
frmMitarbeiterbearbeiten.Caption := 'Neuen Mitarbeiter hinzufügen'; //<--funktioniert nicht
//frmMitarbeiterbearbeiten.Refresh; //<--kein effekt
//frmMitarbeiterbearbeiten.Repaint; //<--kein effekt
end;
2:
begin
frmMitarbeiterbearbeiten.Caption := 'Daten Mitarbeiter bearbeiten';
end;
end;
end;
ich glaube nicht, dass der Breakpoint gefunden wird (Debuggermode funktioniert, da nach dem Debuggen das Fenster neu aktiviert wird)Vbxler hat geschrieben:Code: Alles auswählen
frmMitarbeiterbearbeiten.Caption := 'Neuen Mitarbeiter hinzufügen'; //<--funktioniert nicht
Code: Alles auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
Caption:='Ändere Caption aufgrund Button';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Form2.showmodal;
// Form1.Activate; //Ist es damit gelöst ?!
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
Caption:='Caption wird von Activate geschrieben';
end;
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
Code: Alles auswählen
Caption := 'Neuen Mitarbeiter hinzufügen';
Hm, langsam kommt mir ein Verdacht...Vbxler hat geschrieben:Es ist unglaublich, aber an der selben Stelle mitfunktioniert es!Code: Alles auswählen
Caption := 'Neuen Mitarbeiter hinzufügen';
Das ist nicht richtig. OnCreate wird nur ein einziges Mal (pro Form!) aufgerufen, dann wenn das Form erzeugt wird.Vbxler hat geschrieben:Leider ist es bei FPC so, dass man die Arbeiten die beim Aufruf eines Fenster
erledigt werden müssen in Activate packen muss, denn das Ereignis Create wird zweimal erzeugt.
Einmal beim Start der Anwendung und einmal beim Aufruf des Fenstern.
Das ist eigentlich eine unübliche Vorgangsweise, dass die Fenster die garnicht benötigt werden,
beim Programmstart ein Create erhalten.
Code: Alles auswählen
begin
RequireDerivedFormResource := True;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2); //<-- wird automatisch eingefügt
Application.Run;
end.
Nein, Create wird nur einmal pro Form aufgerufen. Dein Problem ist, dass du zu viele Forms hast. Oder hattest wenn du es jetzt nicht mehr so wie in deinem Beispiel machst.Vbxler hat geschrieben:Create wird deshalb zweimal aufgerufen, da Lazarus beim Hinzufügen einer weiteren Form
in der Programmunit diese zweite Form beim Programmstart aufruft.