Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.30;
Скачать: CL | DM;

Вниз

Коллеги , когда при работе с 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.013 c
15-1196160683
All More system
2007-11-27 13:51
2007.12.30
Логика работы проверок подлинности Windows


15-1195841882
tesseract
2007-11-23 21:18
2007.12.30
ДР Керка


15-1196153253
Evanescence
2007-11-27 11:47
2007.12.30
Сколько стоит лицензионная Windows 2003 Server?


15-1196235035
студент
2007-11-28 10:30
2007.12.30
степени двоек


15-1196419617
zlodiy
2007-11-30 13:46
2007.12.30
Восстановление данных