Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Delphi Buttonklick erkennen (https://www.delphipraxis.net/11302-buttonklick-erkennen.html)

devnull 3. Nov 2003 20:17


Buttonklick erkennen
 
Hi,

wie kann ich erkennen, ob sich der Mauszeiger, über einem während der Laufzeit er- stellten Button, befindet ?


devnull

mirage228 3. Nov 2003 20:19

Re: Buttonklick erkennen
 
Delphi-Quellcode:
function GetObjectAtCursor: String;
{

  Liefert VCL-Klassennamen an
  der aktuellen Mausposition!
  Für Debugzwecke

}
var
  Pos: TPoint;
  Obj: TObject;
begin
  GetCursorPos(Pos);
  Obj := FindVCLWindow(Pos) as TObject;
  if Obj <> NIL then
    Result := Obj.ClassName else // du könntest nach TComponent casten und so an den Namen der Komponente rankommen!
    Result := 'Unknown Object at Cursor Position';
end;
Vielleicht hilft dir das irgendwie weiter...

mfG
mirage228

devnull 3. Nov 2003 20:37

Re: Buttonklick erkennen
 
Hi,

erstmal danke; aber ich bekomm jetzt nur mein eigenes Fenster (Form1) heraus.
nicht den Button !

devnull

Sharky 3. Nov 2003 20:47

Re: Buttonklick erkennen
 
Hai devnull,

suche doch mal im Forum nach MouseOver bzw. MouseEnter.

Dann solltest Du einige Beispiele finden.

Gruss :-D

Niko 3. Nov 2003 20:48

Re: Buttonklick erkennen
 
Du könntest auch das OnMouseOver-Ereignis des Buttons belegen.

EDIT: Mist...

devnull 3. Nov 2003 20:50

Re: Buttonklick erkennen
 
danke für eure geduld, daran hätte ich wohl auch sleber denken können...


:wall: devnull

Basic-Master 3. Nov 2003 20:54

Re: Buttonklick erkennen
 
dashier funzt bei mir :)
Delphi-Quellcode:
function GetObjectAtCursor: String;
var
  Pos: TPoint;
  Obj: TObject;
  Wnd: THandle;
begin
  GetCursorPos(Pos);
  if not assigned(FindVCLWindow(Pos)) then begin
    Result := 'Unknown Object at Cursor Position';
    exit;
  end;
  Wnd := FindVCLWindow(Pos).Handle;
  if Wnd = 0 then begin
    Result := 'Unknown Object at Cursor Position';
    exit;
  end
  else begin
      obj := FindControl(Wnd) as tobject;
    if Obj <> NIL then
      Result := Obj.ClassName
    else
      Result := 'Unknown Object at Cursor Position';
  end;
end;
allerdings funktioniert die funktion nur für das gerade aktive fenster :gruebel:

devnull 3. Nov 2003 21:30

Re: Buttonklick erkennen
 
Problem mit OnMouseEnter:

Das "OnMouseEnter"-Ereignis gibts nicht in der EingabeHilfe.

Delphi-Quellcode:
// SpeedButton !!!
var NewButton: TSpeedButton;
begin
  // Neuen Button auf Form 1 erzeugen:
  NewButton := TSpeedButton.Create(Form1);
  // Eigenschaften des neuen Buttons festlegen:
  with NewButton do begin
    Parent := Form1;
    Caption := 'Test';
    Top := 10;
    Left := 100;
    Height := 10;
    Width := 100;
    // geht nicht, ereignis geht nicht
    @NewButton.OnMouseEnter := @MeinEigenesOnMouseEnter;
    // funktioniert
    @NewButton.OnClick := @MeinEigenesOnClick;
  end;
Kann mir einer helfen ???

devnull

mr2 3. Nov 2003 21:44

Re: Buttonklick erkennen
 
warum willst Du denn mit
Delphi-Quellcode:
  @NewButton.OnMouseEnter := @MeinEigenesOnMouseEnter;
die Adressen einander zuweisen?
schreib einfach
Delphi-Quellcode:
  NewButton.OnMouseEnter := MeinEigenesOnMouseEnter;
das sollte problemlos funktionieren (falls MeinEigenesOnMouseEnter wie folgt deklariert ist):
Delphi-Quellcode:
    procedure MeinEigenesOnMouseEnter(Sender: TObject);
CU mr2

devnull 3. Nov 2003 21:50

Re: Buttonklick erkennen
 
hi,
das Problem is, dass ONMOUSEENTER nicht geht (CompilerFehler: Undefinierter Bezeichner: 'OnMouseEnter').

Ich glaub, das OnMouseEnter nur bei LABELS geht, aber wie krieg ich dann raus, ob der Mauszeiger über einem der Buttons ist ?

devnull


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