Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Вниз

Фон 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.06 c
5-1144509756
SaFy
2006-04-08 19:22
2006.12.03
Прозрачный Edit


2-1163370410
c0rben
2006-11-13 01:26
2006.12.03
Сортировка по алфавиту


15-1163079164
Access
2006-11-09 16:32
2006.12.03
Восстановить "опции" explore.exe в реестре


2-1163616691
Zancik
2006-11-15 21:51
2006.12.03
Трей


2-1163087508
любитель
2006-11-09 18:51
2006.12.03
Удалении директории при удалении записи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский