![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фон StringGrig с перетеканием цвета
неумейка © (2006-11-16 11:06:00)Подскажите пожалуйста как сделать цвет поля СтрингГрид плавно изменяющимся от 0-й колонки до последней например с синего до белого цветов.
Очень хочется научиться((( Помогите пожалуйста
clickmaker (2006-11-16 13:10:00) [1]MSDN, GradientFill()
OC: >=98 или 2000
Percent (2006-11-16 12:59:00) [2]Красный оттенок, Зеленый оттенок,Синий оттенок
Давайте использовать общепринятые термины. :-)
Не "оттенок", а "составляющая".
Elen (2006-11-16 12:54:00) [3]
> так чтобы цвет начинался с голубого
Всем рулитrgb(Красный оттенок, Зеленый оттенок,Синий оттенок)
неумейка (2006-11-16 12:53:00) [4]А, все, я сам разобрался))
Большое спасибо всем кто помог, в особенности Elen
неумейка (2006-11-16 12:44:00) [5]>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
>Откуда мне знать где, спроси у автора, уж очень чешется.
Дело в том, что я просто хочу научиться - вот и все) Я не далю программу для кого то, я просто учусь)
Anatoly Podgoretsky (2006-11-16 12:19:00) [6]> ASoft (16.11.2006 12:16:11) [11]
Откуда мне знать где, спроси у автора, уж очень чешется.
ASoft (2006-11-16 12:16:00) [7]Elen © (16.11.06 12:12) [10]тов.
Anatoly Podgoretsky © (16.11.06 12:08) [9]это сказал для
> неумейка (16.11.2006 11:06:00) [0], вроде...
где он там красоту углядел? :-)
Elen (2006-11-16 12:12:00) [8]
> ASoft
Соглашаюсь. А второй симпатичнее смотрится.
> Красота неописуемая.
Верно. Чесно говоря на практике это будет выглядеть погано - не всем пользункам понравится расцветка градиентом - читать будет не удобно
Anatoly Podgoretsky (2006-11-16 12:08:00) [9]> неумейка (16.11.2006 11:06:00) [0]
Красота неописуемая.
ASoft (2006-11-16 12:07:00) [10]>Elen ©
в первом примере, переменную i в StringGrid1DrawCell, все же заменить на локальную
Elen (2006-11-16 11:46:00) [11]Еще примерчик :
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.
Amoeba (2006-11-16 11:45:00) [12]Причем с учетом значения ACol. Также в этом обработчике события после закраски вручную выводить и текст.
ЮЮ (2006-11-16 11:41:00) [13]"туманности стринггрида", наверное
десятком топиков нише показано, как закрасить ячейку красным цветом:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1163602406&n=18
В твоем случае придется вместо простого одноцветного закрашивания прямоугольника TStringGrid(Sender).Canvas.FillRect(Rect); рисовать на канвасе линии вычисляя градиентный цвет
Elen (2006-11-16 11:31:00) [14]
> неумейка
Попробуй ка так :
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)
ASoft (2006-11-16 11:22:00) [15]> А в книжке написано настолько туманно...
что за книжка, интересно...
неумейка (2006-11-16 11:19:00) [16]>KilkennyCat
(( Дело в том что я никак не заливаю одним цветом - я не умею( А в книжке написано настолько туманно что я не могу разобраться(
Я "заливаю" только как :StringGrid1.Color :=Больше никак не умею(
Поэтому и спрашиваю помоши - чтобы на наглядном примере научиться...
извините...(
KilkennyCat (2006-11-16 11:10:00) [17]градиент
покажите, как Вы заливаете одним цветом, я подскажу, как двумя.