Недавно добавленные исходники

•  TDictionary Custom Sort  3 225

•  Fast Watermark Sources  2 991

•  3D Designer  4 750

•  Sik Screen Capture  3 259

•  Patch Maker  3 467

•  Айболит (remote control)  3 528

•  ListBox Drag & Drop  2 904

•  Доска для игры Реверси  80 780

•  Графические эффекты  3 843

•  Рисование по маске  3 171

•  Перетаскивание изображений  2 544

•  Canvas Drawing  2 672

•  Рисование Луны  2 500

•  Поворот изображения  2 092

•  Рисование стержней  2 120

•  Paint on Shape  1 525

•  Генератор кроссвордов  2 183

•  Головоломка Paletto  1 730

•  Теорема Монжа об окружностях  2 158

•  Пазл Numbrix  1 649

•  Заборы и коммивояжеры  2 016

•  Игра HIP  1 262

•  Игра Go (Го)  1 200

•  Симулятор лифта  1 422

•  Программа укладки плитки  1 177

•  Генератор лабиринта  1 512

•  Проверка числового ввода  1 297

•  HEX View  1 466

•  Физический маятник  1 322

•  Задача коммивояжера  1 357

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

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;






Похожие по теме исходники

cyDBGrid

Cell Hint in DBGrid

Примеры оформления DBGrid

Пример использования DBGrid

 



Copyright © 2004-2024 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте