Servus!
Mich beschäftigt seite einiger Zeit ein – für mich unerfindliches – Problem im Zusammenhang mit StringGrids. Im unstenstehenden Beispielcode sieht man, daß ich die JEDI-Version verwende (wengen der Möglichkeit, den Inhalt als csv-Datei zu speichern und zu lesen), aber auch bei der originalen Version tritt es genauso auf.
Bei meinem Beispiel ist nur die erste Zeile fix, alle (4) Spalten sind variabel. Nach dem Einlesen sehe ich auf leicht grün gefärbten Feldern einen schwarzen Text – so soll das auch sein. Die erste freie Zelle ist durch eine Umrandung markiert. Über „Button1Click“ möchte ich nun eine auswählbare Zeile bläulich hinterlegen, später soll das automatisch gehen und den momentan anstehenden Ablaufschritt markieren. Und nun kommt das Sonderbare: Sobald ich über den SpinEdit die Zeilennummer auswähle (oder sonst eine Schaltfläche betätige) wird der Text in der o.a. Zelle weiß gefärbt. Wähle ich per Mausklick eine andere Zelle aus, dann wird der Inhalt der neuen Zelle weiß.
Warum ist das so?
Was kann ich tun, damit das nicht mehr vorkommt?
Die Options beim StringGrid stehen auf
[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine]
und – falls das wichtig ist -
ParentFont, ParentColor := False
Nun noch der Beispielcode:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure TForm1.JvAblaufGridDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin with JvAblaufGrid do begin if ARow>0 then begin if ARow=Reihe then Canvas.Brush.Color := clAqua else Canvas.Brush.Color := clMoneyGreen; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left+2,Rect.Top+2,Cells[ACol,ARow]); end; end; end;
procedure TForm1.Button1Click(Sender: TObject); begin Reihe := SpinEdit1.Value; JvAblaufGrid.InvalidateRow(Reihe); Delay(500); JvAblaufGrid.InvalidateRow(Reihe); end; |
Und falls keine Verbesserung möglich wäre – was ich allerdings nicht glaube – womit könnte man so eine Schrittanzeige noch realisieren? In meinen Komponenten habe ich bislang nichts besseres gefunden.
Gruß,
Adrian