Главная страница
    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
14-3166
Вячеслав
2003-05-15 11:32
2003.06.02
Гидравлика теплотехника


8-3020
handra
2003-02-17 13:45
2003.06.02
DSPack


1-3007
Dead
2003-05-20 23:04
2003.06.02
SynEdit и иже с ним


14-3145
Hermit
2003-05-14 21:58
2003.06.02
Нужны идеи


1-2976
zeppelin
2003-05-21 14:02
2003.06.02
Подсчет русских символов в тексте





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский