Soll die Markierung bestehen bleiben, wenn man die Maustaste wieder losläßt?
Mein Ansatz war jetzt folgender: Du hast zwei globale private Variablen, einmal GrSpalte und einmal GrZeile, die du im OnCreate des Forms auf -1 setzt. Beim Drücken mit der linken Maustaste werden diesen Variablen ACol und ARow der gedrückten Zelle zugewiesen, beim Loslassen wieder auf -1 gesetzt. Bei beiden Ereignissen wird dann StringGrid.Paint aufgerufen, wo State auf gdSelected gesetzt wird.
Delphi-Quellcode:
procedure TFormMain.StrGridTestDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
if (Spalte < 0) or (Zeile < 0) then Exit;
if ((ACol <= Spalte) and (ARow = Zeile)) or
((ACol = Spalte) and (ARow <= Zeile)) then
State := [gdSelected] else
State := [];
end;
Aber das funktioniert auch nicht: Es wird auch hier immer nur die entsprechende Zeile, nicht aber die entsprechende Spalte markiert. Man könnte jetzt noch versuchen, diese Markierung selber zu malen, indem man die Zelle mit einer bestimmten Farbe füllt.
Apropo Radfahren und Sonne genießen: Gute Idee, werd' ich jetzt auch erst mal machen