Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.02;
Скачать: [xml.tar.bz2];

Вниз

Как вызвать процедуру 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
1-2841
BillyJeans
2003-05-20 15:42
2003.06.02
QReport без DataSet?


1-2974
ArtemB
2003-05-21 13:15
2003.06.02
OnMouseMove


3-2794
moore
2003-05-14 15:17
2003.06.02
пример БД


14-3123
FFF
2003-05-14 17:09
2003.06.02
Привет всем!, народ не подскжете где найти подробную инфу


14-3067
Laxer
2003-05-16 11:08
2003.06.02
Сумма столбца DBGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский