Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Сокрытие полного UUID в DBGrid с использованием Delphi

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

При работе с компонентом DBGrid в Delphi иногда возникает необходимость изменить отображение данных в ячейках, не затрагивая при этом их фактическое значение. Рассмотрим ситуацию, когда необходимо скрыть часть строки UUID (универсального уникального идентификатора) при отображении в DBGrid, оставив видимой только последнюю часть идентификатора.

Проблема

Разработчик столкнулся с задачей изменения содержимого ячейки для отображения, не затрагивая исходные данные. В методе DrawColumnCell был реализован код, который изменял отображение значения поля UUID. Однако, при выделении ячейки, отображалось как исходное значение, так и изменённое, что приводило к их наложению друг на друга.

if Column.FieldName = 'UUID' then
  begin
     with (Sender as TDBGrid).Canvas do
     begin
         FillRect(Rect);
         strTemp := (Sender as TDBGrid).DataSource.DataSet.FieldByName('UUID').AsString;
         strTemp := RightStr(strTemp, Length(strTemp) - LastDelimiter('-', strTemp));
         TextOut(Rect.Right - 2 - (Sender as TDBGrid).Canvas.TextWidth(strTemp), Rect.Top + 2, strTemp);
     end;
  end;

Решение

Для решения проблемы следует использовать событие OnGetText() для поля, которое связано с DBGrid. Это позволит изменять текст для отображения без изменения исходных данных. Пример реализации с использованием событий поля:

procedure TForm1.GUIDGetText(Sender: TField; var Text: string; DisplayText: Boolean);
var
  strTemp : string;
begin
  if DisplayText then
  begin
     strTemp := Sender.AsString;
     strTemp := RightStr(strTemp, Length(strTemp) - LastDelimiter('-', strTemp));
     Text := strTemp;
  end;
end;

Интеграция с проектом

В вашем проекте необходимо найти поле, связанное с DBGrid, и установить для этого поля обработчик события OnGetText. Если у вас нет прямого доступа к полю (например, в случае использования FDQuery), можно воспользоваться Редактором полей (Fields Editor) или установить обработчик в коде, например, в методе FormCreate.

FDQuery1.FieldByName('UUID').OnGetText := GUIDGetText;

Заключение

Использование события OnGetText() для поля данных позволяет изменить отображаемый текст в DBGrid без изменения исходных данных, что решает проблему наложения значений и обеспечивает корректное отображение данных. Этот метод является предпочтительным для таких задач, так как он не затрагивает логику работы с данными и не создаёт путаницы в управлении состоянием ячеек.

Создано по материалам из источника по ссылке.

При работе с DBGrid в Delphi разработчик хочет скрыть полный UUID в ячейках, оставив видимым только его последний сегмент.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


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


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-05-01 12:00:20/0.0035078525543213/0