AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi ButtonKlick ermitteln und wiedergeben
Thema durchsuchen
Ansicht
Themen-Optionen

ButtonKlick ermitteln und wiedergeben

Ein Thema von VT-DA · begonnen am 1. Aug 2005 · letzter Beitrag vom 6. Aug 2005
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    
Benutzerbild von VT-DA
VT-DA

Registriert seit: 20. Jul 2005
Ort: Heiden
59 Beiträge
 
#1

ButtonKlick ermitteln und wiedergeben

  Alt 1. Aug 2005, 18:45
Hi,

Ich versuche verzweifelt eine Funktion zu erstellen die herausfindet ob ein button geklickt wurde.
Dabei kann ich aber wie sonst keine procedure nehmen weil ich mehrere Buttons habe.
Hier mal meine Funktion an der ich werkelte:

Delphi-Quellcode:
function ButtonClick(Obj: TButton): Integer; stdcall;
var i: Integer;
begin
  for i := Low(ButtonArray) to High(ButtonArray) do
  begin
    if Obj = ButtonArray[i].BHandel then
    begin
      if ButtonArray[i].BHandel.OnClick then
        result := 1
      else
        result := 0;
    end;
  end;
end;
Hier jetzt bei der Funktion sieht man das die Funktion durch eine DLL aufgerufen wird.
ButtonArray ist außerdem ein Dynamisches array wo die Handels gespeichert werden.

Doch zu meinem Problem. In der zeile "if ButtonArray[i].BHandel.OnClick then" sagt er mir das Parameter fehlen. Ich schetze mal das dass Fensterhandel fehlt. Doch ich habe bis jetzt keine möglichkeit gefunden wie ich das Fensterhandel übergeben soll.

Mfg
  Mit Zitat antworten Zitat
Benutzerbild von VT-DA
VT-DA

Registriert seit: 20. Jul 2005
Ort: Heiden
59 Beiträge
 
#2

Re: ButtonKlick ermitteln und wiedergeben

  Alt 2. Aug 2005, 15:09
Hi,

Hat niemand ne Idee?

Mfg
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#3

Re: ButtonKlick ermitteln und wiedergeben

  Alt 2. Aug 2005, 16:27
Zitat von VT-DA:
Doch zu meinem Problem. In der zeile "if ButtonArray[i].BHandel.OnClick then" sagt er mir das Parameter fehlen. Ich schetze mal das dass Fensterhandel fehlt. Doch ich habe bis jetzt keine möglichkeit gefunden wie ich das Fensterhandel übergeben soll.
er will keinen handle haben, sondern einen Sender.
irgendwer muss das onClick-Event ja senden...

ausserdem hat ein TButton die Eigenschaft "Down", vielleicht kannst du diese anstelle von OnClick verwenden.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von VT-DA
VT-DA

Registriert seit: 20. Jul 2005
Ort: Heiden
59 Beiträge
 
#4

Re: ButtonKlick ermitteln und wiedergeben

  Alt 2. Aug 2005, 16:41
Hi,

Ahh. Okay. Danke. Aber eine Frage hätte ich da noch.
Wie mache ich denn überhaupt einen "Sender"?

Mfg
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: ButtonKlick ermitteln und wiedergeben

  Alt 2. Aug 2005, 16:47
Zitat von VT-DA:
Hi,

Ahh. Okay. Danke. Aber eine Frage hätte ich da noch.
Wie mache ich denn überhaupt einen "Sender"?

Mfg
in deinem Falle kannst du als Sender deine Variable "Obj" angeben, da dies ja schon ein TButton ist.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von VT-DA
VT-DA

Registriert seit: 20. Jul 2005
Ort: Heiden
59 Beiträge
 
#6

Re: ButtonKlick ermitteln und wiedergeben

  Alt 2. Aug 2005, 16:54
Hallo,

Sorry aber ich weiß immer noch nciht wie ich das anstellen soll.
Die variable Obj ist ja nur zum überprüfen da.


Mfg
  Mit Zitat antworten Zitat
tigerman33

Registriert seit: 30. Jul 2005
Ort: München
423 Beiträge
 
Delphi 2005 Professional
 
#7

Re: ButtonKlick ermitteln und wiedergeben

  Alt 2. Aug 2005, 18:43
Hi,

Indem du OnClick aufrufst, überprüfst du nicht, ob der Button geklickt wurde. Stattdessen rufst du den Eventhandler für das Klickereignis des Buttons auf. Auf deutsch: OnClick checkt nicht, ob der Button geklickt wurde, sondern befiehlt ihm, sich so zu benehmen als sei das der Fall. Dem Ereignis OnClick gehört per Deklaration type TNotifyEvent = procedure(Sender: TObject) of object; der Parameter Sender an. Da steht dann drin, wer das Ereignis ausgelöst hat.

Eine Möglichkeit für dich wäre vielleicht, die Klick-Botschaft des Windows-Kernels abzufangen. Das ist aber (glaub ich) viel Aufwand und wohl auch ein bisschen Overkill. Vielleicht jemand noch ne bessere Idee?
Christian
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: ButtonKlick ermitteln und wiedergeben

  Alt 2. Aug 2005, 18:54
Wie definierst du überhaupt "wurde geklickt"? Ist die linke Mautaste genau zu dieser Zeit gedrückt oder soll es einfach der zuletzt gedrückte Button o.Ä. sein?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
matze.de

Registriert seit: 30. Jul 2005
Ort: Bell(Eifel)
7 Beiträge
 
Delphi 7 Professional
 
#9

Re: ButtonKlick ermitteln und wiedergeben

  Alt 2. Aug 2005, 19:31
Also du kannst entweder die WndProc deines Progs überschreiben, das geht dann so:
Delphi-Quellcode:
type
  TForm1 = Class(TForm)
    Button1: TButton;
  Private
    { Private-Deklarationen }
  Public
    { Public-Deklarationen }
    Procedure WndProc(Var Msg: TMessage); Override;
  end;
[...]
implementation
[...]
Procedure TForm1.WndProc(Var Msg: TMessage);
Begin
    If Msg.Msg = WM_COMMAND Then
    Begin
        If Msg.WParamHi = BN_CLICKED Then
        Begin
            If Msg.LParam = Button1.Handle Then
            Begin
                ShowMessage('Button1 wurde gedrückt.');
            End;
        End;
    End;
    Inherited;
End;
Oder du fängst nur die Message WM_COMMAND ab:
Delphi-Quellcode:
type
  TForm1 = Class(TForm)
    Button1: TButton;
  Private
    { Private-Deklarationen }
  Public
    { Public-Deklarationen }
    Procedure OnCommand(Var Msg: TMessage);Message WM_COMMAND;
  end;
[...]
implementation
[...]
Procedure TForm1.OnCommand(Var Msg: TMessage);
Begin
  If Msg.WParamHi = BN_CLICKED Then
  Begin
      If Msg.LParam = Button1.Handle Then
      Begin
        ShowMessage('Button1 wurde gedrückt.');
      End;
  End;
End;
mfg matze

//Edit: Oder du machst es mit nem OnClick
Mathias
()_()
(O.o) This is Bunny. Copy Bunny into your signature to help him on
(> <) his way to world domination.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: ButtonKlick ermitteln und wiedergeben

  Alt 2. Aug 2005, 19:42
VT-DA will aber den Status des Buttons abfragen. Und da frage ich mich eben, wie der Status des "Geklicktseins" definiert ist .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 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