Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mausposition im DBGrid (https://www.delphipraxis.net/90772-mausposition-im-dbgrid.html)

fly_singapore 23. Apr 2007 15:48


Mausposition im DBGrid
 
Hallo Allerseits,

nachdem ich mich wund gesucht habe, sehe ich meine letzte Möglichkeit hier im Forum. Es geht darum, in deinen DBGrid die aktuelle Mausposition oder zumindenst die Position der aktuellen Zelle auszulesen. Ich habe kein Ereignis Dergestalt wie etwa <onMousedown> oder <onMouseup> gefunden. In einen normalen Stringgrid finde ich solche Ereignisse. Das Stringgrid würde mir auch eine Menge andere Manipulationsmöglichkeiten geben, allerdings befürchte ich beim einlesen jeder Zelle einen Performance-verlust, da ich aus einer Tabelle etwa 280000 Datensätze auslesen muss.

Könnte mir jemand sagen, wie ich Mauspositionen unter DGGrid auslesen kann..

Ach ja, ich arbeite noch mit Delphi 3..

Vielen Dank !!!!

Bolt Thrower 24. Apr 2007 09:23

Re: Mausposition im DBGrid
 
Hallo fly_singapore,

mit dem folgenden Code kannst Du die Position der aktuell ausgewählten Zelle in einem "DB-Grid" herausfinden (kann das leider nicht unter "Delphi 3" testen, ich hoffe aber, dass es auch da funktioniert):

Delphi-Quellcode:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
  MousePos        : TPoint;
  Coord           : TGridCoord;
begin
  MousePos := DBGrid1.ScreenToClient(Mouse.CursorPos);
  Coord   := DBGrid1.MouseCoord(MousePos.X, MousePos.Y);
  ShowMessage(IntToStr(Coord.X) + ', ' + IntToStr(Coord.Y));
end;
Wie Du siehst, musst Du Dich hier auf das Ereignis "OnCellClick" "stürzen".

Viele Grüße,

Bolt Thrower

fly_singapore 24. Apr 2007 13:53

Re: Mausposition im DBGrid
 
Hallo Bolt Thrower,

Leider hats nicht funktioniert. :pale: Delphi erkennt den Bezeichner <Mouse> nicht. Vielleicht muss ich irgendeine Unit noch einbinden. Oder Delphi 3 hat noch nicht diese Funktionalität. Ich hoffe aber, dass ich bald eine neuere Delphi-Version bekomme.

Trotzdem vielen Dank !!!

Bolt Thrower 24. Apr 2007 14:22

Re: Mausposition im DBGrid
 
Hab' gerade gelesen, dass TMouse bis einschließlich "Delphi 3" nicht zur Verfügung steht.

Alternativ könntest Du allerdings auf folgende Weise versuchen, TMouse zu umgehen:

Delphi-Quellcode:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
  P               : TPoint;
  MousePos        : TPoint;
  Coord           : TGridCoord;
begin
  GetCursorPos(P);
  MousePos := DBGrid1.ScreenToClient(P);
  Coord   := DBGrid1.MouseCoord(MousePos.X, MousePos.Y);
  ShowMessage(IntToStr(Coord.X) + ', ' + IntToStr(Coord.Y));
end;
Viele Grüße,

Bolt Thrower

fly_singapore 26. Apr 2007 12:56

Re: Mausposition im DBGrid
 
Hallo Bolt Thrower


Im Prinzip klappt es schon gut. Ich brauche aber dafür die absoluten Pixelkoordinaten. :? Vielleicht überlege ich mir, wie ich die gerade ausgelesen Werte in Koordinatenwerte umschlüsseln kann.


Vielen Dank für den Tip


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