Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

StringGrid событие DrawCell [D2005, XP]


Страницы:   1 2 3 4 5 6 7 8

alex810 ©   (2006-11-17 09:10:00) 

Помогите пожалуйста как мне можно вызвать процедуру DrawCell щелчком по кнопке. Я думаю так но не знаю что такое Rect: TRect

procedure TForm1.Button1Click(Sender: TObject);
begin
TForm3.StringGrid2DrawCell(StringGrid2, X, Y, ?????, gdFixed);
end
;


ЮЮ   (2006-11-17 11:27:00) [61]

Обраьотчик OnDrawCell вызывается <количкство видимых строк> * <количкство видимых столбцов раз> и SelectedColor при этих вызовах один и тот же


Elen   (2006-11-17 11:27:00) [62]


> Помогите пожалуйста как мне можно вызвать процедуру DrawCell
> щелчком по кнопке. Я думаю так но не знаю что такое Rect:
>  TRect
>
> procedure TForm1.Button1Click(Sender: TObject);
> begin
> TForm3.StringGrid2DrawCell(StringGrid2, X, Y, ?????, gdFixed);
>
> end;


> alex810

Этот код сработает только для одной ячейки (если вообще сработает). Тебе нужен цикл (Хотя уверенности в этом совете у меня нет)


alex810   (2006-11-17 11:27:00) [63]


> Отвечу еще раз. Этот метод не вызываю в рукописном коде.
>  Это - самый настоящий обработчик события. Всякий раз, когда
> грид должен нарисовать ячейку он вызывает этот метод. И
> именно в этом методе ты и должен разукрасить эту ячейку
> так как надо.
> StringGrid.Inavalidate - перерисуются все видимые ячкйки
> грида

Так что то есть. Но как мне задать какие ячейки надо пересивать.


alex810   (2006-11-17 11:25:00) [64]


> Я тебе по секрету скажу. Можешь поставить что угодно, хоть
> свои паспортные данные, результат от этого не изменится.
>

Спосибо за дельный совет я ставил

StringGrid2DrawCell( StringGrid2, X, Y, (тут я не знаю что ставить),  gdFixed);


ЮЮ   (2006-11-17 11:23:00) [65]


> Задам вопрос еще раз. Что мне ставить после скобок при вызове
> процедуры


Отвечу еще раз. Этот метод не вызываю в рукописном коде. Это - самый настоящий обработчик события. Всякий раз, когда грид должен нарисовать ячейку он вызывает этот метод. И именно в этом методе ты и должен разукрасить эту ячейку так как надо.
StringGrid.Inavalidate - перерисуются все видимые ячкйки грида


alex810   (2006-11-17 11:22:00) [66]


> Ну и где здесь разноцветный грид, если используется только
> один цвет SelectedColor?


SelectedColor - перемення которая берет цвет с массива Colors[Tag]       [Tag] - идентификатор цвета который берется с Edit.Tag

procedure TForm3.Edit1Click(Sender: TObject);
begin
with TEdit(Sender) do
begin
SelectedColor:=Colors[Tag];
end;
end;


ASoft   (2006-11-17 11:22:00) [67]


> alex810 ©   (17.11.06 11:19) [87]
>
> Задам вопрос еще раз. Что мне ставить после скобок при вызове
> процедуры

а такой вопрос был что ли?.. просмотрел я однако...


Плохиш   (2006-11-17 11:21:00) [68]


> alex810 ©   (17.11.06 11:19) [87]
> Задам вопрос еще раз. Что мне ставить после скобок при вызове
> процедуры
>
> StringGrid2DrawCell(????????????????)

Я тебе по секрету скажу. Можешь поставить что угодно, хоть свои паспортные данные, результат от этого не изменится.


Elen   (2006-11-17 11:20:00) [69]


> alex810

ИМХО тут проблема не в реализации а в постановке задачи и способе решения. Продумай, Автор, еще раз что и как хочеш получить в мелочах.


ЮЮ   (2006-11-17 11:19:00) [70]


> alex810 ©   (17.11.06 11:17) [83]


Ну и где здесь разноцветный грид, если используется только один цвет SelectedColor?


alex810   (2006-11-17 11:19:00) [71]

Задам вопрос еще раз. Что мне ставить после скобок при вызове процедуры

StringGrid2DrawCell(????????????????)

StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);


ASoft   (2006-11-17 11:19:00) [72]

о, присутствует... ну что ж за связь такая :(


Elen   (2006-11-17 11:18:00) [73]


> а как хорошо начиналось

Главное хорошо кончить (т.е. закончить)... ХМ прикольная ветка - не дает мне в преферанс доиграть


ASoft   (2006-11-17 11:18:00) [74]

>alex810
...хоть кусочек кода, где у тебя красится все или не красится.
кстати, а OnDrawCell у тебя присутствует в Гридах? Так... риторически спрашиваю


Elen   (2006-11-17 11:17:00) [75]


> Я так и сделал

Ну так сопоставляеш индент в таге с цветом папочки и получаеш нужную связку


alex810   (2006-11-17 11:17:00) [76]


> Ты хоть раз приведёшь код этого злосчастного OnDrawCell,
>  который до закрытия программы все красит как надо, а после,
>  изверг, никак не хочет?


procedure TForm3.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (state = [gdSelected]) then
  with TStringGrid(Sender), Canvas do
  begin
    Brush.Color := SelectedColor;
    TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);
    FillRect(Rect);
end;
end;


Elen   (2006-11-17 11:15:00) [77]


> ЛЮДИ Давайте я скину кому нибудь на мыло скриншот с объяснение
> что мне нужно. Может он более понятней сформирует вопрос
> чем я.

Только не мне!!! Я точно не пойму скрин - я уже ничего не понимаю... Привет Кондратик!


Плохиш   (2006-11-17 11:15:00) [78]


> Elen ©   (17.11.06 11:13) [77]
>
> > Плохиш
>
> Описка !!!

Ну вот :-( а как хорошо начиналось ;-)


Плохиш   (2006-11-17 11:14:00) [79]


> Может он более понятней сформирует вопрос чем я.

100 Euro по предоплате за правильно сформулированный вопрос :-)


alex810   (2006-11-17 11:14:00) [80]


> В Эдитах есть свойство tag. Туда и можно заложить твой иденты.

[73]
Я так и сделал


Страницы:   1 2 3 4 5 6 7 8

Наверх

Титульная страница Поиск, карта сайта Написать письмо