Delphi-PRAXiS
Seite 1 von 3  1 23      

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)

Thomas F 4. Feb 2009 14:32


Sender soll den Titel des Formulars bestimmen
 
Ich wollte die Caption eines Formulars vom Sender abhängig machen
Ich weiss nicht, warum dieser Code nicht funktioniert

Delphi-Quellcode:
procedure TForm4.FormShow(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
end;
end;
Wenn man den Speedbutton9 drückt, soll das Formular den Titel "Eintrag ändern"haben,
bei Speedbutton11 den Tiel "Neuer Eintrag" haben.
Liegst vielleicht daran, dass die Speedbuttons in einer anderen Unit sind ???

Sherlock 4. Feb 2009 14:35

Re: Sender soll den Titel des Formulars bestimmen
 
Kommt eine Fehlermeldung oder geht er einfach kommentarlos darüber hinweg?

Hast Du Breakpunkte an die stellen gesetzt und das mal schrittweise durchlaufen?

Sherlock

Thomas F 4. Feb 2009 14:42

Re: Sender soll den Titel des Formulars bestimmen
 
Zitat:

Zitat von Sherlock
Kommt eine Fehlermeldung oder geht er einfach kommentarlos darüber hinweg?

Hast Du Breakpunkte an die stellen gesetzt und das mal schrittweise durchlaufen?

Sherlock

Fehlermeldung kommt keine , der geht einfach darüber hinweg,ohne dass er die Caption übernimmt.

Ist da was falsch am Code ????

Ich habs auch schon bei Form4.Create reingeschrieben, ist aber dasselbe

mirage228 4. Feb 2009 14:43

Re: Sender soll den Titel des Formulars bestimmen
 
Wie zeigst Du denn das Formular an?

Evtl. wäre es besser, im OnClick der Speedbuttons den Titel zu setzen:
Delphi-Quellcode:
procedure TForm1.SpeedButton9Click;
begin
  with Form4 do
  begin
    Caption := 'Eintrag ändern';
    Show;
  end;
end;

Thomas F 4. Feb 2009 14:48

Re: Sender soll den Titel des Formulars bestimmen
 
Zitat:

Zitat von mirage228
Wie zeigst Du denn das Formular an?

Evtl. wäre es besser, im OnClick der Speedbuttons den Titel zu setzen:
Delphi-Quellcode:
procedure TForm1.SpeedButton9Click;
begin
  with Form4 do
  begin
    Caption := 'Eintrag ändern';
    Show;
  end;
end;

so.........

Delphi-Quellcode:
procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
Unit4.Form4.Show;
 
end;

nuclearping 4. Feb 2009 14:55

Re: Sender soll den Titel des Formulars bestimmen
 
Und woher weiß Unit4.Form4, dass Form1.SpeedButton9 der "Sender" ist? Den müßtest du schon noch irgendwie übergeben - oder nach dem Unit4.Form4.Show noch Unit4.Form4.FormShow(SpeedButton9) aufrufen.

DeddyH 4. Feb 2009 14:57

Re: Sender soll den Titel des Formulars bestimmen
 
Oder eine Property definieren und vor dem Show setzen.

nahpets 4. Feb 2009 14:58

Re: Sender soll den Titel des Formulars bestimmen
 
Hallo,

Delphi-Quellcode:
procedure TForm4.FormShow(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 
end;
end;

...
  // sieht das in etwa so aus?
  // dann sollte es funktionieren
  Unit4.Form4.FormShow(Unit1.Form1.speedbutton9);

  // Hier tippe ich mal darauf, dass Sender nicht SpeedButton9 ist, sondern eventuell Form1.
procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
  Unit4.Form4.Show;
end;
Was kommt dabei heraus, wenn Du mal ein
Delphi-Quellcode:
ShowMessage(Sender.ClassName);
in Dein FormShow einbaust?

jaenicke 4. Feb 2009 15:02

Re: Sender soll den Titel des Formulars bestimmen
 
Delphi-Quellcode:
procedure TForm4.FormShow(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 
end;
end;
Hier ist Sender immer Form4, es sei denn die Prozedur FormShow wurde manuell mit einem anderen Parameter aufgerufen. Wenn aber beim Anzeigen OnShow ausgelöst wurde, dann ist Sender das Formular selbst.

Wenn du mit dem Button das Formular anzeigst, dann ändere dort doch einfach vorher die Caption.

Thomas F 4. Feb 2009 15:14

Re: Sender soll den Titel des Formulars bestimmen
 
Zitat:

Zitat von nahpets
Hallo,

Delphi-Quellcode:
procedure TForm4.FormShow(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 
end;
end;

...
  // sieht das in etwa so aus?
  // dann sollte es funktionieren
  Unit4.Form4.FormShow(Unit1.Form1.speedbutton9);

  // Hier tippe ich mal darauf, dass Sender nicht SpeedButton9 ist, sondern eventuell Form1.
procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
  Unit4.Form4.Show;
end;
Was kommt dabei heraus, wenn Du mal ein
Delphi-Quellcode:
ShowMessage(Sender.ClassName);
in Dein FormShow einbaust?

Hab ich gemacht

ShowMessage(Sender.ClassName) := TForm4

Delphi-Quellcode:
Unit4.Form4.FormShow(Unit1.Form1.speedbutton9);
Das funktioniert nicht Fehler : zuviele Parameter


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:05 Uhr.
Seite 1 von 3  1 23      

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