Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
15-1196325054
de.
2007-11-29 11:30
2007.12.30
Нужны иконки


1-1191843583
REA
2007-10-08 15:39
2007.12.30
ImageList - ImageIndex design time


2-1196860535
Res
2007-12-05 16:15
2007.12.30
Потоки


15-1196316970
DaniilG
2007-11-29 09:16
2007.12.30
Turbo Delphi +Event Log


2-1196547940
VadimSpb
2007-12-02 01:25
2007.12.30
Получение даты с MS SQL 2005





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