Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Button ermitteln (https://www.delphipraxis.net/113974-button-ermitteln.html)

MaxMara 17. Mai 2008 17:14


Button ermitteln
 
Hallo Gemeinde,
ich möchte nach dem einer von mehreren Button (Speedbutton) geklickt wird ein anderes Form anzeigen.
Wie kann ich in dem neuen Form erkennen durch click auf welchen der Speedbuttons das Form geöffnet wurde?

Danke und Grüße
Christian

mkinzler 17. Mai 2008 17:15

Re: Button ermitteln
 
Werte den Sender aus

MaxMara 17. Mai 2008 17:19

Re: Button ermitteln
 
Habe ich versucht...mehrmals.
mit
Delphi-Quellcode:
if TSpeedButton(Sender).Name = 'BHTML' then
hab ich die Versuche nun aufgegeben und mein Posting hier verfasst.

mkinzler 17. Mai 2008 17:20

Re: Button ermitteln
 
Zeig mal etwas mehr von deinem Code

Die Muhkuh 17. Mai 2008 17:21

Re: Button ermitteln
 
Ansonsten über die Tag-Eigenschaft.

Bernhard Geyer 17. Mai 2008 17:21

Re: Button ermitteln
 
Jedem Speedbutton kannst du doch ein OnClick-Ereignis zuordnen? Wo liegt das Problem?

Ansonsten:

Delphi-Quellcode:
if Sender = Speedbuttonxyz then
 ...

MaxMara 17. Mai 2008 17:25

Re: Button ermitteln
 
Delphi-Quellcode:
procedure TFHTML.FormShow(Sender: TObject);
begin
  if TSpeedButton(Sender).Name = 'BHTML' then
    Label1.Caption := 'HTML bearbeiten';
end;
Das ist eigentlich der ganze Code...

Der Speedbutton 'BHTML' öffnet das Form über
Delphi-Quellcode:
FHTML.ShowModal;

Zitat:

Zitat von Die Muhkuh
Ansonsten über die Tag-Eigenschaft.

Die sagt mir leider nicht viel. Wie würde das in etwa aussehen?


Zitat:

Zitat von Bernhard Geyer
Jedem Speedbutton kannst du doch ein OnClick-Ereignis zuordnen? Wo liegt das Problem?

Ansonsten:

Delphi-Quellcode:
if Sender = Speedbuttonxyz then
 ...

das OnClick vom Speedbutton öffnet das Form.

mkinzler 17. Mai 2008 17:30

Re: Button ermitteln
 
Das ist ja der falsche Sender:

Delphi-Quellcode:
FHTML.Tag := Sender.Tag;
FHTML.ShowModal;
...
if Self.Tag = ...

Bernhard Geyer 17. Mai 2008 17:34

Re: Button ermitteln
 
Ah, verständlicher.

Ergänze dein TFHTML-Formular um ein Property "EditMode" welche z.B. per Aufzählungstyp die Anzeigemodi des Formulars beinhalten. Im OnClick-Ereignis des Speedbutton setzt du dieses Property. Damit ist auch die Formularabhängigkeit aufgelöst (was ist wenn du versehentlich den Button von "BHTM" nach "btnHTML" änderst das du jetzt dieses Benennungsschema verwendest?)

MaxMara 17. Mai 2008 17:36

Re: Button ermitteln
 
Zitat:

Zitat von mkinzler
Das ist ja der falsche Sender:

Delphi-Quellcode:
FHTML.Tag := Sender.Tag;
FHTML.ShowModal;
...
if Self.Tag = ...

Das versteh ich jetzt nicht ganz.
Delphi-Quellcode:
FHTML.Tag := Sender.Tag;
habe ich jetzt ins onClick-Ereignis des Speedbuttons hinzugefügt.

Das "if Self.Tag..." habe ich jetzt versucht ins FormShow reingegeben, aber was muss auf der rechten Seite vom '=' stehen?

Die Muhkuh 17. Mai 2008 17:38

Re: Button ermitteln
 
Hi,

ich würde Bernhards Weg auch bevorzugen, war gerade das gleiche am Tippen, aber der Herr Geyer kam zuerst :zwinker:

mkinzler 17. Mai 2008 17:39

Re: Button ermitteln
 
Na den den Wert gewünschten Buttons. Voraussetzung ist natürlich, dass jeder Button einen einmaligen Tag hat.

Die Muhkuh 17. Mai 2008 17:41

Re: Button ermitteln
 
Zitat:

Zitat von mkinzler
Na den den Wert gewünschten Buttons. Voraussetzung ist natürlich, dass jeder Button einen einmaligen Tag hat.

Dann ändert man das unbeabsichtigt und schwupps funktioniert es nicht mehr. Bei der von Bernhard vorgeschlagenen Variante funktioniert es weiterhin.

MaxMara 17. Mai 2008 17:48

Re: Button ermitteln
 
Zitat:

Zitat von Bernhard Geyer
Ah, verständlicher.

Ergänze dein TFHTML-Formular um ein Property "EditMode" welche z.B. per Aufzählungstyp die Anzeigemodi des Formulars beinhalten. Im OnClick-Ereignis des Speedbutton setzt du dieses Property. Damit ist auch die Formularabhängigkeit aufgelöst (was ist wenn du versehentlich den Button von "BHTM" nach "btnHTML" änderst das du jetzt dieses Benennungsschema verwendest?)

Puuh...hab mir jetzt http://delphi.about.com/od/delphitip...e_override.htm angeschaut um deinen Beitrag nachvollziehen zu können. Ist das der einzige Weg um das Formular zu erweitern?

Zum Thema Namensschema: Gute Idee :mrgreen:


Zitat:

Zitat von Die Muhkuh
Zitat:

Zitat von mkinzler
Na den den Wert gewünschten Buttons. Voraussetzung ist natürlich, dass jeder Button einen einmaligen Tag hat.

Dann ändert man das unbeabsichtigt und schwupps funktioniert es nicht mehr. Bei der von Bernhard vorgeschlagenen Variante funktioniert es weiterhin.

Ich hab es sowieso nicht hingebracht, weil er meint bei "FHTML.Tag := Sender.Tag;" ist Tag ein undefinierter Bezeichner..

Die Muhkuh 17. Mai 2008 17:58

Re: Button ermitteln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von MaxMara
Zitat:

Zitat von Bernhard Geyer
Ah, verständlicher.

Ergänze dein TFHTML-Formular um ein Property "EditMode" welche z.B. per Aufzählungstyp die Anzeigemodi des Formulars beinhalten. Im OnClick-Ereignis des Speedbutton setzt du dieses Property. Damit ist auch die Formularabhängigkeit aufgelöst (was ist wenn du versehentlich den Button von "BHTM" nach "btnHTML" änderst das du jetzt dieses Benennungsschema verwendest?)

Puuh...hab mir jetzt http://delphi.about.com/od/delphitip...e_override.htm angeschaut um deinen Beitrag nachvollziehen zu können. Ist das der einzige Weg um das Formular zu erweitern?

So kompliziert muss es auch nicht sein. :)

