Delphi

Delphi dbgrid: DBGrid — Delphi Sources FAQ

Using custom colors in the TDBGrid columns with vcl styles enabled

by Rodrigo 6 Comments

The TDBGrid component allows you to customize the colors of the columns and fonts used to draw the data.

Unfortunately if you uses the vcl styles all these customizations are lost

This issue is caused because the TCustomDBGrid.DrawCell method ignores the custom colors of the columns when the vcl styles are enabled. So the solution is patch this method to allow use the proper colors. After of this you will get a result like so.

I just uploaded this patch as part of the vcl styles utils project. To use it you must add the Vcl.Styles.DbGrid unit to the uses part of your form after of the Vcl.DBGrids unit.

Like this:

Like Loading…

Categories: Delphi, Delphi XE2, VCL Styles | Tags: Delphi, Delphi XE2, Vcl Styles | Permalink.

Embarcadero MVP

.Net Applications Bing API COM Delphi Delphi-News Delphi 2010 Delphi Prism Delphi XE Delphi XE2 Delphi XE3 Delphi XE4 DWM FreePascal Geolocation Github Google Api Lazarus Networking OSX Oxygene RTTI SMBios Tools TWebBrowser VCL Styles WinApi WMI XML XPath

Blog Stats

  • 2,131,196 hits

Search

Search for:

Follow Blog via Email

Enter your email address to follow this blog and receive notifications of new posts by email.

Email Address:

Join 1,389 other subscribers

Follow me on Twitter

My Tweets

Translate

Translate this blog into different languages…

العربية
Български
中文(简体)
中文(繁體)
Hrvatski
Česky
Dansk
Nederlands
Suomi
Français
Deutsch
Ελληνική
हिन्दी
Italiano
日本語
한국어
Norsk
Polski
Português
Română
Русский
Español
Svenska

Blogroll

  • Andy’s Blog and Tools
  • Delphi – Neftali
  • Delphi Haven – Chris Rolliston Blog
  • Delphi sorcery – Stefan Glienke’s Blog
  • Delphifeeds. com
  • Felix J COLIBRI
  • Hallvard’s Blog
  • Hey, Scripting Guy! Blog
  • JEDI Windows API
  • Peter Johnson’s DelphiDabbler.com
  • Reinvent The Wheel
  • RemObject Blog
  • Rudy’s Delphi Corner
  • Scott Hanselman Blog
  • Sip from the Firehose
  • The Art of Delphi Programming
  • The Delphi Geek
  • The Old New Thing
  • The Oracle at Delphi
  • The TIndex
  • YAPB – Alex Ciobanu Blog

Recent Posts

  • DITE Now supports RAD Studio 11 Alexandria
  • Delphi IDE theme Editor Now supports RAD Studio 10.4
  • VCL Styles Utils – New version released
  • VCL Styles Utils – New version
  • New VCL Styles from DelphiStyles.com

Categories

  • .Net (13)
  • ADO (2)
  • ADSI (1)
  • Applications (16)
  • Bing API (3)
  • C# (2)
  • C++ Builder (1)
  • COM (9)
  • Cpp (1)
  • Delphi (209)
  • Delphi 2010 (7)
  • Delphi Prism (12)
  • Delphi XE (7)
  • Delphi XE2 (27)
  • Delphi XE3 (15)
  • Delphi XE4 (3)
  • Delphi XE5 (1)
  • Delphi-News (10)
  • DWM (3)
  • Firebird (1)
  • FireMonkey (2)
  • FreePascal (8)
  • Geolocation (3)
  • Github (3)
  • Google Api (9)
  • Google labs (2)
  • InnoSetup (2)
  • iOS (1)
  • Javascript (1)
  • JEDI API (2)
  • json (2)
  • Lazarus (6)
  • Linux (1)
  • Networking (14)
  • OSX (3)
  • Oxygene (4)
  • PreviewHandler (2)
  • Rest (1)
  • RTTI (5)
  • RTTI (1)
  • SMBios (6)
  • SQL CLR (1)
  • Sql Server (1)
  • StackOverflow (1)
  • Tools (22)
  • TWebBrowser (3)
  • VCL Styles (39)
  • WinApi (16)
  • WinInet (1)
  • WMI (37)
  • WUA (1)
  • XML (3)
  • XPath (3)

