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

Выравнивание колонок StringGrid

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

Выравнивание колонок StringGrid

Автор: Kurt

Два программиста едут в переполненном автобусе. Один - другому:
- Что то у меня с писюком! (толпа замирает)
- А что с ним?
- Да висит часто...
- Может вирус какой?
- Да проверял, все стерильно...
- А висит хорошо?
- Крепко, тремя пальцами не поможешь...

Организуйте обработчик события сетки OnDrawCell. Создайте код обработчика подобный этому:


procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Longint;
  Rect: TRect; State: TGridDrawState);
var
  Txt: array[0..255] of Char;
begin
  StrPCopy(Txt, StringGrid1.Cells[Col, Row]);
  SetTextAlign(StringGrid1.Canvas.Handle,
    GetTextAlign(StringGrid1.Canvas.Handle)
    and not (TA_LEFT or TA_CENTER) or TA_RIGHT);
  ExtTextOut(StringGrid1.Canvas.Handle, Rect.Right - 2, Rect.Top + 2,
    ETO_CLIPPED or ETO_OPAQUE, @Rect, Txt, StrLen(Txt), nil);
end;

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

Успехов.

В классическом шутке "посетить автобус"!

Теперь давайте фокусируемся на задаче: создании обработчика события OnDrawCell для компонента StringGrid.

Вот разбивка предоставленного кода:

  1. Процедура StringGrid1DrawCell вызывается, когда grid требует нарисовать ячейку.
  2. Она принимает четыре параметра:
    • Sender: объект, который инициировал событие (в этом случае, компонент StringGrid).
    • Col и Row: индексы столбца и строки ячейки, которая рисуется.
    • Rect: структура TRect, представляющая границы прямоугольника ячейки.
  3. Процедура использует массив Txt для хранения текстового значения ячейки (полученного из свойства Cells).
  4. Она настраивает выравнивание текста в правом направлении с помощью функции SetTextAlign.
  5. Наконец, она рисует текст с помощью функции ExtTextOut.

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

procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Longint;
  Rect: TRect; State: TGridDrawState);
var
  Text: string;
begin
  Text := StringGrid1.Cells[Col, Row];
  StringGrid1.Canvas.Brush.Color := clWhite; // Установка цвета фона (необязательно)
  StringGrid1.Canvas.Font.Assign(StringGrid1.Font); // Использование шрифта grid
  StringGrid1.Canvas.TextOut(Rect.Right - 2, Rect.Top + 2, Text);
end;

Вот изменения, которые я сделал:

  • Переименовал Txt в Text для лучшей читаемости.
  • Использую одиночную строковую переменную вместо массива.
  • Установка цвета фона и шрифта с помощью свойств grid (необязательно).
  • Вызвал StringGrid1.Canvas.TextOut вместо ExtTextOut, поскольку это более прямое.

Свободно экспериментируйте с различными настройками и стилями, чтобы достичь желаемого внешнего вида для вашего компонента StringGrid!

Создание обработчика события выравнивания ячеек в StringGrid, который изменяет отображение текста по горизонтали для nicer вывода.


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

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




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


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


реклама


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

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:11:21/0.0058879852294922/1