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 Abfragen, ob Mouse down (https://www.delphipraxis.net/17321-abfragen-ob-mouse-down.html)

barnti 3. Mär 2004 10:23


Abfragen, ob Mouse down
 
Hi,

ich möchte unabhängig von den Mouseevents abfragen, ob ein Mousebutton zur Zeit gedrückt wird. Kann mir jemand verraten, ob und wie das zu bewerkstelligen ist?

Danke und Gruß,

Barnti

Pseudemys Nelsoni 3. Mär 2004 10:26

Re: Abfragen, ob Mouse down
 
du könntest im onmousedown des Form's eine globale Variable auf "true" setzen wenn dem so ist und im onmouse down halt False und diese fragst du ab


oder meinst du auch ausserhalb des programms?

barnti 3. Mär 2004 10:33

Re: Abfragen, ob Mouse down
 
Hi,

nein ich meinte schon im Programm. Dazu folgendes:

ich starte einen Drag-Vorgang folgendermaßen:

Delphi-Quellcode:
procedure TForm_Main.DBGridColEnter(Sender: TObject);
begin
  // hier soll hin 'wenn rechte mousetaste gedrückt dann...'
  DBGrid_Master.BeginDrag(false);
end;
ich realisiere so ein drag and drop im DBGrid...

Eine globale Variable würde ich gern vermeiden...

Gruß,

Barnti

AlphaBug 3. Mär 2004 11:00

Re: Abfragen, ob Mouse down
 
@barnti

Wie wär´s damit:

Delphi-Quellcode:
if GetAsyncKeyState(VK_RBUTTON) <> 0 then
  // Key ist down

barnti 3. Mär 2004 11:14

Re: Abfragen, ob Mouse down
 
HI,

kannst Du mir dazu ein paar ausführlichere Zeilen schreiben. Ich habe das mal so übernommen. Leider passiert gar nichts mehr. Der Drag-Vorgang wird gar nicht mehr gestartet. Noch habe ich die Doku dazu nicht gelesen...

Jetzt aber!
Folgendes geändert:
Delphi-Quellcode:
procedure TForm_Main.DBGrid_MasterColEnter(Sender: TObject);
begin
  if (GetAsyncKeyState(VK_LBUTTON )<> 0) then
    begin
      DBGrid_Master.BeginDrag(false);
    end;
end;
Das Funktioniert nur solange ich den linken Mousebutton noch nicht betätigt habe. Danach wird auch nach einem beliebigen Tastendruck (z.B. Navigation im DBgrid)der drag-Vorgang begonnen. Ich möchte das ja aber nur, wenn die linke Mousetaste gehalten wird. Daas Ereignis AsyncKeyState müsste also wieder auf Null gesetzt werden...?!

So geht es nocht nicht richtig. Weiß jemand etwas weiter?

Gruß,

Barnti

AlphaBug 3. Mär 2004 11:32

Re: Abfragen, ob Mouse down
 
@barnti

Also bei mir startet er, aber die Zelle kann nirgendwo abgelegt werden.

Delphi-Quellcode:
procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
  if GetAsyncKeyState(VK_RBUTTON) <> 0 then
    DBGrid1.BeginDrag(false);
end;

barnti 3. Mär 2004 11:40

Re: Abfragen, ob Mouse down
 
Hi,

das ist ja auch nicht das Problem. Siehe mein letztes Edit.

Ich möchte das der Drag-Vorgang NUR startet wenn beim OnColEnterEreignis die linke Mousetaste gedrückt wird sonst nicht. So wie es ist funktioniert es nicht, da die 'if-Bedingung' nach dem ersten Betätigen der linken mousetaste immer true liefert...

Weitere Ideen?

Gruß und Danke,

Barnti

AlphaBug 3. Mär 2004 11:43

Re: Abfragen, ob Mouse down
 
@barnti

Die Probleme tauchen bei mir nicht auf !?

Wenn ich das richtig verstehe,
versuchst du also eine Zelle des Grid per Drag&Drop zu verschieben ?

AlphaBug 3. Mär 2004 11:57

Re: Abfragen, ob Mouse down
 
@barnti

Und wenn du anstelle von GetAsyncKeyState() GetKeyState() verwendest ?

Delphi-Quellcode:
procedure TForm1.DBGrid1ColEnter(Sender: TObject);
begin
  if GetKeyState(VK_LBUTTON) <> 0 then
    DBGrid1.BeginDrag(false);
end;

barnti 3. Mär 2004 12:00

Re: Abfragen, ob Mouse down
 
Hi,

habe ich bereits probiert. Leider kein Erfolg...

Gruß,

Barnti


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