The following code uses the bitmaps in an image list component to draw the contents of each cell in a draw grid. It draws a focus rectangle around the cell that has focus.
var index: integer; begin index := Row * DrawGrid1.ColCount + Col; with Sender as TDrawGrid do begin Canvas.Brush.Color := clBackGround; Canvas.FillRect(Rect); ImageList1.Draw(Canvas,Rect.Left,Rect.Top,index); if gdFocused in State then Canvas.DrawFocusRect(Rect); end;
Det forstår jeg ikke. Gå ind i DrawCell eventen for din StringGrid og kopier min procedure ind i den nylavede procedure. Fjern de 2 første linjer (procedure-hovedet) fra min procedure. Fjern Begin fra min procedure og så kør dit program.
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); var index: integer; begin index := ARow * Stringgrid1.ColCount + ACol; with Sender as TStringgrid do begin Canvas.Brush.Color := clred; Canvas.FillRect(Rect); Canvas.Brush.Color := clRed; if gdFocused in State then Canvas.DrawFocusRect(Rect); end; end;
Men det passer da ikke rigtig nogen steder af jeg først sætter farven til clred og herefter til clred igen?
Lidt opfølgning på martinlind's svar: Hvis du ændrer procedure TForm1.StringGrid1DrawCell til:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Longint; Rect: TRect; State: TGridDrawState); var index: integer; begin index := Row * StringGrid1.ColCount + Col; with Sender as TStringGrid do begin if gdFocused in State then begin Canvas.Brush.Color := clRed; Canvas.FillRect(Rect); Canvas.Brush.Color := clBackGround; Canvas.DrawFocusRect(Rect); end; end; end;
>>hreiff En anden gang bør du nok beskrive dit problem lidt mere udførlig. Som du kan se, er der en del, du ikke har oplyst om, da du stillede spørgsmålet.
Beklager meget, men jeg troede ikke der ville være meget forskel på at ændre farven i en celle og ændre farven i en celle, så farven blev bibeholdt.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.