TStringgrid via Source Selection setzen .. [gelöst]

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

TStringgrid via Source Selection setzen .. [gelöst]

Beitrag von corpsman »

Hallo Zusammen,

ich habe ein kleines Testprogramm geschrieben:
1. Stringgrid drauf => Option "Rowselect" setzen
2. ein Paar Zeilen einfügen
3. Button drauf mit folgendem Code:

Code: Alles auswählen

Procedure TForm1.Button1Click(Sender: TObject);
Var
  r: TRect;
Begin
  r := StringGrid1.Selection;
  r.Top := 10;
  r.Bottom := 10;
  StringGrid1.Selection := r;
End;   
Wenn man nun wie im Screenshot gezeigt, zuerst auf eine Zelle Klickt (bei mir war das 2/2) und dann den Button drückt. Springt die Auswahl wie erwartet auf die Reihe 10.

Aber:
Wie man auch im Screenshot erkennen kann, bleibt die Zelle 2/2 blau markiert, erst wenn ich mit der Maus eine neue Zeile markiere, geht die Falsche Markierung der Zelle 2/2 weg.

Dieses Verhalten habe ich sowohl unter Windows, als auch unter Linux.

Kennt hier jemand einen Weg wie man die Selection Korrekt setzen kann, ohne das die vorher evtl. gesetzte Zelle stehen bleibt ?

Ein einfaches invalidate reicht jedenfalls nicht :(
Dateianhänge
Problem.PNG
Problem.PNG (13 KiB) 882 mal betrachtet
Zuletzt geändert von corpsman am Mo 27. Jan 2020, 11:22, insgesamt 1-mal geändert.
--
Just try it

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: TStringgrid via Source Selection setzen ..

Beitrag von corpsman »

Lol, wer googeln kann ist klar im Vorteil:

viewtopic.php?f=55&t=7625

da steht man muss einfach nur .row auf 10 setzen und schon gehts :).

=>

Code: Alles auswählen

 
Procedure TForm1.Button1Click(Sender: TObject);
Var
  r: TRect;
Begin
  r := StringGrid1.Selection;
  r.Top := 10;
  r.Bottom := 10;
  StringGrid1.Selection := r;
  StringGrid1.row := 10;
End;   
 
--
Just try it

Antworten