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

StringGrid, Печать в ячейку

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

StringGrid, Печать в ячейку

Code:

unit Unit1;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids;
 
type
TForm1 = class(TForm)
   StringGrid: TStringGrid;
   procedure FormCreate(Sender: TObject);
   procedure StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;
     Rect: TRect; State: TGridDrawState);
end;
 
var
Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
var
C, R: Integer;
begin
for C := 0 to StringGrid.ColCount - 1 do
   for R := 0 to StringGrid.RowCount - 1 do
     StringGrid.Cells[C, R] := 'A very very very long string';
end;
 
procedure TForm1.StringGridDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if not (Sender is TStringGrid) then Exit;
 
with TStringGrid(Sender) do
begin
   Canvas.FillRect(Rect);
   DrawText(Canvas.Handle, PChar(Cells[ACol, ARow]), -1, Rect, DT_WORDBREAK);
end;
end;
 
end.
Взято из http://forum.sources.ru

Автор: Smike

Код написан на Delphi и используется для печати очень длинной строки в каждом ячейке TStringGrid компонента.

Вот что код делает:

  1. В процедуре FormCreate выполняется цикл, который заполняет каждую ячейку StringGrid тем же строкой 'A very very very long string'. Это означает, что все ячейки будут иметь одинаковое содержимое.

  2. Процедура StringGridDrawCell переопределяется для рисования содержимого ячеек грида на экране при обновлении или прокрутке грида. В этом методе:

  3. Проверяется, является ли объект-ссылка на instance of TStringGrid, и если нет, то метод заканчивается.
  4. Получается ссылка на TStringGrid с помощью оператора with.
  5. Кanvas ячейки грида заполняется цветом (в этом случае, белым).
  6. Вызывается функция DrawText для рисования текста из ячейки в canvas. Флаг DT_WORD BREAK означает, что текст будет обрезан, если он слишком длинен для ширины ячейки.

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

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

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


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

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