Einzelnen Beitrag anzeigen

ManfredG

Registriert seit: 12. Feb 2007
Ort: Berlin
34 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

Re: Virtual Treeview und Drag'n'Drop

  Alt 23. Dez 2007, 19:29
alles ansichtssache, ich finde es zB etwas aufwendig, wenn ich windows für drag&drop
bemühen soll, solange alles in einem prog bleibt...
sonst aber garnicht so schlimm, wird dir gefallen...
ist nicht von mir, habe ich auch in DP gefunden.

im formular deklarieren:
Delphi-Quellcode:
  protected (z.B.)
    HookID : HHook;
    IsMouseDown: boolean;
...
in FormCreate:
(Formular heißt HF)

Delphi-Quellcode:
procedure THF.FormCreate(Sender: TObject);
...
  HookId:=SetWindowsHookEx(WH_MOUSE,MouseProc,0,GetCurrentThreadId());
...
dann eine funktion erstellen
Delphi-Quellcode:
// HOOK zur Feststellung von WM_LBUTTONDOWN und WM_LBUTTONUP auch
// außerhalb des Programmes (Es wird die Variable IsMouseDown gesetzt)
function MouseProc(nCode: Integer; wParam, lParam: Longint): Longint; stdcall;
begin
  case nCode < 0 of
  True:
    Result := CallNextHookEx(HF.HookID, nCode, wParam, lParam)
  else begin
    case wParam of
      WM_LBUTTONDOWN : HF.IsMouseDown:=TRUE;
      WM_LBUTTONUP : HF.IsMouseDown:=FALSE;
    end; { of case }
    Result := CallNextHookEx(HF.HookID, nCode, wParam, lParam); end
  end;
end;
und in FormClose wieder freigeben

Delphi-Quellcode:
procedure THF.FormClose(Sender: TObject; var Action: TCloseAction);
...
  if HookID <> 0 then UnHookWindowsHookEx(HookID);
...
gruß
Manfred Götze
  Mit Zitat antworten Zitat