Главная страница
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.02 c
14-3131
RIMMER
2003-05-14 23:40
2003.06.02
Следим за Winamp


3-2779
Ann
2003-05-13 10:31
2003.06.02
ComboBox


14-3135
circul
2003-05-13 16:39
2003.06.02
Бывает же такая погода...


3-2781
Vovik
2003-05-13 14:41
2003.06.02
Подсветка SQL-синтаксиса


1-2907
Tornado
2003-05-20 13:59
2003.06.02
дата создания файла