Главная страница
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.022 c
6-3023
Джек
2003-03-20 13:38
2003.06.02
Конец загрузки нужного фрейма в WebBrowser?


3-2754
Otchet
2003-05-13 14:54
2003.06.02
Stack OverFlow


6-3027
Levova
2003-04-02 15:00
2003.06.02
TIdSMTP и TIdMessage...


1-2854
Pavor
2003-05-21 07:42
2003.06.02
Странности Application.Terminate (или может мои? :)


1-2994
Пубертанец
2003-05-21 16:28
2003.06.02
Как в OnShow формы уничтожать ее при определенных условиях?