Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Prism Button.click simulieren? (https://www.delphipraxis.net/49225-button-click-simulieren.html)

Taladan 7. Jul 2005 09:10


Button.click simulieren?
 
Wie kann man bei .Net einen Klick auf einen Button simulieren, also die dortige procedure ausführen, ohne sie noch mal zu schreiben?

BrunoT 7. Jul 2005 09:14

Re: Button.click simulieren?
 
Hi Taladan,

Lagere doch die Procedur aus und rufe sie von der OnClick- Methode und von der anderen Programmstelle auf.

mfg

BrunoT

LoL 7. Jul 2005 09:20

Re: Button.click simulieren?
 
oder einfach

Button.Click ?

Taladan 7. Jul 2005 20:41

Re: Button.click simulieren?
 
Leider wird in .Net alles mit unsinnigen argumenten aufgerufen.

Delphi-Quellcode:
sender: System.Object; e: System.EventArgs

MathiasSimmack 7. Jul 2005 21:15

Re: Button.click simulieren?
 
Warum unsinnig? Wenn du einen "sender" in deiner Prozedur/Funktion hast, die den Buttonklick simulieren soll, dann benutze den. Ansonsten versuchs mit null bzw. nil. Und für den zweiten Parameter gibt´s auch einen "EventArgs.Empty"-Parameter. Schau mal ins .NET Framework SDK.

Taladan 7. Jul 2005 23:04

Re: Button.click simulieren?
 
Ich will einen Click auf ein Menuitem (gleiches gilt für einen Button) simulieren. Mit Nullwerten will der nicht arbeiten.

Dieses Event hat nun mal diese Argumente (so langsam find ich die unsinnigen Argumente in .Net echt lästig).

Delphi-Quellcode:
procedure Hauptfenster.MenuItem3_Click(sender: System.Object; e: System.EventArgs);
begin
end;

Luckie 8. Jul 2005 01:15

Re: Button.click simulieren?
 
Und es gibt kein:
Delphi-Quellcode:
MenuIrtme3.Click;
wie in der normalen Win32 API VCL?

Taladan 8. Jul 2005 08:48

Re: Button.click simulieren?
 
Nein

BrunoT 8. Jul 2005 08:54

Re: Button.click simulieren?
 
Hi Taladan,

geht das nicht so:

Delphi-Quellcode:
Procedure MyClick;
Begin
  //Das will ich ausführen
  ...
end;

...

procedure Hauptfenster.MenuItem3_Click(sender: System.Object; e: System.EventArgs);
begin
  MyClick;
end;

procedure Hauptfenster.MenuItem4_Click(sender: System.Object; e: System.EventArgs);
begin
  MyClick;
end;
mfg

BrunoT

[edit=alcaeus]Delphi-Tags korrigiert. Mfg, alcaeus[/edit]

barf00s 8. Jul 2005 09:00

Re: Button.click simulieren?
 
Zitat:

Zitat von Taladan
Nein

komisch nur das alle anderen .NET Sprachen so'n MenuItem.Click; mitbringen .....

Taladan 8. Jul 2005 09:22

Re: Button.click simulieren?
 
Zitat:

Zitat von BrunoT
Hi Taladan,

geht das nicht so:

Delphi-Quellcode:
Procedure MyClick;
Begin
  //Das will ich ausführen
  ...
end;

...

procedure Hauptfenster.MenuItem3_Click(sender: System.Object; e: System.EventArgs);
begin
  MyClick;
end;

procedure Hauptfenster.MenuItem4_Click(sender: System.Object; e: System.EventArgs);
begin
  MyClick;
end;
mfg

BrunoT

[edit=alcaeus]Delphi-Tags korrigiert. Mfg, alcaeus[/edit]

Das ist eine Möglichkeit wie man das Problem umgehen kann, umgehen möchte ich aber nicht.

barf00s 8. Jul 2005 09:39

Re: Button.click simulieren?
 
Delphi-Quellcode:
case TMenuItem(Sender).Tag of
  0: ;
  1: ;
  2: ;
end;
...

Robert_G 8. Jul 2005 09:42

Re: Button.click simulieren?
 
Delphi-Quellcode:
MenuItem.Click;
Barfoos' Methode geht natürlich niht, da nur die Klasse selbst den event aufrufen darf.

@Taladan
Rate mal was PerformClick macht.... :P
Vergiss nicht: In .Net sind events multicast delegates, deshalb können mehrere Methoden daran gekoppelt sein.
Delphi-Quellcode:
method ClickHandler1(sender: Object; e: EventArgs);
method ClickHandler2(sender: Object; e: EventArgs);
method ClickHandler3(sender: Object; e: EventArgs);
Delphi-Quellcode:
begin
  menuItem1.Click += ClickHandler1;
  menuItem1.Click += ClickHandler2;
  menuItem1.Click += ClickHandler3;
end;
Wenn du nun daraif klickst (Oder PerformClick aufrufst) werden ClickHandler1 - 3 in genau dieser Reihenfolge aufgerufen.
Brunos Methode würde nur einen aufrufen.

barf00s 8. Jul 2005 09:47

Re: Button.click simulieren?
 
hö?

wenn dem menuitem nen clickevent zugewiesen ist, DANN wird das auch durch das .click aufgerufen...

es sei denn du meinst das case tag of dingen eben.....

Robert_G 8. Jul 2005 09:49

Re: Button.click simulieren?
 
Zitat:

Zitat von barf00s
hö?

Du hast schon gesehen, dass es ein .Net Thread ist?

barf00s 8. Jul 2005 09:50

Re: Button.click simulieren?
 
[edit]
ja und?

gnarf
verwirr micht nicht.
[/edit]

Robert_G 8. Jul 2005 10:00

Re: Button.click simulieren?
 
Zitat:

Zitat von barf00s
ja und?

nix und. ;) Das Feuern eines Events bleibt einzig und allein dem Besitzer vorbehalten.
Wo kämen wir denn da hin? :shock:

Wobei ich es mir in einer .Net-Sprache fast vorstellen könnte, die sowas möglich macht:
Delphi-Quellcode:
var
  s : string;
begin
  setLength(s, 5);
*ROFL* (Ist ein Insiderwitz, aber zum Kaputtlachen wenn man bedenkt, dass jemand diese Funktion tatsächlich bei vollem Bewusstsein in die RTL gebaut hat :lol: )

Zitat:

Zitat von barf00s
gnarf
verwirr micht nicht.

*fulp*
zu spät... :stupid:

barf00s 8. Jul 2005 10:25

Re: Button.click simulieren?
 
(*.*(@==(-.-)°

;)

Taladan 4. Dez 2005 17:45

Re: Button.click simulieren?
 
Es gibt die Procedure Btn.PerformClick, die jedoch nicht über die IDE/Codeverfolständiger angezeigt wird (warum auch immer).

Elvis 4. Dez 2005 18:21

Re: Button.click simulieren?
 
Zitat:

Zitat von Taladan
Es gibt die Procedure Btn.PerformClick, die jedoch nicht über die IDE/Codeverfolständiger angezeigt wird (warum auch immer).

Steht das nicht schon in Beitrag #13? :gruebel:


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