Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.03;
Скачать: CL | DM;

Вниз

Фон StringGrig с перетеканием цвета   Найти похожие ветки 

 
неумейка   (2006-11-16 11:06) [0]

Подскажите пожалуйста как сделать цвет поля СтрингГрид плавно изменяющимся от 0-й колонки до последней например с синего до белого цветов.
Очень хочется научиться((( Помогите пожалуйста


 
KilkennyCat ©   (2006-11-16 11:10) [1]

градиент

покажите, как Вы заливаете одним цветом, я подскажу, как двумя.


 
неумейка   (2006-11-16 11:19) [2]

>KilkennyCat

(( Дело в том что я никак не заливаю одним цветом - я не умею( А в книжке написано настолько туманно что я не могу разобраться(
Я "заливаю" только как : StringGrid1.Color :=  Больше никак не умею(
Поэтому и спрашиваю помоши - чтобы на наглядном примере научиться...
извините...(


 
ASoft   (2006-11-16 11:22) [3]

>А в книжке написано настолько туманно...
что за книжка, интересно...


 
Elen ©   (2006-11-16 11:31) [4]


> неумейка

Попробуй ка так :

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Grids;

type
 TForm1 = class(TForm)
   StringGrid1: TStringGrid;
   procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
     Rect: TRect; State: TGridDrawState);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var         e,i:integer;
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
if acol=0 then begin
//********* FOR ******************
for i :=rect.Top  to rect.Bottom  do
begin
 StringGrid1.Canvas.Pen.Color :=rgb(0,26,e);
 StringGrid1.Canvas.MoveTo(rect.Left,i);
 StringGrid1.Canvas.LineTo(rect.Right,i);
 inc(e);
end;
//******* END FOR ****************
end;
end;

end.

Мыслю уловил?... 8)


 
ЮЮ ©   (2006-11-16 11:41) [5]

"туманности стринггрида", наверное

десятком топиков нише показано, как закрасить ячейку красным цветом:
http://delphimaster.net/view/2-1163602406/

В твоем случае придется вместо  простого одноцветного закрашивания прямоугольника TStringGrid(Sender).Canvas.FillRect(Rect); рисовать на канвасе линии вычисляя градиентный цвет


 
Amoeba ©   (2006-11-16 11:45) [6]

Причем с учетом значения ACol. Также в этом обработчике события после закраски вручную выводить и текст.


 
Elen ©   (2006-11-16 11:46) [7]

Еще примерчик :

unit Unit1;

interface

uses          
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Grids;

type
 TForm1 = class(TForm)
   StringGrid1: TStringGrid;
   procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
     Rect: TRect; State: TGridDrawState);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var         e,i:integer; t:trect;
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
if acol=0 then begin
 StringGrid1.Canvas.Brush.Color :=rgb(0,0,StringGrid1.Tag*arow);
 StringGrid1.Canvas.FillRect(rect);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Tag:=255 div StringGrid1.RowCount;
end;

end.


 
ASoft   (2006-11-16 12:07) [8]

>Elen ©
в первом примере, переменную i в StringGrid1DrawCell, все же заменить на локальную


 
Anatoly Podgoretsky ©   (2006-11-16 12:08) [9]

> неумейка  (16.11.2006 11:06:00)  [0]

Красота неописуемая.


 
Elen ©   (2006-11-16 12:12) [10]


> ASoft

Соглашаюсь. А второй симпатичнее смотрится.

> Красота неописуемая.

Верно. Чесно говоря на практике это будет выглядеть погано - не всем пользункам понравится расцветка градиентом - читать будет не удобно


 
ASoft   (2006-11-16 12:16) [11]

Elen ©   (16.11.06 12:12) [10] тов.
Anatoly Podgoretsky ©   (16.11.06 12:08) [9] это сказал для
> неумейка  (16.11.2006 11:06:00)  [0], вроде...
где он там красоту углядел? :-)


 
Anatoly Podgoretsky ©   (2006-11-16 12:19) [12]

> ASoft  (16.11.2006 12:16:11)  [11]

Откуда мне знать где, спроси у автора, уж очень чешется.


 
неумейка   (2006-11-16 12:44) [13]

>Elen
Спасибо большое! ))) Все оказалось не так уж и сложно)

Я Слегка изменил Ваш код, и никак почему то не могу разобраться как сделать так чтобы цвет начинался с голубого :\ Подскажите пожалуйста)


For i := 0 to StringGrid2.ColCount-1 do
begin
StringGrid2.Canvas.Brush.Color :=rgb(15, 200, (i*ACol)+55);
StringGrid2.Canvas.FillRect(rect);
end;


 >Elen
>Верно. Чесно говоря на практике это будет выглядеть погано - не всем >пользункам понравится расцветка градиентом - читать будет не удобно
 >Anatoly Podgoretsky
>Откуда мне знать где, спроси у автора, уж очень чешется.

Дело в том, что я просто хочу научиться - вот и все) Я не далю программу для кого то, я просто учусь)


 
неумейка   (2006-11-16 12:53) [14]

А, все, я сам разобрался))
Большое спасибо всем кто помог, в особенности Elen


 
Elen ©   (2006-11-16 12:54) [15]


> так чтобы цвет начинался с голубого

Всем рулит rgb(Красный оттенок, Зеленый оттенок,Синий оттенок)


 
Percent   (2006-11-16 12:59) [16]

Красный оттенок, Зеленый оттенок,Синий оттенок

Давайте использовать общепринятые термины. :-)
Не "оттенок", а "составляющая".


 
clickmaker ©   (2006-11-16 13:10) [17]

MSDN, GradientFill()
OC: >=98 или 2000



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

Текущий архив: 2006.12.03;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.059 c
15-1163540555
PHPDeveloper
2006-11-15 00:42
2006.12.03
TV тюнер


2-1163673385
iamdanil
2006-11-16 13:36
2006.12.03
Сделать папку общей


2-1163438646
_Ruslan_
2006-11-13 20:24
2006.12.03
Вызов нескольких копий формы из DLL и передача информации из DLL


2-1163628539
framez
2006-11-16 01:08
2006.12.03
TreeView + БД


15-1163385443
kidm
2006-11-13 05:37
2006.12.03
Нуж помощь при оброшение к файлу