![]() |
TStringGrid -> Cursorposition in Zelle bestimmen
Hallo zusammen,
wie kann ich bestimmen, an welcher Stelle der Cursor in z.B. Zelle[1,1] sich befindet ? Gruss Holger |
Re: TStringGrid -> Cursorposition in Zelle bestimmen
SingleClickPosition im Grid ermitteln
- im Ereignis OnMouseDown()
Delphi-Quellcode:
- im Ereignis OnClick()
procedure T~.sg~MouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
var Col,Row : Integer; begin sg~.MouseToCell(x,y,Col,Row); ..
Delphi-Quellcode:
DoubleClickposition im Grid ermitteln
procedure T~.sg~Click(Sender:TObject);
var P : TPoint; PCol,PRow : LongInt; begin GetCursorPos(p); with sg~ do begin P:=ScreenToClient(P); MouseToCell(P.x,P.y,PCol,PRow); .. - ist nur im OnDblClick() und nicht im OnMouseDown() möglich!
Delphi-Quellcode:
oder analog natürlich im OnMouseMove()
procedure T~.sg~DblClick(Sender:TObject);
var P : TPoint; PCol,PRow : LongInt; begin GetCursorPos(p); with sg~ do begin P:=ScreenToClient(P); MouseToCell(P.x,P.y,PCol,PRow); .. |
Re: TStringGrid -> Cursorposition in Zelle bestimmen
@taaktaak
Ich denke, dass ist nicht das, was der TE möchte. Hier geht es wohl eher um die Position des Cursors/Caret im InPlaceEditor einer Zelle. |
Re: TStringGrid -> Cursorposition in Zelle bestimmen
Hi.
Die Maus ist aussen vor. In Zelle [1,1] steht z.B. die Zahl 123456 Jetzt möchte ich z.B. wissen ob der Cursor zwischen der 1 und 2 oder eventuell zwischen der 4 und 5 steht. Wie geht das ? Gruss Holger |
Re: TStringGrid -> Cursorposition in Zelle bestimmen
Du musst eine Ableitung von TStringGrid erzeugen, um auf den als Protected deklarierten InplaceEditor zugreifen zu können.
Wenn Du den hast, kannst Du mit
Delphi-Quellcode:
die Position des Caret innerhalb des Edits ermitteln.
TMyStringGrid(TStringGrid).InplaceEditor.SelStart
Beispiel:
Delphi-Quellcode:
Edit: Beispiel hinzugefügt
Type
TForm1 = Class(TForm) StringGrid1: TStringGrid; End; TMyStringGrid = Class(TStringGrid) End; [...] ShowMessage(IntToStr(TMyStringGrid(StringGrid1).InplaceEditor.SelStart)); |
Re: TStringGrid -> Cursorposition in Zelle bestimmen
Oder im interface-Abschnitt:
Delphi-Quellcode:
Erspart die Casterei ;)
type
TStringGrid = class(Grids.TStringGrid) end; TFormMain = class(TForm) StringGridBla: TStringGrid; //...etc. blabla |
Re: TStringGrid -> Cursorposition in Zelle bestimmen
Zitat:
|
Re: TStringGrid -> Cursorposition in Zelle bestimmen
Super,
das klappt wie geschmiert. Vielen dank. |
Re: TStringGrid -> Cursorposition in Zelle bestimmen
Sorry für meinen Beitrag, der deutlich an der Fragestellung vorbei ging.
:oops: Die Weg zur richtigen Lösung erstaunt mich, da tatsächlich wie von Geisterhand die Methode aus "protected" nun "public" wird. Ich dachte immer, man müsse gezielt einzelne Methoden "publizieren" und alle die man nicht explizit veröffentlicht, würden ihren bisherigen Status behalten. |
Re: TStringGrid -> Cursorposition in Zelle bestimmen
Das kann man wie gezeigt unterlaufen, da Klassen in derselben Unit automatisch "Friends" sind. Ist die Property/Methode der Vorfahrklasse allerdings als strict protected deklariert, muss man sie in der Crackerklasse AFAIK tatsächlich erst "veröffentlichen".
|
Re: TStringGrid -> Cursorposition in Zelle bestimmen
Hallo Detlef
:hi: Zitat:
Danke für die Erläuterung! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz