![]() |
TStringGrid -[goRowSelect] wird nicht visualisiert
Hallo,
folgender Code schaltet goRowSelect ein oder aus (per CheckBox). Problem: wird RowSelect eingeschaltet, wird brav die ganze Zeile markiert, wird es ausgeschaltet, bliebt die Zeile markiert, bis man in eine Zelle klickt. Danach ist nur diese eine Zelle markiert, wie erwartet. BeginUpdate/EndUpdate, Refresh, Repaint, nichts hilft. Das sollte für das TMS-TAdvStringGrid sein, aber auch das normale TStringGrid reagiert so. Hat jemand eine Lösung? Danke
Delphi-Quellcode:
if CheckBox1.Checked then
begin AdvStringGrid1.Options := AdvStringGrid1.Options-[goRowSelect]; StringGrid1.Options := StringGrid1.Options-[goRowSelect]; end else begin AdvStringGrid1.Options := AdvStringGrid1.Options+[goRowSelect]; StringGrid1.Options := StringGrid1.Options+[goRowSelect]; end; |
AW: TStringGrid -[goRowSelect] wird nicht visualisiert
Ergänze nach dem Click einfach wie folgt:
Delphi-Quellcode:
Das funktioniert sowohl mit dem StringGrid als auch mit dem TMS-AdvStringGrid
for L := AdvStringGrid1.ColCount-1 downto AdvStringGrid1.FixedCols
do AdvStringGrid1.Col := L; |
AW: TStringGrid -[goRowSelect] wird nicht visualisiert
Hallo,
geht das in Deine Richtung?
Delphi-Quellcode:
Gruß
procedure TForm1.SetRowSelect (const Value : Boolean; const Grid : TDrawGrid);
var l, t : Integer; begin l := Grid.Col; t := Grid.Row; Grid.Selection := TGridRect (Rect (l, t, l, t)); if Value then Grid.Options := Grid.Options + [goRowSelect] else Grid.Options := Grid.Options - [goRowSelect] end; procedure TForm1.CheckBox1Click(Sender: TObject); begin SetRowSelect (CheckBox1.Checked, StringGrid1); SetRowSelect (CheckBox1.Checked, AdvStringGrid1); end; [EDIT]Kein roter Kasten[/EDIT] |
AW: TStringGrid -[goRowSelect] wird nicht visualisiert
Zitat:
Delphi-Quellcode:
reichen?
AdvStringGrid1.Col := AdvStringGrid1.FixedCols
Da FixedCols ja die Anzahl der fixierten Spalten ist, würde diese Zahl als Index verwendet immer die erste Zelle innerhalb der Zeile selektieren. Warum erst von größten Spalte runterzählen? |
AW: TStringGrid -[goRowSelect] wird nicht visualisiert
Weil col eine Property ist, bei deren Zuweisung noch andere Dinge passieren (z.B. eben markieren/Markierung löschen, wie hier gefragt - falls die Lösung so funktioniert :) )
|
AW: TStringGrid -[goRowSelect] wird nicht visualisiert
Zitat:
|
AW: TStringGrid -[goRowSelect] wird nicht visualisiert
Hallo,
der Code von Harry klappt, danke! Das hier klappt nicht, warum auch immer. AdvStringGrid1.Col := AdvStringGrid1.FixedCols Heiko |
AW: TStringGrid -[goRowSelect] wird nicht visualisiert
Zitat:
|
AW: TStringGrid -[goRowSelect] wird nicht visualisiert
Okay, das so nicht ganz korrekt.
col:= selectiert die Column wohl nur, wenn diese nicht bereits selectiert ist (was aber bei der Option goRowSelect bereit der fall ist). Darum funktioniert das auch nicht, wenn man goRowSelect wieder auf False setzt, weil sich die Selection dabei nicht verändert, also alle Zellen der Row noch selektiert bleiben. Ist aber vorher nur eine Zelle selektiert, selektiert col:= diese sofort. Richtig (oder richtiger) wäre dann aber
Delphi-Quellcode:
womit eben die erste Zelle der aktuellen Zeile selektiert wäre.
strngrd1.Selection:=TGridRect(Rect(strngrd1.FixedCols,strngrd1.Row,strngrd1.FixedCols,strngrd1.Row));
Kommt zwar am Ende das gleich bei raus, aber man muss nicht jeder Zelle der Zeile rückwärts selektieren. |
AW: TStringGrid -[goRowSelect] wird nicht visualisiert
Zitat:
Zitat:
Möglicherweise würde auch ein grid.invalidate helfen, mit dem Neuzeichnen nach Veränderungen ist das Stringgrid generell recht zurückhaltend. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 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-2025 by Thomas Breitkreuz