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

Вниз

StringGrid или DrowGrid что пользовать и как?   Найти похожие ветки 

 
Sapient ©   (2002-09-03 16:08) [0]

В общем проблемма такая: Есть
record
MyGrid Value:byte;
Color:Integer;
и есть
Grid: array [1..5,1..5] of MyGrid;

И все это дело нужно как-то отображать на экране в виде клеточек с заливкой цвета Grid[].color и значением Grid[].Value.

StringGrid вроде не подходит, так как там нельзя ячейки красить.
Сответственно нужно пользовать DrowGrid. Вот тут и начинается самое интересное КАК ЭТО СДЕЛАТЬ???


 
MBo ©   (2002-09-03 16:13) [1]

можно использовать и то и другое.
В OnDrawCell закрашиваешь передаваемый Rect и Canvas.TextOut выводишь значение.
StringGrid удобен тем, что не нужно заводить дополнительнй массив для хранения данных- все можно держать в его Cells


 
Sapient re   (2002-09-03 16:42) [2]

Сенкс всем за добрые слова...
но напишите пожалуйста процедурку чтобы она Cell с координатами X,Y в Grid-е (String или Draw) Заполняля в соответствии со значением массива Grid[x,y].Color и Grid[x,y].Value. PLZZZZZ.


 
MBo ©   (2002-09-03 16:48) [3]

StringGrid без фиксированных ячеек

procedure TForm1.FormCreate(Sender: TObject);
var i,j:integer;
begin
Randomize;
with StringGrid1 do begin
for i:=0 to RowCount-1 do
for j:=0 to ColCount-1 do begin
//запись номера ячейки и случайного цвета
Cells[j,i]:=IntToStr(10*i+j)+" "+IntToStr(Random($1000000));
end;
end;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var j,colr:integer;
value,s:string;
begin
with StringGrid1 do begin
s:=Cells[Acol,Arow];
j:=pos(" ",s);
value:=Copy(s,1,j-1);//извлечение первой подстроки (номер)
colr:=StrToIntDef(Copy(s,j+1,Length(s)-j),$FFFFFF);
//извлечение значения цвета
Canvas.brush.color:=colr;
Canvas.FillRect(Rect);
Canvas.TextOut(rect.left+2,rect.top+2,value);
end;
end;


 
MBo ©   (2002-09-03 16:55) [4]

P.S
хотя еще лучше хранить цвет в свойстве Cells.Objects, приводя его при хранении к типу Pointer, а при извлечении к Integer



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

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

Наверх




Память: 0.47 MB
Время: 0.043 c
1-50823
NAU
2002-09-04 05:48
2002.09.16
Как определить кем создан файл?


3-50649
agrig
2002-08-26 16:10
2002.09.16
Как установить LANGDRIVER для драйвера PARADOX программно?


1-50771
Vikuksa
2002-09-06 10:15
2002.09.16
Excel


6-50889
ANM
2002-07-10 22:46
2002.09.16
PHP из Дельфей


1-50817
ErmSergey
2002-08-31 14:24
2002.09.16
Утечка ресурсов