AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TStringGrid -> Cursorposition in Zelle bestimmen
Thema durchsuchen
Ansicht
Themen-Optionen

TStringGrid -> Cursorposition in Zelle bestimmen

Ein Thema von HolgerCW · begonnen am 25. Feb 2010 · letzter Beitrag vom 25. Feb 2010
Antwort Antwort
Seite 1 von 2  1 2      
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

TStringGrid -> Cursorposition in Zelle bestimmen

  Alt 25. Feb 2010, 13:48
Hallo zusammen,

wie kann ich bestimmen, an welcher Stelle der Cursor in z.B. Zelle[1,1] sich befindet ?

Gruss

Holger
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#2

Re: TStringGrid -> Cursorposition in Zelle bestimmen

  Alt 25. Feb 2010, 14:33
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()
Ralph
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#3

Re: TStringGrid -> Cursorposition in Zelle bestimmen

  Alt 25. Feb 2010, 15:08
@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.
Gruß
s-off
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#4

Re: TStringGrid -> Cursorposition in Zelle bestimmen

  Alt 25. Feb 2010, 15:16
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
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#5

Re: TStringGrid -> Cursorposition in Zelle bestimmen

  Alt 25. Feb 2010, 15:23
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
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
Gruß
s-off
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

Re: TStringGrid -> Cursorposition in Zelle bestimmen

  Alt 25. Feb 2010, 15:37
Oder im interface-Abschnitt:
Delphi-Quellcode:
type
  TStringGrid = class(Grids.TStringGrid)
  end;

  TFormMain = class(TForm)
    StringGridBla: TStringGrid;
    //...etc. blabla
Erspart die Casterei
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#7

Re: TStringGrid -> Cursorposition in Zelle bestimmen

  Alt 25. Feb 2010, 15:41
Zitat von DeddyH:
Oder im interface-Abschnitt:
Man lernt nie aus
Gruß
s-off
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#8

Re: TStringGrid -> Cursorposition in Zelle bestimmen

  Alt 25. Feb 2010, 15:59
Super,

das klappt wie geschmiert.

Vielen dank.
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.993 Beiträge
 
Delphi 7 Professional
 
#9

Re: TStringGrid -> Cursorposition in Zelle bestimmen

  Alt 25. Feb 2010, 16:54
Sorry für meinen Beitrag, der deutlich an der Fragestellung vorbei ging.


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.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#10

Re: TStringGrid -> Cursorposition in Zelle bestimmen

  Alt 25. Feb 2010, 17:01
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".
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 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