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:44:00) [41]

Когда ты выделяешь мышью грид рисует только ячейку с которой ты ушел и в которую ты пришел. Проведи над гридом после этого другой формой и удивись тому, как у тебя всё запущено. :)


alex810   (2006-11-17 11:44:00) [42]


> То что ты пропишеш в OnDrawCell.
> Автор не обижайся - просто ты и сам не знаеш чего хочеш.
>  Легкие пути далеко не всегда правильны. А TForm3.StringGrid2DrawCell(StringGrid2,
>  X, Y, ?????, gdFixed); не даст тебе прорисовку, по крайней
> мере придется цикл делать.

Та я понимаю что прийдется делать цикл он у меня уже есть

for X := 1 to stringgrid1.colcount do
  for y := 1 to stringgrid1.rowcount do
   begin
     if Stringgrid1.Cells[x,y] = '1' then
     begin
Сюда что надо написать


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


>  когда создается форма.

При Креате прорисавка не выполняется.


alex810   (2006-11-17 11:41:00) [44]


> Ты читать научишься? Или писать только умеешь?

У меня этот обработчик уже есть. Он рисует когда я выделяю мышью. А мне надо чтобы он рисовал еще и тогда когда создается форма.


ЮЮ   (2006-11-17 11:41:00) [45]

    Brush.Color := ЦВЕТА_ЯЧЕЕК[ARow, ACol];
    FillRect(Rect);
   TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);

Естественно, сначала стереть с доски, а потом на ней написать :)


Elen   (2006-11-17 11:41:00) [46]


> А что он нарисует???????

То что ты пропишеш в OnDrawCell.
Автор не обижайся - просто ты и сам не знаеш чего хочеш. Легкие пути далеко не всегда правильны. А TForm3.StringGrid2DrawCell(StringGrid2, X, Y, ?????, gdFixed); не даст тебе прорисовку, по крайней мере придется цикл делать.


Сергей М.   (2006-11-17 11:40:00) [47]


> alex810 ©   (17.11.06 11:36) [104]
> А если у меня уже есть один обработчик?


Обработчик чего?


ЮЮ   (2006-11-17 11:39:00) [48]


> Но мне надо перерисовать определенные ячейки с определенным
> цветом


Ты читать научишься? Или писать только умеешь?

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 := ЦВЕТА_ЯЧЕЕК[ARow, ACol];
    TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[aCol, aRow]);
    FillRect(Rect);
end;
end;


Elen   (2006-11-17 11:39:00) [49]


> что мне вместо вопросов поставить???

Габариты нужной ячейки.


alex810   (2006-11-17 11:38:00) [50]


> ПУСТЬ ПЕРЕРИСОВЫВАЕТ ВСЕ!!! Чем плохо?

А что он нарисует???????


alex810   (2006-11-17 11:37:00) [51]


TForm3.StringGrid2DrawCell(StringGrid2, X, Y, ?????, gdFixed);

что мне вместо вопросов поставить??? Я уже больше ничего не прошу


Elen   (2006-11-17 11:37:00) [52]


> Но мне надо перерисовать определенные ячейки с определенным
> цветом

Ага. Давайте человек будет дышать правой частью грудной клетки, а левой так помахивать.

ПУСТЬ ПЕРЕРИСОВЫВАЕТ ВСЕ!!! Чем плохо?


ЮЮ   (2006-11-17 11:37:00) [53]

alex810 ©   (17.11.06 11:27) [97] Так что то есть.

ЮЮ ©            (17.11.06 10:19) [35]
Есть это надо было ещё час назад. А теперь уже так пережевали, что и есть противно :)


alex810   (2006-11-17 11:36:00) [54]


> Если уж на то пошло, то массив тут нужен скорее для хранения
> TColor-значений, ассоциированных с каждой ячейкой грида.
>  Перед уничтожением формы пиши массив в файл, а при создании
> считывай файл в массив. В событии OnDrawCell обращайся к
> соотв.элементу массива и бери оттуда готовый цвет. И все
> ! К чему непонятные выкрутасы ?


А если у меня уже есть один обработчик?


alex810   (2006-11-17 11:34:00) [55]


> Пусть перерисовывает все. Тебе же лучше будет

Но мне надо перерисовать определенные ячейки с определенным цветом


ЮЮ   (2006-11-17 11:31:00) [56]

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


если Colors[Tag] ты хочешь назначить выбранной на данный момент ячейке грида, это должна быть не переменная, а массис[кол-во строк, кол-во столбцов],
и надо выбирать значение из этого массива в соответствии с ACol и ARow


Elen   (2006-11-17 11:30:00) [57]


> [96]

Ты сейчас Кетмара накликаеш. Это его заклинание - потом берегисЪЪЪ


alex810   (2006-11-17 11:29:00) [58]

[96] у меня есть цикл. Как можно это реалезовать.


Elen   (2006-11-17 11:29:00) [59]


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

Пусть перерисовывает все. Тебе же лучше будет


Сергей М.   (2006-11-17 11:28:00) [60]


> alex810 ©   (17.11.06 11:10) [68]
> А что при необходимости не проще ли обратится к массиву
> цветов по идентификатору чем проверять какому едиту соответсвует
> этот идентификатор?


При какой такой "необходимости" ?

И зачем нужен еще какой-то лишний ц/ч идентификатор, если тип TColor сам по себе идентифицирует цвет ?

Если уж на то пошло, то массив тут нужен скорее для хранения TColor-значений, ассоциированных с каждой ячейкой грида. Перед уничтожением формы пиши массив в файл, а при создании считывай файл в массив. В событии OnDrawCell обращайся к соотв.элементу массива и бери оттуда готовый цвет. И все ! К чему непонятные выкрутасы ?


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

Наверх

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