Im Anhang ist ein sehr einfaches Beispiel dafür.

MaxMara 17. Mai 2008 18:05

Re: Button ermitteln
 
Zitat:

So kompliziert muss es auch nicht sein.

Im Anhang ist ein sehr einfaches Beispiel dafür.
Super! Danke!
Ich durchschau es zwar nicht wirklich, aber ich kanns sicher auf mein Projekt umlegen :)

Die Muhkuh 17. Mai 2008 18:08

Re: Button ermitteln
 
Hi,

wenn Du willst, füge ich noch Kommentare hinzu.

Ich dachte, dass es eig. recht einfach zum Durchsehen ist. So kann man sich täuschen. :)

MaxMara 17. Mai 2008 18:13

Re: Button ermitteln
 
Zitat:

Zitat von Die Muhkuh
Hi,

wenn Du willst, füge ich noch Kommentare hinzu.

Ich dachte, dass es eig. recht einfach zum Durchsehen ist. So kann man sich täuschen. :)

Nein passt schon so. Ist auf den zweiten Blick eh nur noch halb so schlimm :mrgreen:

DeddyH 17. Mai 2008 18:15

Re: Button ermitteln
 
Wenn Du fremden Code verstehen willst, hilft es oft, sich daraus ein Struktogramm zu erstellen. Und bei unbekannten Funktionsaufrufen zuerst schön in die Hilfe zu schauen ;)

Die Muhkuh 17. Mai 2008 18:20

Re: Button ermitteln
 
Zitat:

Zitat von DeddyH
Wenn Du fremden Code verstehen willst, hilft es oft, sich daraus ein Struktogramm zu erstellen. Und bei unbekannten Funktionsaufrufen zuerst schön in die Hilfe zu schauen ;)

OpenForm steht aber nicht in der Online-Hilfe :stupid:

DeddyH 17. Mai 2008 18:30

Re: Button ermitteln
 
Ich hab mir Deinen Quellcode nicht angesehen, aber OpenForm wird wohl eine selbstdefinierte Funktion oder Methode sein, die wiederum Methoden benutzt, die dann in der Online-Hilfe stehen :stupid:

Die Muhkuh 17. Mai 2008 18:34

Re: Button ermitteln
 
OpenForm ist aber erstmal unbekannt und man könnte es ja nachgucken wollen :stupid:

DeddyH 17. Mai 2008 18:36

Re: Button ermitteln
 
Hast Du das nicht drinstehen oder soll ich mir das jetzt doch runterladen? Und wie gesagt, Struktogramm erstellen, dann eben auch für OpenForm.

Die Muhkuh 17. Mai 2008 18:37

Re: Button ermitteln
 
Nein quatsch. OpenForm ist eine Methode von mir, um etwas Code zu sparen. Wollt' Dich ein bisschen auf die Schippe nehmen :zwinker:

MaxMara 17. Mai 2008 18:57

Re: Button ermitteln
 
Zitat:

Zitat von DeddyH
Wenn Du fremden Code verstehen willst, hilft es oft, sich daraus ein Struktogramm zu erstellen. Und bei unbekannten Funktionsaufrufen zuerst schön in die Hilfe zu schauen ;)

Ich schau öfters in die Hilfe hinein. Aber der heutige Aufgruf von Tag hat mich wieder einmal ein wenig sauer gemacht:
Zitat:

Das ist Tag, ein Mitglied der Klasse TComponent.
Das motiviert nicht sehr zum Hilfe-gucken ;)

DeddyH 17. Mai 2008 19:08

Re: Button ermitteln
 
Ich meinte jetzt auch den Quellcode vom Manuel.
Zitat:

Zitat von MaxMara
Ich durchschau es zwar nicht wirklich, aber ich kanns sicher auf mein Projekt umlegen :)


MaxMara 17. Mai 2008 19:13

Re: Button ermitteln
 
Zitat:

Zitat von DeddyH
Ich meinte jetzt auch den Quellcode vom Manuel.

Dachte ich mir schon. Wollts trotzdem nur mal gesagt wissen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 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 by Thomas Breitkreuz