Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как выровнять текст в ячейках StringGridа по центру  (Прочитано 9316 раз)
0 Пользователей и 1 Гость смотрят эту тему.
monrus
Опытный

ru
Offline Offline

« : 12-11-2005 18:13 » 

Как выровнять текст в ячейках StringGridа по центру. ДАйте пожалуйста пример
Записан
monrus
Опытный

ru
Offline Offline

« Ответ #1 : 12-11-2005 18:54 » 

И как можно текст в нулевой строке сделать жирным
Записан
zubr
Гость
« Ответ #2 : 13-11-2005 08:23 » new

Можно сделать так:
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  i, j, x, y:Integer;
  sz:tagSize;
begin
 StringGrid1.Canvas.Font:=StringGrid1.Font;
 For i:=0 to StringGrid1.RowCount-1 do
 begin
  If i=0 then
  StringGrid1.Canvas.Font.Style:=[fsBold]
  else
  StringGrid1.Canvas.Font.Style:=[];
  For j:=0 to StringGrid1.ColCount-1 do
  begin
   sz:=StringGrid1.Canvas.TextExtent(StringGrid1.Cells[j, i]);
   StringGrid1.Canvas.Brush.Color:=clWhite;
   StringGrid1.Canvas.FillRect(StringGrid1.CellRect(j, i));
   x:=StringGrid1.CellRect(j, i).Left+
    (StringGrid1.CellRect(j, i).Right-StringGrid1.CellRect(j, i).Left-sz.cx) div 2;
   y:=StringGrid1.CellRect(j, i).Top+
    (StringGrid1.CellRect(j, i).Bottom-StringGrid1.CellRect(j, i).Top-sz.cy) div 2;
   StringGrid1.Canvas.TextOut(x, y, StringGrid1.Cells[j, i]);
  end;
 end;
end;
Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #3 : 24-11-2005 10:07 » 

Зубр, OnDrawCell вызывается для каждой ячейки. понимаешь? т.е. для каждой. ячейки ты будешь пробегать по всему стринггриду и прорисовывать каждую ячейку.

ты сам этот изумительный код запускал?
Записан

zubr
Гость
« Ответ #4 : 24-11-2005 19:50 » 

Звиняюсь, код с одного места в другое вставил, а i, j на ACol, ARow поменять забыл  Так больше нельзя.... Вот правильный код:
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  x, y:Integer;
  sz:tagSize;
begin
 StringGrid1.Canvas.Font:=StringGrid1.Font;
 If ARow=0 then
 StringGrid1.Canvas.Font.Style:=[fsBold]
 else
 StringGrid1.Canvas.Font.Style:=[];
 sz:=StringGrid1.Canvas.TextExtent(StringGrid1.Cells[ACol, ARow]);
 StringGrid1.Canvas.Brush.Color:=clWhite;
 StringGrid1.Canvas.FillRect(StringGrid1.CellRect(ACol, ARow));
 x:=StringGrid1.CellRect(ACol, ARow).Left+
  (StringGrid1.CellRect(ACol, ARow).Right-StringGrid1.CellRect(ACol, ARow).Left-sz.cx) div 2;
 y:=StringGrid1.CellRect(ACol, ARow).Top+
  (StringGrid1.CellRect(ACol, ARow).Bottom-StringGrid1.CellRect(ACol, ARow).Top-sz.cy) div 2;
 StringGrid1.Canvas.TextOut(x, y, StringGrid1.Cells[ACol, ARow]);
end;
Цитата
ты сам этот изумительный код запускал?
Запустил, работает, естественно для большой таблицы будет тормозить.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines