Форум: "Начинающим";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];
ВнизКоллеги , когда при работе с StringGrid Найти похожие ветки
← →
smartleds (2007-12-06 22:30) [0]возникает событие OnDrawCell? которое прорисовывает ячейки.
← →
smartleds (2007-12-06 22:44) [1]Или как мне самому вызвать процедуру TForm1.StringGrid1DrawCell?
← →
boa_kaa © (2007-12-06 23:21) [2]
> когда при работе с StringGrid возникает событие OnDrawCell?
При перерерисовке ячейки, когда же еще?
← →
{RASkov} © (2007-12-06 23:55) [3]> [0] smartleds (06.12.07 22:30)
> когда при работе с StringGrid возникает событие OnDrawCell?
Когда ячейка становится Invalid для этой ячейки автоматом вызывается OnDrawCell,
например - "над гридом пронесли окно")
> [1] smartleds (06.12.07 22:44)
> Или как мне самому вызвать процедуру TForm1.StringGrid1DrawCell?
Нет надобности, т.е. не к чему это...
А вообще методы вызываются точно так же как и обычные процедуры <Имя(Параметры)>
← →
Германн © (2007-12-07 00:17) [4]
> smartleds (06.12.07 22:44) [1]
>
> Или как мне самому вызвать процедуру TForm1.StringGrid1DrawCell?
>
>
Ну если уж приспичит перерисоваться самому (а такое иногда бывает), то для этого есть метод Invalidate.
← →
smartleds (2007-12-07 00:25) [5]Я почему спрашиваю. Вот я сделал таблицу , раскрасил красным цветом одну ячейку. Как только я кликаю мышкой на любое место этой таблицы у меня раскрашенная ячейка становится как все белой не раскрашеной.
Вот я и думаю чтобы ее опять раскрасить я в событии StringGrid1Click , буду вызывать события прорисовки таблицы OnDrawCell.
← →
{RASkov} © (2007-12-07 00:30) [6]> [4] Германн © (07.12.07 00:17)
Что-то мне подсказывает, что этот Инвалидэйт найдет место в ОнДравКел в коде автора...
или на ОнКлик....
:о)
> smartleds
Лучше вместо вопросов [0,1], расскажи о своем желании.... т.е. твоей проблеме, только подробно но коротко, и главное понятно.... во как)
Подозреваю, что эта ветка - продолжение этой:
http://delphimaster.net/view/2-1196940482/
тогда прочитай там пост №5 и внимательно посмотри хелп по "этому делу" или хотя бы примеры, коих по этому вопросу в инете навалом....
← →
{RASkov} © (2007-12-07 00:32) [7]Во блин пока "нажимал ответ"....
> [5] smartleds (07.12.07 00:25)
>Зафиксировать никак. Но в OnDrawCell передается параметр State: TGridDrawState. Его можно и нужно учитывать при перерисовке.
← →
{RASkov} © (2007-12-07 00:34) [8]> [5] smartleds (07.12.07 00:25)
А лучше покажи как ты расскрасил одну ячейку, и в каком методе....
Вообщем давай подробнее.... а то что-то я боюсь, что мы о "разных вещах" говорим все тут....
← →
Германн © (2007-12-07 00:39) [9]
> smartleds (07.12.07 00:25) [5]
>
> Я почему спрашиваю. Вот я сделал таблицу , раскрасил красным
> цветом одну ячейку. Как только я кликаю мышкой на любое
> место этой таблицы у меня раскрашенная ячейка становится
> как все белой не раскрашеной.
> Вот я и думаю чтобы ее опять раскрасить я в событии StringGrid1Click
> , буду вызывать события прорисовки таблицы OnDrawCell.
>
Блин! Так ты статью прочитал? Или только сделал вид?
Всю прорисовку нужно реализовать в обработчике события OnDrawCell. Для этого сей обработчик и предназначен.
← →
smartleds (2007-12-07 00:39) [10]А как этот параметр учитывать? При помощи этого параметра я только могу узнать , что ячейка находится в выбранном диапазоне dgSelected, ячейка имеет фокус ввода dgFocused, ячейка находится в фиксированном диапазоне
IF gdSelected IN State
Then Begin
.................................
End;
Зачем мне это нужно знать при перерисовке?
← →
{RASkov} © (2007-12-07 00:41) [11]> [10] smartleds (07.12.07 00:39)
Покажи как и где красишь...
← →
smartleds (2007-12-07 00:49) [12]Большое спасибо вроде побарол.
Сейчас краска не пропадает, крашу вот так:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var i:integer;
begin
if (Acol=1) and (Arow=1) then begin
with StringGrid1.Canvas do
begin
Brush.Color:=clRed;
Font.Color:=clWhite;
FillRect(Rect);
TextOut(Rect.Left+2,Rect.Top+2,StringGrid1.Cells[Acol,Arow]);
end;
end;
end; // end proc
Текстом ячейки заполнил при создании формы.
← →
Германн © (2007-12-07 01:01) [13]
> smartleds (07.12.07 00:49) [12]
>
> Большое спасибо вроде побарол.
> Сейчас краска не пропадает
Ну и слава (сам не знаю кому :)
А статьи, которые тут советуют прочитать, надо таки читать. Чтобы потом не было стыдно за бесцельно...
← →
{RASkov} © (2007-12-07 01:03) [14]> [12] smartleds (07.12.07 00:49)
Здесь верно, но мне интересен был код, где у тебя не получалось :), теперь уже не важно)
ЗЫ Я бы в данном случае вместо TextOut использовал бы TextRect. Большой разницы не увидешь, но....(если знаешь чем они отличаются, то поймешь)
или DrawText(вообще-бы замечательно)...)
> [13] Германн © (07.12.07 01:01)
> (сам не знаю кому :)
:)
Как кому....
...гриду крашенному)
← →
Германн © (2007-12-07 01:07) [15]
> {RASkov} © (07.12.07 01:03) [14]
>
...
> Как кому....
> ...гриду крашенному)
>
Ну тогда Елене Филипповой. Чтобы мы без неё делали? :)
← →
smartleds (2007-12-07 15:09) [16]Коллеги еще вопрос, правильно ли я понял, процедура TForm1.StringGrid1DrawCell при прорисовке StringGrid, вызывается такое количество раз сколько ячеек в таблице? И вызывается каждый раз с новым Arow и Acol
← →
Anatoly Podgoretsky © (2007-12-07 15:11) [17]> smartleds (07.12.2007 15:09:16) [16]
Неправильно понял
← →
smartleds (2007-12-07 15:14) [18]А как она работает?
← →
Anatoly Podgoretsky © (2007-12-07 15:17) [19]Перерисовывается только недействительный регион. Никто не пытается перерисовывать миллионы ячеек, максимум только видимые, минимум одна ячейка.
← →
smartleds (2007-12-07 15:19) [20]Спасибо, поставил внутрь TForm1.StringGrid1DrawCell печать и стало понятно
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.30;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.008 c