Вниз
Скачать: CL | DM;

Цвет ячейки в StringGrid   Найти похожие ветки 

← →
Горбатов В.Ю.   (2004-08-06 08:06) [0]

Сразу говорю, что перерыл кучу ссылок, пролистал множество страниц, но дельного решения пока нет.
Проблема: В StringGrid"е задаю календарь на месяц из определенной базы. Но реально выделить именно выходные и праздничные дни другим цветом пока никак. Т.е. нужно динамически изменять цвета в определенных ячейках при перемещении по месяцам.
В OnDrawCell получается задать цвета только статически.

Помогите, плиз, заранее спасибо!


← →
olookin ©   (2004-08-06 08:12) [1]

А что значит "получается статически"?


← →
Думкин ©   (2004-08-06 08:24) [2]

А ты применяй не константы, а пременные, или никак?


← →
KSergey ©   (2004-08-06 08:31) [3]

Код OnDrawCell - в студию!


← →
Алхимик ©   (2004-08-06 08:39) [4]

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);


Анализируешь ACol, ARow и Cells[ACol, ARow]


← →
Леприкон ©   (2004-08-06 08:40) [5]

По поводу выходных. Я так понимаю, это столбцы Index и Index+1.
Так что мешает в OnDrawCell проверять if (ACol=Index) or (ACol=Index+1) и менять цвет?


← →
TUser ©   (2004-08-06 09:05) [6]

unit uMyStringGrid;

interface

uses
 SysUtils, Classes, Controls, Grids, Graphics, types, windows;

type
 TOnCanFill = procedure (Sender:TObject; ACol, ARow:longint; var Fill:boolean) of object;

 TMyStringGrid = class(TStringGrid)
 private
   FFillColor:TColor;
   FOnCanFill:TOnCanFill;
 protected
   procedure DrawCell(ACol, ARow: Longint; ARect: TRect;
     AState: TGridDrawState); override;
 published
   property FillColor:TColor read FFillColor write FFillColor;
   property OnCanFill:TOnCanFill read FOnCanFill write FOnCanFill;
 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("Aksianov", [TMyStringGrid]);
end;

procedure TMyStringGrid.DrawCell(ACol, ARow: Longint; ARect: TRect;
     AState: TGridDrawState);
var CanFill:boolean;
begin
  CanFill:=false;
  if assigned (FOnCanFill) then
     FOnCanFill(Self,ACol,ARow,CanFill);
  if CanFill then
     with Self.Canvas do
        Brush.Color:=FFillColor;
  inherited;
  if CanFill then
     Brush.Color:=clWhite;
end;

end.



← →
olookin ©   (2004-08-06 09:06) [7]

Автор вероятно разумел под динамическим изменением прорисовку при перемещении по гриду? Тогда рисовать в StringGridOnTopLeftChange



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
3-1091011103
vic
2004-07-28 14:38
2004.08.22
QRStringsBand


14-1091655831
Knight
2004-08-05 01:43
2004.08.22
Программа "Исполнитель"...


1-1092128680
Anton777
2004-08-10 13:04
2004.08.22
Ключ реестра


3-1091013617
shulgin_dmitrii
2004-07-28 15:20
2004.08.22
FireBird+BLOB+Dynamic Array - не работает ...


4-1089295110
Eugenez
2004-07-08 17:58
2004.08.22
Юзер на месте?




   Наверх