Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Sender soll den Titel des Formulars bestimmen (https://www.delphipraxis.net/128711-sender-soll-den-titel-des-formulars-bestimmen.html)

taaktaak 4. Feb 2009 15:17

Re: Sender soll den Titel des Formulars bestimmen
 
Sorry, verstehe die ganze weitere Diskussion nicht. Die Lösung wurde mit
Zitat:

wäre es besser, im OnClick der Speedbuttons den Titel zu setzen
doch schon gegeben - oder?!

DeddyH 4. Feb 2009 15:20

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).

taaktaak 4. Feb 2009 15:22

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"

Thomas F 4. Feb 2009 15:27

Re: Sender soll den Titel des Formulars bestimmen
 
Zitat:

Zitat von taaktaak
Ja, vermutlich richtig!
Aber der Versuch, den Sender des OnShow() auszuwerten, sollte doch nun "vom Tisch sein"

Der Code enthält noch mehr, daher wollte ich das Ganze nicht in das Speedbutton9click oder Speedbutton11click
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;

DeddyH 4. Feb 2009 15:28

Re: Sender soll den Titel des Formulars bestimmen
 
Und genau das habe ich in #12 gemeint/befürchtet.

taaktaak 4. Feb 2009 15:29

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!

mirage228 4. Feb 2009 15:32

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:
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;
Und dann einfach parametrisiert aufrufen:
Delphi-Quellcode:
  Form4.Mode := fmAdd; // In SetFormMode wird dann die Initialisierung erledigt
  Form4.Show;
  // oder auch mit eigener Show-Routine in Form4:
  Form4.ShowWithMode(fmAdd);
Nur so als Anregung...

Viele Grüße

taaktaak 4. Feb 2009 15:37

Re: Sender soll den Titel des Formulars bestimmen
 
Die zweite Möglichkeit erscheint mir eleganter!

DeddyH 4. Feb 2009 15:40

Re: Sender soll den Titel des Formulars bestimmen
 
Jetzt sind wir da, wo ich hinwollte :zwinker:

nahpets 4. Feb 2009 15:45

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 08:50 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz