Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fertige Procedure über Button ausführen? (https://www.delphipraxis.net/126138-fertige-procedure-ueber-button-ausfuehren.html)

thiagojonas 18. Dez 2008 19:11


Fertige Procedure über Button ausführen?
 
Hallo Leute habe da mal wieder ein kleines dummes Problem.

Ich habe ein button, mit einem onclick ereignis.
Nun möchte ich über ein anderen Button die OnCliclick procedure ausführen.
Wie mache ich das?

Mit dem Namen des Buttons geht es nicht. Z.B Name = Ok_btn und ptocedure ausführen mit:

Delphi-Quellcode:
Ok_btn;

Die Muhkuh 18. Dez 2008 19:12

Re: Procedure Problem!
 
Delphi-Quellcode:
ok_btnClick(nil);

thiagojonas 18. Dez 2008 19:15

Re: Procedure Problem!
 
Thanx :cheers:

taaktaak 18. Dez 2008 19:39

Re: Procedure Problem!
 
Warum nil und nicht ok_btnClick(Self)?

Die Muhkuh 18. Dez 2008 19:40

Re: Procedure Problem!
 
Warum Self und nicht nil? :P

Ich gehe mal davon aus, dass er, da er nicht mal wusste, wie es geht, auch nicht auf den Sender überprüft.

taaktaak 18. Dez 2008 19:43

Re: Procedure Problem!
 
Ok, das ist ein Argument!
8)

SirThornberry 18. Dez 2008 19:51

Re: Procedure Problem!
 
Und wenn nicht nil dann am besten gleich Ok_btn weil es ja so aussehen soll als ob der Ok_btn geklickt wurde ;-)

@thiagojonas: kannst du dem Beitrag bitte einen aussagekräftigen Titel geben? :)

taaktaak 18. Dez 2008 19:54

Re: Procedure Problem!
 
Hmmmm, diesem Ansatz kann ich nicht folgen.
Es hat in jedem Fall den selben Effekt, als wenn der originale Button betätigt wurde. Als Sender sollte aber der tatsächlich Aufrufende mitgegeben werden - vielleicht braucht man diese Information später doch noch einmal...

hoika 18. Dez 2008 20:26

Re: Procedure Problem!
 
Hallo,

für so eine Anforderung schreibe ich immer
eine separate Prozedur,
die halt nicht OnButton1Click heisst,
sondern im Namen die Funktion auch beschreibt.

Delphi-Quellcode:
procedure TForm1.DoSomeThing;
begin
  bla ...
end;
Beide OnClick-Methoden (oder was auch immer)
rufen dann die DoSomeThing methode auf.

Delphi-Quellcode:
procedure TForm1.Button1OnClick; // oh Gott Button 1 ???
begin
  DoSomeThing;
end;

procedure TForm1.Button2OnClick;
begin
  DoSomeThing;
end;

Heiko

taaktaak 18. Dez 2008 20:30

Re: Procedure Problem!
 
Auch wenn es im Augenblick vielleicht etwas übertrieben erscheint,
besser ist das! :thumb:

himitsu 19. Dez 2008 07:39

Re: Procedure Problem!
 
Zitat:

Zitat von hoika
Beide OnClick-Methoden (oder was auch immer)
rufen dann die DoSomeThing methode auf.

Delphi-Quellcode:
procedure TForm1.Button1OnClick; // oh Gott Button 1 ???
begin
  DoSomeThing;
end;

procedure TForm1.Button2OnClick;
begin
  DoSomeThing;
end;

bevor es untergeht ... OnClick-Methoden haben einen Parameter (Sender: TObject)

PS: wenn du DoSomeThing auch soeinen Parameter gibst und DoSomeThing in einer Klasse definierst (halt irgendeine Art 'ner Klassen-Methode), dann kannst du DoSomeThing dem Button auch direkt zuweisen.

Delphi-Quellcode:
T... = class(...)

public
  { Public-Deklarationen }
  procedure DoSomeThing(Sender: TObject = nil);
end;

// "..." kann auch etwas von TForm sein, muß es aber nicht
dank dem =nil im Parameter kann man DoSomeThing; auch weiterhin ohne Parameter direkt aufrufen.

Wichtig: die Sichtbarkeit der Methode muß public oder published sein
und wird =nil weggelassen muß bei direktem Aufruf der Methode der Parameter angegeben werden

Luckie 19. Dez 2008 08:30

Re: Fertige Procedure über Button ausführen?
 
Die Methode von hoika ist auf alle Fälle vorzuziehen. Es ist einfach sauberer, weil die Funktionalität von der Oberfläche getrennt wird. Ausserdem sieht man gleich was passiert, wenn man der Funktion einen aussagekräftigen Namen gibt.

himitsu 19. Dez 2008 08:46

Re: Fertige Procedure über Button ausführen?
 
Zitat:

Ausserdem sieht man gleich was passiert, wenn man der Funktion einen aussagekräftigen Namen gibt.
also bei mir kann man das auch

(bei Definition in der Form, kann die Prozedur direkt über den OI zugewiesen werden
und bei Definition an anderer Stelle, dann via QuellCode)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 Uhr.

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