Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi ButtonClick Procedure aufrufen (https://www.delphipraxis.net/167584-buttonclick-procedure-aufrufen.html)

SyntaxXx 7. Apr 2012 15:00


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:
procedure klickmich;
begin
TForm1.Button1Click;
end;
Oder so ähnlich.
Bekomme es einfach nicht hin :oops:


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  //Ganz viele Codezeilen
end;
Diese Procedure möchte ich in einer anderen aufrufen.

Coffeecoder 7. Apr 2012 15:04

AW: ButtonClick Procedure aufrufen
 
Hi,
Versuch mal:
Delphi-Quellcode:
...
   Button1.OnClick(Sender); // <-- Sender vergessen, nachträglich eingefügt
...

SyntaxXx 7. Apr 2012 15:14

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:
prucedure TForm1.Button1Click(Sender:TObject; parameter1 : string; parameter2 : integer);
begin
//Code
end;
Doch leider bekomme ich dann immer Fehlermeldungen, bzw. er will die Verweise löschen, da die procedure dann nicht mehr bekannt ist.

Fehlermeldung: Für Sender ist Vorgabewert erforderlich

Coffeecoder 7. Apr 2012 15:20

AW: ButtonClick Procedure aufrufen
 
Sonst erzähle einmal was du machen willst oder zeige bitte mehr Code.

Gausi 7. Apr 2012 15:25

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:
Button1Click(Nil);
Oder du rufst die Click-Methode auf.
Delphi-Quellcode:
Button1.Click;

Medium 7. Apr 2012 15:28

AW: ButtonClick Procedure aufrufen
 
Und das ist, warum man in Eventhandlern keine Geschäftslogik unterbringt.

OsCor 26. Feb 2013 13:04

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:
    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 = &#8230;
     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!
   .
   .&#8230;
Für Hinweise dankbar:
Oswald

DeddyH 26. Feb 2013 13:11

AW: ButtonClick Procedure aufrufen
 
Kommt der Fehler auch, wenn Du die 3 Destroy-Aufrufe am Ende der Abbrechen-Methode auskommentierst?

OsCor 26. Feb 2013 13:26

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

DeddyH 26. Feb 2013 13:29

AW: ButtonClick Procedure aufrufen
 
http://docwiki.embarcadero.com/Libra...icture.Destroy
Zitat:

Rufen Sie Destroy nicht direkt in einer Anwendung auf. Verwenden Sie stattdessen die Methode Free. Die Methode Free überprüft, ob die TPicture-Referenz bereits nil ist und ruft Destroy nur bei Bedarf auf.
Was im Übrigen für alle Objekte gilt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 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