Текущий архив: 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.48 MB
Время: 0.04 c