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

Выравнивание ячеек в TStringGrid

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

Выравнивание ячеек в TStringGrid

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
   Rect: TRect; State: TGridDrawState);

   procedure WriteText(StringGrid: TStringGrid; ACanvas: TCanvas; const ARect: TRect;
     const Text: string; Format: Word);
   const
     DX = 2;
     DY = 2;
   var
     S: array[0..255] of Char;
     B, R: TRect;
   begin
     with Stringgrid, ACanvas, ARect do
     begin
       case Format of
         DT_LEFT: ExtTextOut(Handle, Left + DX, Top + DY,
             ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text), Length(Text), nil);

         DT_RIGHT: ExtTextOut(Handle, Right - TextWidth(Text) - 3, Top + DY,
             ETO_OPAQUE or ETO_CLIPPED, @ARect, StrPCopy(S, Text),
             Length(Text), nil);

         DT_CENTER: ExtTextOut(Handle, Left + (Right - Left - TextWidth(Text)) div 2,
             Top + DY, ETO_OPAQUE or ETO_CLIPPED, @ARect,
             StrPCopy(S, Text), Length(Text), nil);
       end;
     end;
   end;

   procedure Display(StringGrid: TStringGrid; const S: string; Alignment: TAlignment);
   const
     Formats: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
   begin
     WriteText(StringGrid, StringGrid.Canvas, Rect, S, Formats[Alignment]);
   end;
 begin
   // Right-justify columns 0-2 
  // Spalten 0-2 rechts ausrichten. 
  if ACol in [0..2] then
     Display(StringGrid1, StringGrid1.Cells[ACol, ARow], taRightJustify)

     // Center the first row 
    // Erste zeile zentrieren 
    if ARow = 0 then
       Display(StringGrid1, StringGrid1.Cells[ACol, ARow], taCenter)
   end;

Код - это обработчик события OnDrawCell для компонента TStringGrid в Delphi, предназначенный для настройки визуального представления ячеек в таблице.

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

  1. Он определяет два процедуры: WriteText и Display. Эти процедуры используются для записи текста на канвасе в указанном прямоугольнике (ARect) с заданным форматом (Format).
  2. Процедура WriteText использует функцию Windows API ExtTextOut для рисования текста на канвасе. Она учитывает выравнивание текста, изменяя координату x соответственно.
  3. Процедура Display вызывает WriteText и передает необходимые параметры, включая строку для отображения, выравнивание (левое, правое или центрное) и форматы для каждого типа выравнивания.

В основной блоке кода:

  1. Он проверяет, находится ли текущий столбец (ACol) в диапазоне столбцов 0-2.
  2. Если это так, он отображает текст в ячейке на этом месте с помощью Display, с правым выравниванием (т.е., выравнивает текст по правому краю).
  3. Кроме того, он проверяет, является ли текущая строка (ARow) равной 0.
  4. Если это так, он отображает текст в первой строке ячеек с помощью Display с центровкой.

Цель этого кода - продемонстрировать, как можно настроить визуальное представление ячеек в TStringGrid. В этом конкретном реализации текст выравнивается по правому краю в столбцах 0-2 и централизуется в первой строке.

В статье описана процедура для выравнивания ячеек в TStringGrid, которая позволяет выравнивать текст в ячейках по левому, правому или центру.


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

Получайте свежие новости и обновления по 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 13:22:20/0.0036349296569824/0