Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TStringGrid -> Cursorposition in Zelle bestimmen (https://www.delphipraxis.net/148230-tstringgrid-cursorposition-zelle-bestimmen.html)

HolgerCW 25. Feb 2010 12:48


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

taaktaak 25. Feb 2010 13:33

Re: TStringGrid -> Cursorposition in Zelle bestimmen
 
SingleClickPosition im Grid ermitteln

- im Ereignis OnMouseDown()

Delphi-Quellcode:
procedure T~.sg~MouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X,Y:Integer);
var Col,Row : Integer;
begin
  sg~.MouseToCell(x,y,Col,Row);
  ..
- im Ereignis OnClick()

Delphi-Quellcode:
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);
    ..
DoubleClickposition im Grid ermitteln

- ist nur im OnDblClick() und nicht im OnMouseDown() möglich!

Delphi-Quellcode:
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);
    ..
oder analog natürlich im OnMouseMove()

s-off 25. Feb 2010 14:08

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.

HolgerCW 25. Feb 2010 14:16

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

s-off 25. Feb 2010 14:23

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:
TMyStringGrid(TStringGrid).InplaceEditor.SelStart
die Position des Caret innerhalb des Edits ermitteln.

Beispiel:
Delphi-Quellcode:
Type
   TForm1 = Class(TForm)
      StringGrid1: TStringGrid;
   End;

   TMyStringGrid = Class(TStringGrid)

   End;

[...]

   ShowMessage(IntToStr(TMyStringGrid(StringGrid1).InplaceEditor.SelStart));
Edit: Beispiel hinzugefügt

DeddyH 25. Feb 2010 14:37

Re: TStringGrid -> Cursorposition in Zelle bestimmen
 
Oder im interface-Abschnitt:
Delphi-Quellcode:
type
  TStringGrid = class(Grids.TStringGrid)
  end;

  TFormMain = class(TForm)
    StringGridBla: TStringGrid;
    //...etc. blabla
Erspart die Casterei ;)

s-off 25. Feb 2010 14:41

Re: TStringGrid -> Cursorposition in Zelle bestimmen
 
Zitat:

Zitat von DeddyH
Oder im interface-Abschnitt:

Man lernt nie aus :)

HolgerCW 25. Feb 2010 14:59

Re: TStringGrid -> Cursorposition in Zelle bestimmen
 
Super,

das klappt wie geschmiert.

Vielen dank.

taaktaak 25. Feb 2010 15:54

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.

DeddyH 25. Feb 2010 16:01

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".


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:36 Uhr.
Seite 1 von 2  1 2   

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