Вниз
Скачать: 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.973 c
3-1091188693
Wolfram
2004-07-30 15:58
2004.08.22
Ускорение работы запроса с join


14-1091533035
}|{yk
2004-08-03 15:37
2004.08.22
4 уровневая архитектура???


4-1088564990
Алекс А
2004-06-30 07:09
2004.08.22
Можно ли на Дельфи написать драйвер мыши ?


1-1092026807
dimon_programmer
2004-08-09 08:46
2004.08.22
IF не работает


1-1091681351
Vasya.ru
2004-08-05 08:49
2004.08.22
как убрать программу с панели задач?




   Наверх