Das ist entwas schwerer.
ich habe es so gemacht:
Mit dem Event OnSelectCell folgende Function gestartet:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure TFrame123.schreibschutz(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean); begin
if isLockedCell(ACol,ARow) then begin StringGridArbeitsschritteKosten.Options := StringGridArbeitsschritteKosten.Options - [goEditing]; end else StringGridArbeitsschritteKosten.Options := StringGridArbeitsschritteKosten.Options + [goEditing];
end; |
Dann wollte ich aber die Zellen auch noch grau haben:
Dazu das Event OnDrawCell:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure TFrame123.grauFaerben(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin if isLockedCell(ACol,ARow) then begin with StringGridArbeitsschritteKosten do begin Canvas.Brush.Color := clBtnFace; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left+2, Rect.Top+2, Cells[ACol, ARow]); end; end; end; |
isLockedCell(col:Integer,row:Integer):Boolean ist eine function die zurückgibt welche Zellen gesperrt werden sollen.