Hallo!
Also ich habe folgendes Problem mit einem TStringGrid: ich bin dabei eine Software für Zeiterfassung zu programmieren. Die Software ist für den kleinen Betrieb von meinem Vatter bestimmt. Also ich will eigentlich nur das die verschiedenen Felder von dem jeweiligen Mitarbeiter markiert werden und dann bei klick auf einen Button oder bei enter die Zeilen entweder zu einer Zelle verbunden werden sollen oder ein Rahmen um die Zellen gezogen werden soll. Ersteres währe zwar besser aber ich habe es mal mit der zweiten möglichkeit versucht:
Delphi-Quellcode:
procedure TForm1.strgrdDrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
with (sender as TStringGrid).Canvas do
begin
Pen.Color := clBlack;
Pen.Width := 2;
Pen.Style := psSolid;
MoveTo(strgrd.selection.left, strgrd.selection.top );
Lineto(strgrd.selection.right, strgrd.selection.top );
Lineto(strgrd.selection.right, strgrd.selection.bottom );
Lineto(strgrd.selection.left, strgrd.selection.bottom );
Lineto(strgrd.selection.left, strgrd.selection.top );
end;
end;
Damit habe ichs erfolglos versucht wenn ich damit eine Selektion mache und ein strgrd.repaint dann kommt ein ganz kleiner rahmen in die oberste linke Zelle. Wenn ich ein
if (aRow = 10) and (aCol = 5) and not (gdFixed In State) then
voransetze und die strgrd.selection's durch rect ersetze klappts. Ich bekomms aber net hin, dass der die Zellen einfach so Excel-like mit dem Rahmen umschließt.
Kann mir vielleicht jemand helfen?
Danke!