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

Вниз

Как вызвать процедуру OnDrawCell объекта ТStringGrid   Найти похожие ветки 

 
Nikos   (2003-05-22 17:55) [0]

Программа должна вывести определенную информацию в таблицу StringGrid. При выводе информации нужно вызвать процедуру OnDrawCell. Как ее вызвать? пробовал писать StringGrid1DrawCell, но компилятор выдает ошибку: Not enough actual parameters. Чего нехватает для вызова этой процедуры?


 
Юрий Зотов ©   (2003-05-22 18:01) [1]

Того, о чем пишет компилятор - параметров (см. объявление метода). Если известна ячейка, которую нало обновить, то проблем нет - передаете нужные параметры, и все. А если она неизвестна, то придется обновлять весь грид:
StringGrid1.Invalidate (или Refresh)


 
Hint ©   (2003-05-22 18:03) [2]

Вот этих самих параметров процедуры TStringGrid.OnDrawCell и не хватает...


 
MBo ©   (2003-05-22 18:04) [3]

OnDrawCell вызывается автоматически при перерисовке грида или изменении строки в ячейке.

можно, конечно, вызывать и самому (а надо ли???), параметры есть в справке, да и при создании обработчика OnDrawCell среда правильно все параметры сделает.


 
Nikos   (2003-05-22 20:16) [4]

А если мне надо перерисовать определенную ячейку, например, Col=3 Row=5. При выводе текста в таблицу, оказывается, что весь текст не умещается в строку и эту ячейку нужно перерисовать. Для этого я обращаюсь к методу OnDrawCell. Мне известно, какую именно ячейку надо перерисовать. StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); Я вызываю так SGridDrawCell(Self, 3, 5,
Rect: TRect; State: TGridDrawState);
А что писать в место Rect и State?


 
rounin   (2003-05-22 20:40) [5]

Просто обнови эту ячейку:

R := StringGrid1.CellRect(3, 5);
InvalidateRect(StringGrid1.Handle, @R, False);

Она сама перерисуется.


 
Тих   (2003-05-22 21:01) [6]

1) CellRect(3, 5)
2) Это уже на вкус -
TGridDrawState = set of (gdSelected, gdFocused, gdFixed);


 
Nikos   (2003-05-22 21:13) [7]

Эти методы не подходят, так как мне необходимо выполнение именно процедуры OnDrawCell. Вот ее код
procedure TFmResult.SGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var Grid : TStringGrid;
begin
Grid:= (Sender as TStringGrid);
Grid.Canvas.FillRect(Rect);
Grid.Canvas.TextOut(Rect.Left, Rect.Top+2,MasSGStr[1]);
Grid.Canvas.TextOut(Rect.Left, Rect.Top-Grid.Canvas.Font.Height+3 ,MasSGStr[2]);
SGrid.DefaultDrawing:= True;
end;

MasSGStr - это строковой массив. Эта процедура прорисовывает в ячейке две строки.
Мне необходимо вызвать эту процедуру из другой.


 
Юрий Зотов ©   (2003-05-22 21:26) [8]

> Nikos (22.05.03 20:16)

Вместо Rect - CellRect(3, 5)
Вместо State - cм. TGridDrawState в справке. Конкретный набор зависит от состояния ячейки.



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

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

Наверх




Память: 0.48 MB
Время: 0.023 c
14-3058
Dim!S
2003-05-15 07:14
2003.06.02
Исходники всегда с собой! :)


14-3178
AlexRush
2003-05-15 19:41
2003.06.02
Если делфисту скажут


8-3019
Suharew
2003-02-16 00:53
2003.06.02
Как быстро выводить рисунок на экран.


14-3147
Dimaz-z
2003-05-14 13:27
2003.06.02
Народ, как вы относитесь к Microsoft? Выскажитесь!


1-2971
andrey_pst
2003-05-21 12:31
2003.06.02
TForm в отдельном потоке и TActionManager