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

Покрашенный StringGrid 2

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

Покрашенный StringGrid 2

В данном модуле демонстрируется техника изменения цвета у выводимого в StringGrid текста.


unit Strgr;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, Grids, StdCtrls, DB;

type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Longint;
      Rect: TRect; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var

  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Longint;

  Rect: TRect; State: TGridDrawState);
const

  CharOffset = 3;
begin

  with StringGrid1.canvas do
  begin
    font.color := clMaroon;
    textout(rect.left + CharOffset, rect.top + CharOffset, 'L');
    font.color := clNavy;
    textout(rect.left + CharOffset + TextWidth('L'),
      rect.top + CharOffset, 'loyd');
  end;
end;

end.

Это фрагмент кода на Delphi, демонстрирующий, как можно настроить внешний вид компонента StringGrid изменением цвета текста в реальном времени.

Обзор кода:

  1. Первая секция определяет модуль и интерфейс.
  2. Класс TForm1 наследуется от TForm и содержит компонент StringGrid1, который является пользовательским грид-контролем.
  3. Процедура StringGrid1DrawCell вызывается, когда грид требует перезаписать свои ячейки. Эта процедура отвечает за изменение внешнего вида текста в каждой ячейке.

Внутри этой процедуры:

  • Используется оператор with, чтобы получить доступ к свойству Canvas компонента StringGrid1, что позволяет рисовать на канвасе.
  • Цвет шрифта устанавливается в марон (clMaroon), а текст 'L' рисуется с определенным смещением от левого края ячейки.
  • Затем цвет шрифта изменяется на синий (clNavy) и текст 'loyd' рисуется, начиная с позиции, где ранее рисовался предыдущий текст, также учитывая CharOffset.

Этот код будет рисовать пользовательский строковый текст "Lloyd" в ячейках грида при перезаписи грида.

Альтернативное решение может быть более эффективным:

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

Обновленный код:

procedure TForm1.StringGrid1PrepareCanvas(sender: TObject; aCol, aRow: Longint;
  aRect: TRect; aState: TGridDrawState);
begin
  StringGrid1.Canvas.Font.Color := clMaroon;
end;

... ...

StringGrid1.OnPrepareCanvas := StringGrid1PrepareCanvas;

В этом коде:

  • Событие OnPrepareCanvas присваивается компоненту StringGrid1.
  • В обработчике события шрифт для каждой ячейки устанавливается в марон (clMaroon) перед рисованием канваса.

Эта APPROACH может быть более эффективной, потому что она позволяет изменять внешний вид текста без необходимости ручного позиционирования.

В статье демонстрируется изменение цвета выводимого текста в StringGrid с помощью процедуры DrawCell и использования методов Canvas объекта StringGrid.


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

Получайте свежие новости и обновления по 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 11:39:00/0.0057809352874756/1