Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi ButtonClick Prozedur in eigene Methode definieren (https://www.delphipraxis.net/199878-buttonclick-prozedur-eigene-methode-definieren.html)

delphicoder123 27. Feb 2019 14:47

ButtonClick Prozedur in eigene Methode definieren
 
Hallo,
ist es möglich, in eine eigene definierte Funktion, einen ButtonClick Event zu definieren?

Vielen Dank

Neutral General 27. Feb 2019 14:50

AW: ButtonClick Prozedur in eigene Methode definieren
 
Was hast du vor?
So wie du das geschrieben hast macht der Satz nämlich keinen Sinn.
Daher schätze ich bist du Anfänger (?), hast irgendwas vor und versuchst etwas zu tun was nicht geht bzw. keinen Sinn macht.
Von daher: Was ist dein Ziel?

Sherlock 27. Feb 2019 14:52

AW: ButtonClick Prozedur in eigene Methode definieren
 
Was meinst Du damit? Möchtest du Deine eigene Methode durch einen ButtonClick auslösen lassen?

Delphi-Quellcode:
procedure TForm1.MeineMethode;
begin
  ShowMessage('Tadaa');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  MeineMethode;
end;
Sherlock

delphicoder123 27. Feb 2019 14:55

AW: ButtonClick Prozedur in eigene Methode definieren
 
Ich brauche eine Funktion x. In dieser Funktion sind die ganzen Button Click Ereignisse und der dazugehörige Code.
Ich möchte

Sherlock 27. Feb 2019 15:01

AW: ButtonClick Prozedur in eigene Methode definieren
 
Du kannst die gleiche Ereignisbehandlungsmethode mehreren OnClicks zuweisen. Das geht entweder über den Objektinspektor oder eben im Code zur Laufzeit:

Delphi-Quellcode:
...
Button1.OnClick := MultiClicker;
Button2.OnClick := MultiClicker;
...
Wichtig ist dabei eigentlich nur, daß im obigen Beispiel MultiClicker die korrekte Signatur hat also eine procedure ist und als Parameter Sender:TObject hat. Innen drin sollte sie natürlich unterschiedlich auf die verschiedenen Buttons reagieren, aber dafür ist ja der Sender da.

Sherlock

Delphi.Narium 27. Feb 2019 15:02

AW: ButtonClick Prozedur in eigene Methode definieren
 
Was meinst Du?

Möchtest Du aus einer Prozedur heraus einen ButtonClick auslösen? Dann rufe in der Prozedur die Routine auf, die Du dem ButtonClick-Ereignis zugeordnet hast.

Oder willst Du innerhalb einer Prozedure einem Button eine Routine zuweisen, die er beim Click ausführen soll? Auch das geht.

Delphi-Quellcode:
procedure TForm1.button1Click(Sender: TObject);
begin
  ShowMessage('Button1Click');
end;

procedure TForm1.irgendwas;
begin
...
  button1Click(Sender);
// oder
  button1Click(Nil);
// oder
  button1Click(Self);
...
end;

procedure TForm1.IrgendwasZumClickenClick(Sender: TObject);
begin
  ShowMessage('IrgendwasZumClickenClick');
end;

procedure TForm1.irgendwas;
begin
...
  Button1.OnClick := IrgendwasZumClickenClick;
...
end;

procedure TForm1.IrgendwasZumClickenFuerVieleButtonsClick(Sender: TObject);
begin
  if Sender is TButton then begin
    if Sender = Button1 then ShowMessage(Format('Button.Name = %s',[TButton(Sender).Name]))
    else if Sender = Button2 then FormatC
    else if Sender = Button3 then ...;
  end;
end;

procedure TForm1.irgendwas;
begin
...
  Button1.OnClick := IrgendwasZumClickenFuerVieleButtonsClick;
  Button2.OnClick := IrgendwasZumClickenFuerVieleButtonsClick;
  Button3.OnClick := IrgendwasZumClickenFuerVieleButtonsClick;
  Button4.OnClick := IrgendwasZumClickenFuerVieleButtonsClick;
  Button5.OnClick := IrgendwasZumClickenFuerVieleButtonsClick;
  Button6.OnClick := IrgendwasZumClickenFuerVieleButtonsClick;
  Button7.OnClick := IrgendwasZumClickenFuerVieleButtonsClick;
...
end;

Paat 27. Feb 2019 15:58

AW: ButtonClick Prozedur in eigene Methode definieren
 
Willst du innerhalb einer Prozedur/Funktion ein Ereignis (onClick, o.ä.) deklarieren und auch quasi auch dort handeln?
Code:
procedure IchBinEineProzedur;
  procedure btnTest.onButtonClick;
  begin
    macheEtwas();
  end;
begin
  if btnTest.Clicked then
    btnTest.onButtonClick;
end;
Denke nicht das soetwas möglich ist. Vielleicht weiß da ja jemand was :lol:

hoika 27. Feb 2019 16:04

AW: ButtonClick Prozedur in eigene Methode definieren
 
Hallo,
Zitat:

Ich brauche eine Funktion x. In dieser Funktion sind die ganzen Button Click Ereignisse und der dazugehörige Code.
Das würde ich anders lösen.
Definiere dir für jeden Button eine eigene Methode,

Bsp:
Du hast 2 Buttons.
BtnNeu, BtnAendern

Das ergibt 2 Methoden:
Delphi-Quellcode:
procedure TForm1.ArbeiteNeuAb;
begin
end;
procedure TForm1.ArbeiteAendernAb;
begin
end;

Und in die BtnNeuClick kommt der Aufruf:
procedure TForm1.BtnNeuClick();
begin
  ArbeiteNeuAb;
end;
Und jetzt kannst du auch den den Button "Neu" im Code klicken lassen (naja, so in etwa),
indem Du in der Procedure XYZ einfach ArbeiteNeuAb aufrufst.

delphicoder123 27. Feb 2019 21:51

AW: ButtonClick Prozedur in eigene Methode definieren
 
Ich meine das so.

1) Kann man die Prozedur Button1Click und Button2Click auch innerhalb der addiere Funktion definieren. Auch, wenn es an dieser Stelle keinen Sinn macht, würde es mich interessieren, ob sowas überhaupt möglich ist?
2) Falls, das nicht möglich ist, kann man wenigstens, die Prozedur Button1Click und Button2Click in der addiere Funktion aufrufen?

Anstatt das hier:

Code:
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Message 1');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage('Message 2');
end;

function TForm1.addiere(z1,z2:Integer): Integer;
begin
   result:=z1+z2;
end;
Sowas hier(Compiler gibt hier Fehler aus)

Code:
function TForm1.addiere(z1,z2:Integer): Integer;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Message 1');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  ShowMessage('Message 2');
end;

begin
   result:=z1+z2;
end;

Schokohase 27. Feb 2019 22:10

AW: ButtonClick Prozedur in eigene Methode definieren
 
Du kannst lokale Proceduren/Funktionen definieren, die haben aber auch nur eine lokale Sichtbarkeit und du kannst diese somit auch nur lokal verwenden.
Delphi-Quellcode:
procedure MyProcedure();
// lokale procedure/function
procedure MyLocalProc();
begin
end;

function MyLocalFunc() : Integer;
begin
  Result := 10;
end;

var
  r : Integer;
begin
  MyLocalProc();
  r := MyLocalFunc();
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:38 Uhr.
Seite 1 von 2  1 2      

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