Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
970 Beiträge
 
Delphi 6 Professional
 
#7

AW: Form während Erfassung in Grid blokieren

  Alt 26. Feb 2017, 10:15
ClipCursor

Beispiel:
Delphi-Quellcode:
procedure TForm1.DBGrid1MouseEnter(Sender: TObject);
var
  Rect: TRect;
begin
  Rect.Left := DBGrid1.Left;
  Rect.Top := DBGrid1.Top;
  Rect.Right := DBGrid1.Left + DBGrid1.Width;
  Rect.Bottom := DBGrid1.Top + DBGrid1.Height;
  ClipCursor(@Rect);
end;

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key=#27 then ClipCursor(nil);// ESC
end;

Hmm..


müsste das nicht eher so sein?

Delphi-Quellcode:
var
  Rect: TRect;
begin
  Rect.TopLeft := ClientToScreen(DBGrid1.BoundsRect.TopLeft);
  Rect.BottomRight := ClientToScreen(DBGrid1.BoundsRect.BottomRight);
  ClipCursor(@Rect);
end;

So bekommt das ClipCursor den tatsächlichen Rect des Grids auf dem Screen.
Ansonsten ist der irgendwo, da Grid-Left in abhängigkeit vom Parent ist und nicht vom Screen...


Edit:

Oder (verkürzt)

Delphi-Quellcode:
var
  Rect: TRect;
begin
  GetWindowRect(DBGrid1.Handle, Rect);
  ClipCursor(@Rect);
end;

Geändert von HolgerX (26. Feb 2017 um 10:36 Uhr)
  Mit Zitat antworten Zitat