Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

DBGrid с цветными ячейками 3

Delphi , Компоненты и Классы , TDBGrid

DBGrid с цветными ячейками 3

Автор: Neil Rubenking

Hа боpту самолета:
- Здpавствуйте, дамы и господа, - говоpит командиp экипажа. - Мы благодаpим вас за то, что вы выбpали нашу авиакомпанию для пеpвого полета в пеpвый день нового 2000 года. Мы находимся на высоте 3 тыс. футов, наша скоpость... вау!... ох, блин!... вот фак!... Извините за неудобства, котоpые вы испытываете, находясь вниз головой, надеюсь, все были пpистегнуты. Есть ли сpеди пассажиpов на боpту пpогpаммист?

C цветом ячейки DBGrid не так все просто, ведь в Delphi 1.0 разукрасить ячейку можно в обработчике события OnDrawDataCell, тогда как в Delphi 2.0 вам придется прибегнуть к событию OnDrawColumnCell. Для того чтобы создать код, который бы работал в ОБОИХ версих Delphi, вам необходимо прибегнуть к механизму условной компиляции, с помощью которого вы можете СКРЫТЬ обработчик OnDrawColumnCell в Delphi 1.0 и ВКЛЮЧИТЬ его в Delphi 2.0. Вот пример, в котором все ячейки строки рисуются красным, если колонка 'Preferred' содержит 'True':


...
private
{ Private declarations }
{$IFDEF Win32}

procedure DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
{$ENDIF}
  procedure DrawField(const Value: string; const Rect: TRect;
    vCanvas: TCanvas; vFont: TFont; vAlignment: TAlignment);
    ...
      procedure TForm1.DrawField(const Value: string; const Rect: TRect;
      vCanvas: TCanvas; vFont: TFont; vAlignment: TAlignment);
    var
      X: Integer;
    begin
      vCanvas.Font := vFont;
      vCanvas.Font.Color := clRed;
      vCanvas.Font.Style := vCanvas.Font.Style + [fsUnderline];
      case vAlignment of
        taRightJustify:
          begin
            SetTextAlign(vCanvas.Handle, TA_RIGHT);
            X := Rect.Right - 2;
          end;
        taLeftJustify:
          begin
            SetTextAlign(vCanvas.Handle, TA_LEFT);
            X := Rect.Left + 2;
          end;
        taCenter:
          begin
            SetTextAlign(vCanvas.Handle, TA_CENTER);
            X := (Rect.Right + Rect.Left) div 2;
          end;
      end;
      vCanvas.TextRect(Rect, X, Rect.Top + 2, Value);
      SetTextAlign(vCanvas.Handle, TA_LEFT);
    end;

    procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect:
      TRect; Field: TField; State: TGridDrawState);
    begin
      with Sender as TDBGrid, DataSource.DataSet do
      begin
        if FieldByName('Preferred').AsString <> 'True' then
          Exit;
        DrawField(Field.DisplayText, Rect, Canvas, Canvas.Font,
          Field.Alignment);
      end;
    end;

  {$IFDEF Win32}
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumn;
      State: TGridDrawState);
    begin
      with Sender as TDBGrid, DataSource.DataSet do
      begin
        if FieldByName('Preferred').AsString <> 'True' then
          Exit;
        DrawField(Column.Field.DisplayText, Rect, Canvas,
          Column.Font, Column.Alignment);
      end;
    end;
  {$ENDIF}

    procedure TForm1.FormCreate(Sender: TObject);
    begin
  {$IFDEF Win32}
      DBGrid1.OnDrawDataCell := nil;
      DBGrid1.OnDrawColumnCell := DBGrid1DrawColumnCell;
  {$ENDIF}
    end;


Статья DBGrid с цветными ячейками 3 раздела Компоненты и Классы TDBGrid может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




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



:: Главная :: TDBGrid ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
24.04.2024 01:06:51/0.0051200389862061/2