Top Posts & Pages

  • Hosting Preview Handlers in Delphi VCL Applications
  • WMI Delphi Code Creator
  • Bits manipulation functions using Delphi
  • Using the Google Maps API V3 from Delphi — Part I Basic functionality
  • Generating Qr Codes with Delphi
  • Manipulating local/remote files and folders using Delphi and WMI
  • All about WiFi Networks and WiFi Adapters using the WMI and Delphi
  • A new way to select and apply a VCL Style in Runtime
  • Checking if a TCP port is Open using Delphi and Winsocks
  • Compile, Debug and Run your Pascal code online.

Blog at WordPress.com.

Top

%d bloggers like this:

    firedac — Delphi dbGrid — Имена столбцов

    спросил

    Изменено 2 года, 3 месяца назад

    Просмотрено 2к раз

    Я часто ссылаюсь на значения в поле в dbgrid с порядковым номером, например:

    dbgrid1.Fields[8].AsString:= ‘SomeValue’; //индекс 8, относящийся к полю с именем «Платеж»

    Это работает нормально, пока я не изменю поля о том, что dbgrid перечислил в редакторе полей, и в это время я должен найти все вышеперечисленное использование и изменить номер индекса.

    Было бы намного проще и меньше возможностей для проблем, если бы я мог ссылаться на поле примерно так:

    dbgrid1. Field(‘Payment’).AsString:= ‘SomeValue’;

    Есть ли способ сделать это?

    • delphi
    • firedac
    • dbgrid

    2

    Вы можете использовать простую функцию, подобную этой, для доступа к столбцу TDBGrid по имени поля:

     function ColumnByName(Grid : TDBGrid; const AName: String): TColumn;
    вар
      я : целое число;
    начинать
      Результат := ноль;
      для i := 0 для Grid.Columns.Count - 1 начинается
         если (Grid.Columns[i].Field <> Nil) и (CompareText(Grid.Columns[i].FieldName, AName) = 0), то начните
           Результат := Сетка.Столбцы[i];
           Выход;
         конец;
      конец;
    конец;
     

    Тогда вы можете сделать это:

     ColumnByName(dbgrid1, 'Payment').AsString:= 'SomeValue';
     

    Если вы используете FireDAC, ваша версия Delphi достаточно свежа для поддержки помощников классов, поэтому вместо этого вы можете использовать помощник класса:

     тип
      TGridHelper = помощник класса для TDBGrid
        функция ColumnByName (const AName: String): TColumn;
      конец;
    [. ..]
    {TGridHelper}
    функция TGridHelper.ColumnByName (const AName: String): TColumn;
    вар
      я : целое число;
    начинать
      Результат := ноль;
      для i := 0 to Columns.Count - 1 начинается
         если (Columns[i].Field <> Nil) и (CompareText(Columns[i].FieldName, AName) = 0), то начните
           Результат: = Столбцы [i];
           Выход;
         конец;
      конец;
    конец;
     

    и затем

     dbgrid1.ColumnByName('Payment').AsString := 'SomeValue';
     

    1

    Зарегистрируйтесь или войдите в систему

    Зарегистрируйтесь с помощью Google

    Зарегистрироваться через Facebook

    Зарегистрируйтесь, используя электронную почту и пароль

    Опубликовать как гость

    Электронная почта

    Требуется, но не отображается

    Опубликовать как гость

    Электронная почта

    Требуется, но не отображается

    Поддержка Borland TDBGrid | Документация TestComplete

    Применяется к TestComplete 15. 50, последнее изменение: 4 апреля 2023 г.

    О поддержке

    TestComplete может распознавать элементы управления Borland TDBGrid в приложениях Delphi и C++Builder. Он предоставляет специальные свойства и методы, позволяющие получать данные элементов управления и моделировать действия пользователя с элементами управления (см. ниже).

    Поддерживаемые версии

    Поддерживаемые версии компонентов: компонент VCL TDBGrid Borland Delphi 7, Borland Developer Studio 2006, CodeGear RAD Studio 2007 и 2009, Embarcadero RAD Studio 2010, XE–XE8, 10–10.4.

    Требования

    Чтобы TestComplete мог работать с элементами управления Borland TDBGrid, должны быть выполнены следующие требования:

    • У вас должна быть активная лицензия на модуль TestComplete Desktop .

    • Тестируемое приложение должно быть скомпилировано с отладочной информацией (см. Реализация поддержки Debug Info Agent™ в приложениях).

    • Имя класса элемента управления должно быть указано в Borland Controls | Группа DBGrid параметров сопоставления объектов вашего проекта. По умолчанию эта группа содержит следующий элемент:

      • ТДБГрид

      Можно также дать команду тестовому механизму распознавать пользовательские элементы управления как элементы управления Borland TDBGrid. Информацию об этом смотрите ниже.

    • Поддержка элементов управления Borland TDBGrid реализована с помощью подключаемых модулей поддержки приложений Delphi и C++Builder и поддержки элементов управления VCL. Эти плагины устанавливаются и включаются автоматически как часть модуля TestComplete Desktop .

      Если у вас возникли проблемы при работе с элементами управления, выберите «Файл» >

      «Установить расширения» в главном меню TestComplete и проверьте, активны ли подключаемые модули. (Вы можете найти плагины в 9Группа 0092 Desktop .) Если плагины недоступны, запустите установку TestComplete в режиме Repair .

    Распознавание пользовательских элементов управления

    Чтобы дать команду TestComplete распознать ваши пользовательские элементы управления как Borland TDBGrid управление:

    1. Откройте параметры сопоставления объектов вашего проекта.

    2. Добавьте имя класса элемента управления в Borland Controls | Группа DBGrid.

      Если вы не знаете имя элемента управления, вы можете спросить у разработчиков элемента управления или просмотреть его ClassName в панели Object Browser. В качестве альтернативы вы можете нажать «Добавить с экрана» и выбрать свой пользовательский элемент управления на экране. TestComplete извлечет имя класса элемента управления и автоматически добавит его в выбранную группу сопоставления. Подробную информацию см. в разделе Сопоставление объектов.

    После сопоставления элемент управления получает все свойства, методы и действия, характерные для элемента управления Borland TDBGrid.

    Если указанный пользовательский элемент управления не соответствует типу элемента управления, он может неправильно реагировать на команды, отправляемые TestComplete, поэтому запись или воспроизведение действий пользователя над тестируемым элементом управления вызовет ошибки.

    Members

    При тестировании элементов управления Borland TDBGrid можно использовать свойства и методы, характерные для этих элементов управления, а также свойства и методы, которые TestComplete применяет к тестируемым объектам, объектам на экране и объектам окон. Полный список доступных свойств и методов см. в следующих разделах:

    Свойства

    Методы

    Типичные задачи

    Примеры, демонстрирующие выполнение типичных операций над элементами управления Borland TDBGrid, см. в разделе Работа с Borland TDBGrid.

    Примечание: TestComplete позволяет работать только с теми записями сетки, которые видны в данный момент. Доступ к записям, расположенным выше или ниже видимой области, не поддерживается. Чтобы иметь возможность работать с записями, находящимися за пределами видимой области сетки, необходимо сначала прокрутить сетку так, чтобы нужная строка стала видимой. Для прокрутки элемента управления TDBGrid можно использовать любой из следующих подходов: