![]() |
Re: Sender soll den Titel des Formulars bestimmen
Sorry, verstehe die ganze weitere Diskussion nicht. Die Lösung wurde mit
Zitat:
|
Re: Sender soll den Titel des Formulars bestimmen
Da man davon ausgehen darf, dass es ja nicht nur um die Caption geht, bin ich nach wie vor der Meinung, eine Property ist hier zielführend (Trennung von Logik und Darstellung).
|
Re: Sender soll den Titel des Formulars bestimmen
Ja, vermutlich richtig!
Aber der Versuch, den Sender des OnShow() auszuwerten, sollte doch nun "vom Tisch sein" |
Re: Sender soll den Titel des Formulars bestimmen
Zitat:
reinschreiben. Es gäbe noch die Möglichkeit
Delphi-Quellcode:
procedure TForm1.SpeedButton9Click(Sender: TObject);
begin Unit4.Form4.Caption:='Eintrag ändern'; Unit4.Form4.Show; end; procedure TForm4.FormShow(Sender: TObject); begin if Form4.Caption = 'Eintrag ändern' then ...... if Form4.Caption = 'Neuer Eintrag' then ...... end; |
Re: Sender soll den Titel des Formulars bestimmen
Und genau das habe ich in #12 gemeint/befürchtet.
|
Re: Sender soll den Titel des Formulars bestimmen
Autsch, ja das ist wirklich nicht gut :shock:
//edit: Auch wenn ich gesteinigt werde: MINDESTENS für die Texte Konstanten verwenden! |
Re: Sender soll den Titel des Formulars bestimmen
Wenn es wirklich mehrere Dinge zu tun gibt, wäre der Weg über Properties oder eine eigene Show-Routine (als "CustomShow(...)") ggf. besser.
Da bietet sich auch eine Enumeration an:
Delphi-Quellcode:
Und dann einfach parametrisiert aufrufen:
type
TFormMode = (fmAdd, fmEdit); // oder noch mehr type TForm4 = class(TForm) // Komponenten private FFormMode: TFormMode; procedure SetFormMode(Mode: TFormMode); public property Mode: TFormMode read FFormMode write SetFormMode; end;
Delphi-Quellcode:
Nur so als Anregung...
Form4.Mode := fmAdd; // In SetFormMode wird dann die Initialisierung erledigt
Form4.Show; // oder auch mit eigener Show-Routine in Form4: Form4.ShowWithMode(fmAdd); Viele Grüße |
Re: Sender soll den Titel des Formulars bestimmen
Die zweite Möglichkeit erscheint mir eleganter!
|
Re: Sender soll den Titel des Formulars bestimmen
Jetzt sind wir da, wo ich hinwollte :zwinker:
|
Re: Sender soll den Titel des Formulars bestimmen
Hallo,
schonmal mit 'ner ActionList gearbeitet? Eine Action kann man mehreren Buttons, Menüeinträgen... zuordnen und dort im ActionExecute(Sender: TObject) kann man wunderbar in der gewünschten Form den Sender abfragen. Sender ist hier immer das Control, dass die Action ausgelöst hat.
Delphi-Quellcode:
// procedure TForm4.FormShow(Sender: TObject);
procedure TForm4.Action1Execute(Sender: TObject); begin if Sender = Unit1.Form1.speedbutton9 then Form4.Caption := ' Eintrag ändern';//Unit4 if Sender = Unit1.Form1.Speedbutton11 then Form4.Caption :='Neuer Eintrag';//Unit4 Form4.Show; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:42 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-2025 by Thomas Breitkreuz