Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.02.2013, 05:12   #1
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию StringGrid. Вертикальный текст

Нужно сделать так что бы текст печатался в определённых ячейках не горизонтально а вертикально.
В интерне находил вот такой код на всех сайтах http://www.desksoft.ru/index.php?s_i...=0%7C372%7C387
Пробовал вставить себе в программу ничего не происходило.
Понимаю что там куча проверок для выравнивания высоты и ширины ячейки. Но я в коде разобраться не могу.
Подскажите, может у кого есть код попроще.
Зависит работоспособность этого кода от того что текст находиться в объеденённых ячейках?
Антон Лысенко вне форума Ответить с цитированием
Старый 25.02.2013, 22:57   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses     windows,
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids;

type

  { TForm1 }

  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
      aRect: TRect; aState: TGridDrawState);
  private
    { private declarations }
  public
    { public declarations }
  end;

var  t:LOGFONT;   hf:HFONT;   f:TFont;
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
// Создаем повернутый фонт
 with t do begin
Begin
 lfHeight := 20;
 lfOrientation := -900;   // на 90 градусов
 lfEscapement := 9000;
 lfWeight := FW_REGULAR;
End;
end;
hf:=CreateFontIndirect(t);
F := TFont.Create;
F.Handle := hf;
end;

procedure TForm1.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
  aRect: TRect; aState: TGridDrawState);
begin
// И используя его рисуем на каве ячеек.
  with TStringGrid(sender).Canvas do begin
   Font:= f;
   TextOut(aRect.Left+(aRect.Right-aRect.Left) div 2, aRect.Top, 'делфи');
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  f.Free;
  DeleteObject(hf);
end;

end.
Так проще?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.02.2013, 23:26   #3
Антон Лысенко
Форумчанин
 
Регистрация: 15.12.2010
Сообщений: 181
По умолчанию

Спасибо огромезное!))
Антон Лысенко вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изьять текст из StringGrid Афанасий[vedma] Общие вопросы Delphi 2 30.11.2011 15:01
Вертикальный текст. tema654 Паскаль, Turbo Pascal, PascalABC.NET 1 31.03.2011 10:30
Текст разного размера в StringGrid anGeee Общие вопросы Delphi 5 28.12.2009 11:25
Текст под углом в StringGrid artemavd Общие вопросы Delphi 7 25.07.2009 20:17
программа которая сохраняет текст StringGrid без диалогов KSP БД в Delphi 2 19.09.2007 18:49