Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2011, 15:18   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
Вопрос Вызов процедуры отрисовки по нажатию на кнопку

Добрый вечер! Нужна помощь знатоков. На RxDBGrid-e выполняется отрисовка в событии
Код:
procedure TForm1.RxDBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
.
Как вызвать этот код по нажатию на кнопку? Я пробовал конечно писать так:
Код:
procedure TForm1.sSpeedButton45Click(Sender: TObject);
var
  fuckyour: Integer;
  Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState;
begin
 try
  RxDBGrid1.canvas.brush.color := clWhite;
  RxDBGrid1.canvas.fillRect(rect);
  if gdSelected in state then
  begin
    RxDBGrid1.canvas.brush.color := clHighlight;
    if fsBold in RxDBGrid1.canvas.font.style then
    begin
      RxDBGrid1.canvas.font.color := clHighlightText;
      RxDBGrid1.canvas.font.style := [fsBold];
    end
    else
      RxDBGrid1.canvas.font.color := clHighlightText;
  end
  else if gdFocused in state then
  begin
    RxDBGrid1.canvas.brush.color := clBtnFace;
    if fsBold in RxDBGrid1.canvas.font.style then
    begin
      RxDBGrid1.canvas.font.color := clWindowText;
      RxDBGrid1.canvas.font.style := [fsBold];
    end
    else
      RxDBGrid1.canvas.font.color := clWindowText;
  end
  else if gdFixed in state then
  begin
    RxDBGrid1.canvas.brush.color := clHighlight;
    if fsBold in RxDBGrid1.canvas.font.style then
    begin
      RxDBGrid1.canvas.font.color := clHighlightText;
      RxDBGrid1.canvas.font.style := [fsBold];
    end
    else
      RxDBGrid1.canvas.font.color := clHighlightText;
  end;
  with Form1.qry1 do
  begin
  case Form1.qry1.FieldByName('raion').AsInteger of
       48002, 48003, 48004, 48005, 48006:
       begin
        // ÌÐÏ_1
        RxDBGrid1.Canvas.Font.color := clRed;
        RxDBGrid1.Canvas.font.style := [fsBold];
        RxDBGrid1.canvas.textOut(rect.left + 2, rect.top + 2, column.field.text);
       end;

       48001, 48008, 48010, 48012, 48013, 48015, 48016, 48017, 48019, 48022,
       48024, 48028, 48030, 48033, 48034:
       begin
        // ÌÐÏ_2
        RxDBGrid1.Canvas.Font.color := clGreen;
        RxDBGrid1.Canvas.font.style := [fsBold];
        RxDBGrid1.canvas.textOut(rect.left + 2, rect.top + 2, column.field.text);
       end;

       48007, 48029, 48031:
       begin
        //ÌÐÏ_3
        RxDBGrid1.Canvas.Font.color := clTeal;
        RxDBGrid1.Canvas.font.style := [fsBold];
        RxDBGrid1.canvas.textOut(rect.left + 2, rect.top + 2, column.field.text);
       end;

       48009:
       begin
        //ÌÐÏ_4
        RxDBGrid1.Canvas.Font.color := clSilver;
        RxDBGrid1.Canvas.font.style := [fsBold];
        RxDBGrid1.canvas.textOut(rect.left + 2, rect.top + 2, column.field.text);
       end;

       48021:
       begin
        //ÌÐÏ_5
        RxDBGrid1.Canvas.Font.color := clPurple;
        RxDBGrid1.Canvas.font.style := [fsBold];
        RxDBGrid1.canvas.textOut(rect.left + 2, rect.top + 2, column.field.text);
       end;

       48020, 48025, 48032:
       begin
        //ÌÐÏ_6
        RxDBGrid1.Canvas.Font.color := clMaroon;
        RxDBGrid1.Canvas.font.style := [fsBold];
        RxDBGrid1.canvas.textOut(rect.left + 2, rect.top + 2, column.field.text);
       end;

       48014, 48018,48026:
       begin
        //ÌÐÏ_7
        RxDBGrid1.Canvas.Font.color := clOlive;
        RxDBGrid1.Canvas.font.style := [fsBold];
        RxDBGrid1.canvas.textOut(rect.left + 2, rect.top + 2, column.field.text);
       end;

       48027:
       begin
        //ÌÐÏ_8
        RxDBGrid1.Canvas.Font.color := clFuchsia;
        RxDBGrid1.Canvas.font.style := [fsBold];
        RxDBGrid1.canvas.textOut(rect.left + 2, rect.top + 2, column.field.text);
       end;

       48101, 48102, 48103, 48104, 48105, 48106:
       begin
       //ÌÐÏ_9
        RxDBGrid1.Canvas.Font.color := clBlue;
        RxDBGrid1.Canvas.font.style := [fsBold];
        RxDBGrid1.canvas.textOut(rect.left + 2, rect.top + 2, column.field.text);
       end;

   end;
  end;
  Form1.RxDBGrid1.Refresh;
  Form1.RxDBGrid1.Repaint;
 except on EAccessViolation do
 begin
   fuckyour:=1;
 end;
 end;
end;
Но ничего не меняется в гриде....
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 18.03.2011, 15:21   #2
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Вам нужно событие OnPaint Вашего ДБГрида. И буленовый флаг, который инвертируется по нажатию кнопки, и по которому проверяется, нужно ли использовать Вашу кастомную отрисовку ДБГрида, или использовать стандартную. А ещё по нажатию кнопки Вызывать Invalidate; ДБГрида.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 18.03.2011, 17:13   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,210
По умолчанию

А можешь помочь примером кода?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отнимать значение по нажатию на кнопку artemavd Общие вопросы Delphi 14 26.11.2010 09:27
Сдвинуть прямоугольник по нажатию на кнопку artemavd Общие вопросы Delphi 3 21.09.2010 07:27
Вызов процедуры по нажатию клавиши CraftR14 Общие вопросы Delphi 13 12.05.2010 16:50
Показать ADOConnection1.Connectionstring по нажатию на кнопку hitch1 БД в Delphi 9 07.12.2009 17:44
Как закрыть MDIChild форму по нажатию на кнопку AndreyF Общие вопросы Delphi 4 11.07.2009 16:26