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

Интеграция графической панели с текстом в TStringGrid в Delphi 2010: пошаговое руководство

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

Интеграция графической панели с текстом в TStringGrid в Delphi 2010

Вопрос, поднятый пользователем, заключается в необходимости добавления графической панели в столбец TStringGrid в Delphi 2010. Для столбца под номером пять ("Five") необходимо отобразить горизонтальную панель navy blue, а также разместить на ней текст, центрированный по вертикали. Это требует использования настройки пользовательского рисования, так как стандартное поведение TStringGrid не предусматривает такой функционал.

Пошаговое руководство

Для реализации пользовательского рисования в TStringGrid необходимо переопределить метод OnDrawCell, который позволит изменить внешний вид ячеек при их рисовании.

  1. Определите обработчик события OnDrawCell для вашего TStringGrid. Этот обработчик будет вызываться при рисовании каждой ячейки.

  2. В обработчике проверьте, что текущая колонка - это та, для которой нужно рисовать графическую панель. В данном случае это пятая колонка.

  3. Очистите ячейку, заполнив её фоновым цветом.

  4. Определите размеры панели, исходя из процентного соотношения (например, 100% для максимального значения в ячейке).

  5. Нарисуйте панель, используя заданный цвет.

  6. Нарисуйте текст на панели, центрировав его вертикально.

  7. Убедитесь, что все операции с графикой выполняются внутри клиппированной области, чтобы не затронуть другие ячейки.

Пример кода

procedure TForm1.grdMainDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  Progress: Single;
  R: TRect;
  Txt: String;
begin
  with TStringGrid(Sender) do
    if (ACol = 4) and (ARow >= FixedRows) then
    begin
      Progress := StrToFloatDef(Cells[ACol, ARow], 0) / 100;
      Canvas.FillRect(Rect);
      R := Rect;
      R.Right := R.Left + Trunc((R.Right - R.Left) * Progress);
      Canvas.Brush.Color := clNavy;
      Canvas.Rectangle(R);
      Txt := Cells[ACol, ARow] + '%';
      Canvas.Brush.Style := bsClear;
      IntersectClipRect(Canvas.Handle, R.Left, R.Top, R.Right, R.Bottom);
      Canvas.Font.Color := clHighlightText;
      DrawText(Canvas.Handle, PChar(Txt), -1, Rect, DT_SINGLELINE or
        DT_CENTER or DT_VCENTER or DT_END_ELLIPSIS or DT_NOPREFIX);
      SelectClipRgn(Canvas.Handle, 0);
      ExcludeClipRect(Canvas.Handle, R.Left, R.Top, R.Right, R.Bottom);
      Canvas.Font.Color := clWindowText;
      DrawText(Canvas.Handle, PChar(Txt), -1, Rect, DT_SINGLELINE or
        DT_CENTER or DT_VCENTER or DT_END_ELLIPSIS or DT_NOPREFIX);
      SelectClipRgn(Canvas.Handle, 0);
    end;
end;

Данный код предполагает, что в ячейке хранится строка, представляющая собой процентное значение. Это значение используется для определения размера панели.

Важные замечания

  • Не забудьте установить обработчик OnDrawCell для вашего TStringGrid.
  • Убедитесь, что значения в пятой колонке представлены в виде строк, содержащих процентные значения.
  • Фон панели должен быть залит до того, как начнётся рисование, чтобы скрыть текст по умолчанию.
  • Используйте различные цвета и стили, чтобы адаптировать код под ваш дизайн.

Следуя этим шагам, вы сможете интегрировать графическую панель с текстом в столбец TStringGrid в вашем приложении Delphi 2010.

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

Вопрос связан с необходимостью интеграции графической панели с текстом в столбец TStringGrid в среде разработки Delphi 2010, используя пользовательское рисование.


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

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




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


:: Главная :: TStringGrid и TDrawGrid ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-03-14 13:33:19/0.0032451152801514/0