![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
StringGrid событие DrawCell [D2005, XP]
alex810 © (2006-11-17 09:10:00)Помогите пожалуйста как мне можно вызвать процедуру DrawCell щелчком по кнопке. Я думаю так но не знаю что такое Rect: TRect
procedure TForm1.Button1Click(Sender: TObject);;
begin
TForm3.StringGrid2DrawCell(StringGrid2, X, Y, ?????, gdFixed);
end
Сергей М. (2006-11-17 13:41:00) [1]
> Elen © (17.11.06 13:27) [156]
> А що? Може комусь i треба
Да вот и прелюбопытно мне - таки кому?
Преподу оно, как выясняется, даром не надо.. Реальных юзеров сего "шедевра" тоже вроде бы не предвидится ..
Elen (2006-11-17 13:27:00) [2]
> Просто "щоб було"
Таки ДА. А що? Може комусь i треба.
P.S. Тупиц тут нет - есть шутники
Сергей М. (2006-11-17 13:23:00) [3]
> Автор писал
Все это расчудесно)
Но, повторюсь, тупица я эдакий, мне не понятно, для чеготот кто по идее должен лупиться на экран, изображающий эту программу, обязан лупиться на эти идентификаторы)
Их, эти идентификаторы, с чем употреблять-то ? Нахрена они показанытому самому "кому-то" ?) Просто "щоб було" ?)
> Жалко тут Кетмар не появился.
"Да ...уж .." (с) Киса В.
Elen (2006-11-17 13:17:00) [4]
> афига автору "первый StringGrid",
Автор писал :
У меня есть два StringGrid в одной из который хранится идентификатор цвета который берется из файла. В другом StringGrid необходимо по этому идентификатору разрисовать ячейку в которой находится этот идентификатор в первом StringGrid
> Где там Суслик (С) ?)
Ха Жалко тут Кетмар не появился.
Сергей М. (2006-11-17 13:09:00) [5]Где там Суслик (С) ?)
Намедни он живо интересовался сей патологией ..
Сергей М. (2006-11-17 13:06:00) [6]А я, братцы-кролики, так и не въехал, нафига автору "первый StringGrid", показывающий пользователю какие-то там "идентификаторы" ...
Мне теперь что, на свалку истории ?)
Anatoly Podgoretsky (2006-11-17 12:56:00) [7]> alex810 (17.11.2006 12:26:27) [147]
> они все равно прогу не смотрят
Наивный, смотрят, просто могут ничего не сказать, если они уже на тебя плюнули.
Anatoly Podgoretsky (2006-11-17 12:55:00) [8]> Плохиш (17.11.2006 12:11:18) [138]
Да брось, откуда
Какое же это форматирование
begin
end
else
и ниже
begin
end
end;
Похоже отступы делались методом случайных чисел
Elen (2006-11-17 12:37:00) [9]
> А втолковывать ничего не надо они все равно прогу не смотрят
Так нафик тебе эта лабуда на 140 постов. Нарисовал бы в Кореле форму и вставил в отчет.... Лады, надеюс на бущее понял как это делать.
> "А поршень у двигателя ваще сделан из дерева, патамуша диплом
> все равно никто не читает"
К сожелению в моем институте такая же каша.
Сергей М. (2006-11-17 12:28:00) [10]
> втолковывать ничего не надо они все равно прогу не смотрят
Вот откуда начинается "разврат" будущих инженеров)
"А поршень у двигателя ваще сделан из дерева, патамуша диплом все равно никто не читает" (с) студенческо-дипломное
alex810 (2006-11-17 12:26:00) [11]
> Вооо. Теперь самое трудное - втолковать сие твоему преподу.
> Держись студент... ;)
А втолковывать ничего не надо они все равно прогу не смотрят
Elen (2006-11-17 12:24:00) [12]
> alex810
Вооо. Теперь самое трудное - втолковать сие твоему преподу. Держись студент... ;)
alex810 (2006-11-17 12:22:00) [13]Удалено модератором
ЮЮ (2006-11-17 12:20:00) [14]Удалено модератором
alex810 (2006-11-17 12:19:00) [15]УРА!!!!!!!!!!!! Получилось всем огромное спасибо. Особенно тебе Elen ты была со мной самая терпеливая.
ЮЮ (2006-11-17 12:16:00) [16]может код поймет лучше слов?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
FDefaulGridColors: array of array of TColor;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
i, j: integer;
begin
SetLength(FDefaulGridColors, StringGrid1.RowCount, StringGrid1.ColCount);
for i := 0 to StringGrid1.RowCount - 1 do
for j := 0 to StringGrid1.ColCount - 1 do begin
FDefaulGridColors[i, j] := RGB(
Round(i / (StringGrid1.RowCount - 1) * 255),
Round(j / (StringGrid1.ColCount - 1) * 255),
0
);
StringGrid1.Cells[j, i] := IntToStr((i + 1));
end;
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
StringGrid1.Canvas.Brush.Color := FDefaulGridColors[ARow, ACol];
StringGrid1.Canvas.FillRect(Rect);
StringGrid1.Canvas.Font.Color := StringGrid1.Font.Color;
StringGrid1.Canvas.TextRect(
Rect, Rect.Left + 2, Rect.Top + 2, StringGrid1.Cells[aCol, aRow]
);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// перекрасим текущую ячейку в белый
FDefaulGridColors[StringGrid1.Row, StringGrid1.Col] := clWhite;
StringGrid1.Invalidate;
end;
end.
ASoft (2006-11-17 12:13:00) [17]
> Плохиш © (17.11.06 12:09) [137]
это у него от отчаянья
> Плохиш © (17.11.06 12:11) [138]
копипаст, однако
Elen (2006-11-17 12:13:00) [18]
> ДАаааааа
Воооо. Нука запусти это :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
StringGrid2: TStringGrid;
procedure FormCreate(Sender: TObject);
procedure StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
private
{ Private declarations }
public
{ Public declarations }
end;
const colors : array[0..23] of TColor =
(clWhite,clBlack,clMaroon,clGreen,clOlive,clNavy,clPurple,clTeal
,clGray,clSilver,clRed,clLime,clYellow,clBlue,clFuchsia,clAqua,clMoneyGreen
,clSkyBlue,clCream,clMedGray,clActiveBorder,clActiveCaption,0,0);
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var i:dword;
begin
//********* FOR ******************
Randomize;
for i :=0 to StringGrid1.RowCount-1 do
begin
StringGrid1.Cells[0,i]:=inttostr(random(23));
end;
//******* END FOR ****************
end;
procedure TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var r:Tcolor;
begin
//*******IF********//
if (acol=1)and(StringGrid1.Cells[0,arow]<>'') then begin
r:=integer(colors[strtoint(StringGrid1.Cells[0,arow])]);
StringGrid2.Canvas.Brush.Color:=r;
//StringGrid2.Canvas.Pen.Color:=r;
StringGrid2.Canvas.FillRect(rect);
end;
//*****End If*****//
end;
end.
Мысли появляются?
alex810 (2006-11-17 12:12:00) [19]
> Так. Давай спочатку - тебе нужно проверить цифру в ячейке,
> найти соответствующий ей цвет и отрисовать в такой же ячейке
> по позиции в другом гриде. Так?
ДАаааааа
Плохиш (2006-11-17 12:11:00) [20]
> Плохиш © (17.11.06 12:07) [135]
Хотя, умеют же чукчи код форматировать :-)