Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mauspoitison zum Fenster (https://www.delphipraxis.net/122268-mauspoitison-zum-fenster.html)

Xaaroth 12. Okt 2008 17:57


Mauspoitison zum Fenster
 
Ich habe ein StringGrid. Mein Ziel ist es auf ein Feld des Grid zu klicken und damit zu erreich, dass einfach ein X in dem Feld eingefügt wird.
Das Grid selber hat ja keine OnKlick für die einzelnen Felder.
Also dachte ich mir ich nehme Mauspoitsion(relativ zur Form) und ziehe davon den Abstand zwischen der klinken Formularkante und der linken Gridkante ab.
Dann Teile ich Feldbreite durch die Breite eines Feldes. Damit wüsste ich dann in welchem Feld die Maus ist.

Aber woher bekomme ich die Mauspoitsion zum Formular?

Grüße
Xaaroth

dominikkv 12. Okt 2008 18:00

Re: Mauspoitison zum Fenster
 
Delphi-Quellcode:
StringGrid1.ScreenToClient(Mouse.CursorPos)

DeddyH 12. Okt 2008 18:02

Re: Mauspoitison zum Fenster
 
Oder einfach TStringGrid.MouseToCell benutzen ;)

Xaaroth 12. Okt 2008 18:23

Re: Mauspoitison zum Fenster
 
Das verstehe ich noch nicht ganz. Was geben mir diese Funktionen denn zurücK?

DeddyH 12. Okt 2008 18:26

Re: Mauspoitison zum Fenster
 
Zitat:

Die Methode MouseToCell gibt die Spalte und die Zeile der Zelle zurück, die sich an den Bildschirmkoordinaten X und Y befindet.
[edit]
Hier mal ein Beispiel:
Delphi-Quellcode:
procedure TForm1.StringGrid1Click(Sender: TObject);
var aCol, aRow: Integer;
    P: TPoint;
begin
  //Screen-Koordinaten in relative Koordinaten umrechnen
  P := StringGrid1.ScreenToClient(Mouse.CursorPos);
  //Entsprechende Zelle ermitteln
  StringGrid1.MouseToCell(P.X,P.Y,aCol,aRow);
  //fixe Spalten/Zeilen lasse ich mal außen vor
  if (aCol >= StringGrid1.FixedCols) and (aRow >= StringGrid1.FixedRows) then
    StringGrid1.Cells[aCol,aRow] := 'X';
end;
[/edit]

alleinherrscher 15. Okt 2009 12:45

Re: Mauspoitison zum Fenster
 
//edit: Oh, ich bin so ein Trottel und poste in den falschen Thread...Bitte vielmals um Entschuldigung... :wall:


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