![]() |
ButtonClick Procedure aufrufen
Sorry das ich mit sowas nerven muss, aber durch das ganze Starren auf Codezeilen habe ich gerade einen kleinen Blackout.
Könnte mir bitte greade wer verraten, wie die z.B. die ButtonClick Prozedur in einer anderen Procedure aufrufen kann?
Delphi-Quellcode:
Oder so ähnlich.
procedure klickmich;
begin TForm1.Button1Click; end; Bekomme es einfach nicht hin :oops:
Delphi-Quellcode:
Diese Procedure möchte ich in einer anderen aufrufen.
procedure TForm1.Button1Click(Sender: TObject);
begin //Ganz viele Codezeilen end; |
AW: ButtonClick Procedure aufrufen
Hi,
Versuch mal:
Delphi-Quellcode:
...
Button1.OnClick(Sender); // <-- Sender vergessen, nachträglich eingefügt ... |
AW: ButtonClick Procedure aufrufen
Ne funktioniert leider nicht.
Aber es würde mir auch helfen, wenn ihr mir sagen könntet,wie ich bei der procedure Parameter mitgeben kann. Sprich so sollte es aussehen:
Delphi-Quellcode:
Doch leider bekomme ich dann immer Fehlermeldungen, bzw. er will die Verweise löschen, da die procedure dann nicht mehr bekannt ist.
prucedure TForm1.Button1Click(Sender:TObject; parameter1 : string; parameter2 : integer);
begin //Code end; Fehlermeldung: Für Sender ist Vorgabewert erforderlich |
AW: ButtonClick Procedure aufrufen
Sonst erzähle einmal was du machen willst oder zeige bitte mehr Code.
|
AW: ButtonClick Procedure aufrufen
Du kannst z.B. die Prozedur direkt aufrufen, ggf. mit Nil als Sender, wenn du den dort nicht brauchst:
Delphi-Quellcode:
Oder du rufst die Click-Methode auf.
Button1Click(Nil);
Delphi-Quellcode:
Button1.Click;
|
AW: ButtonClick Procedure aufrufen
Und das ist, warum man in Eventhandlern keine Geschäftslogik unterbringt.
|
AW: ButtonClick Procedure aufrufen
Hallo,
ich erlaube mir, diesen Faden aus der Versenkung zu holen, weil ich eine fast identische Problemstellung habe, die durch die Hilfeposts nicht behoben werden konnte. Teilaufgabe: Druck auf Button „Abbrechen” setzt einfach alle Eingabe-Elemente zurück (Ereignis btnAbbrechenClick). Um beim Neueingeben eines Datensatzes diesen Reset ebenfalls durchzuführen, rufe ich ihn in der gezeigten Weise auf - die Versionen mit Nil oder ohne Klammer (wie im vorhergehenden Beitrag) werden vom Compiler moniert. Der vorgestellte Code funktioniert zwar, aber: Nach dem Schließen des Programmes wird mir per Messagefenster angezeigt, dass ein Fehler vorliege und zwar eine fehlerhafte Zeigeroperation. Ich dachte, ich hätte das Problem auf einfache Weise gelöst :? Was mache ich denn falsch?
Delphi-Quellcode:
Für Hinweise dankbar:
procedure btnAbbrechenClick(Sender: TObject);
procedure FormShow(Sender: TObject); procedure TabSheet2Show(Sender: TObject); procedure btnNeuClick(Sender: TObject); procedure btnSaveClick(Sender: TObject); procedure Button1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; Warentext : String; const Bildpfad = … EN = '0'; ZN = '00'; DN = '000'; implementation {$R *.dfm} procedure TForm1.btnAbbrechenClick(Sender: TObject); begin edtPfad.Clear; cbTyp.ItemIndex := 0; edtPreis.Clear; edtBezAlt.Clear; cbMetallFarbe.ItemIndex := 0; edtSteinFarben.Clear; edtPerlenFarbe.Clear; edtHoehe.Clear; edtLieferant.Clear; chAktiv.Checked := True; memBem.Clear; Image1.Picture.Destroy; Image2.Picture.Destroy; Image3.Picture.Destroy; end; procedure TForm1.btnNeuClick(Sender: TObject); var ArtAnz : Integer; ArtBez : String; begin btnAbbrechenClick(Sender); <-------- Hier steckt der Wurm drin! . .… Oswald |
AW: ButtonClick Procedure aufrufen
Kommt der Fehler auch, wenn Du die 3 Destroy-Aufrufe am Ende der Abbrechen-Methode auskommentierst?
|
AW: ButtonClick Procedure aufrufen
Nein. Aber, da hätten wir das Problem ja schon gelöst.
Ah, jetzt habe ich mal einfach alle mir sonst noch sinnvoll erscheinenden Methoden ausprobiert. Die einzige, die keinen Fehler hervorruft, ist CleanUpInstance. Also darauf wäre ich im Leben nicht gekommen! Zunächst mal Danke für diesen tollen Schnellschuß :-) Kannst du mir denn auch erklären, was da schiefgeht bei der Methode Destroy (ein Image beinhaltete kein Bild)? Oswald |
AW: ButtonClick Procedure aufrufen
![]() Zitat:
|
AW: ButtonClick Procedure aufrufen
Das von mir jetzt verwendete CleanUpInstance funktioniert. Free nicht. Das war mir von den Stringlisten her aber geläufig.
Ich werde mir jetzt mal deinen Link vornehmen. Vielleicht finde ich da auch die Antwort zur Frage, warum Free hier nicht geht. Oswald dankt! |
AW: ButtonClick Procedure aufrufen
Wenn du die Routine zwei mal brauchst, lagere sie in eine Prozedur aus und ruf sie bei bedarf auf. Das wäre dann auch sauber programmiert.
|
AW: ButtonClick Procedure aufrufen
Inwiefern stellt das von mir benutzte Verfahren unsauberes Programmieren dar? Hat das was mit Clean Code zu tun? Ich lasse mir da gern was sagen.
Oswald |
AW: ButtonClick Procedure aufrufen
Was genau möchtest Du denn erreichen? Dass Eingabefelder etc. auf Standardwerte zurückgesetzt werden oder dass ein Button gedrückt wird? Wenn ein Außenstehender (oder man selbst nach einiger Zeit) über den Code schaut, dann könnte er auf so etwas stoßen:
Delphi-Quellcode:
oder auf so etwas:
procedure TDeinForm.SomeEvent(Sender: TObject);
begin SomeButtonClick(Sender); end;
Delphi-Quellcode:
Was erscheint logischer? Außerdem sollte man generell zwischen Ereignis und Methode unterscheiden: ein Ereignis ruft eine Methode auf (oder auch nicht), aber kein weiteres Ereignis.
procedure TDeinForm.SomeEvent(Sender: TObject);
begin ResetToDefaults; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:55 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-2025 by Thomas Breitkreuz