![]() |
On-Ereigniss ersetzen
Moin,
ich hab folgendes Problem: Ich habe ein Fenster in dem etwas aus einer Listbox ausgewählt werden soll und darunter ein Knopf. Die Routine auf dem Knopf soll auch ausgeführt werden wenn ich einen doppelklick auf die Listbox mache. Die Routine wenn man auf den Button drückt funktioniert einwandfrei. Für den dblKlick auf die Listbox verwende ich folgenden Code:
Delphi-Quellcode:
Funktioniert auch soweit: Die Routine wird aufgerufen. Komischerweise "hängt" sich dann mein Programm auf, aber eine Endlosschleife ist es nicht habe ich schon überprüft, denn der Code ist abgearbeitet nur kann ich auf dem Form dann irgendwie nichts mehr machen...
@OnDblClick := @btbtn_okClick;
Worann kann das liegen? Wenn ihr nochmehr Code wollt einfach sagen :mrgreen: |
Re: On-Ereigniss ersetzen
Hi Christoph,
hast du es schonmal so probiert:
Delphi-Quellcode:
Grüße vom marabu
ListBox.OnDblClick := btbtn_on_okClick;
|
Re: On-Ereigniss ersetzen
:mrgreen:
Ich hab das eventuell etwas falsch dargestellt. Der Button wird zur Laufzeit erstellt genau wie die Listbox. Also weise ich dem Button sowie der Listbox die Routine zu:
Delphi-Quellcode:
Und da das ja einfach nur ne procedure ist nehm ich da den Pointer...
@Button.OnClick := @Machwas;
@ListBox.OnDblClick := @Machwas; |
Re: On-Ereigniss ersetzen
Zitat:
trotzdem wollte es eigentlich so gehen wie von marabu beschrieben. |
Re: On-Ereigniss ersetzen
Vielleicht überzeugt dich ja das:
Delphi-Quellcode:
marabu
unit DemoFrm;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TDemoForm = class(TForm) DemoButton: TButton; ListBox: TListBox; procedure DemoButtonClick(Sender: TObject); procedure ButtonClick(Sender: TObject); private MyButton: TButton; end; var DemoForm: TDemoForm; implementation {$R *.dfm} procedure TDemoForm.DemoButtonClick(Sender: TObject); begin if Assigned(MyButton) then MyButton.Free; MyButton := TButton.Create(self); MyButton.Parent := self; MyButton.Top := DemoButton.Top + 100; MyButton.Left := DemoButton.Left; MyButton.Caption := 'So geht es'; MyButton.OnClick := ButtonClick; ListBox.OnDblClick := ButtonClick; end; procedure TDemoForm.ButtonClick(Sender: TObject); begin ShowMessage('Hi'); end; end. |
Re: On-Ereigniss ersetzen
Nun das habe ich nun gemacht trotzdem das selbe wie vorher auch:
Delphi-Quellcode:
komischer weise entsteht das problem immer noch.
Tfrm_GraphEdit = class(TForm)
lb_graphen: TListBox; btbtn_ok: TBitBtn; procedure btbtn_okLoadGraph(Sender : TObject); private { Private declarations } public { Public declarations } end; {...} btbtn_ok.OnClick := btbtn_okLoadGraph; lb_graphen.OnDblClick := btbtn_okLoadGraph; Ich weis nicht mehr weiter :wall: :wall: :wall: Wie kann es sein das das Programm mit dem Button funktioniert aber mit einem Doppelklick sich aufhängt???? |
Re: On-Ereigniss ersetzen
Hai LoL,
wie sieht den der Code für deine Klick-Procedure aus? |
Re: On-Ereigniss ersetzen
Könnte da vielleicht ein unbedachter Typecast des Parameters Sender im Eventhandler der Übeltäter sein?
|
Re: On-Ereigniss ersetzen
Seltsam
Ich hab Delphi geschlossen, neugestartet, neucompiliert und jetzt gehts??? Naja hauptsache ich hab den doofen Fehler nichtmehr |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 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