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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2012, 11:39   #1
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию Вопрос по StringGrid

Подскажите как выровнять текст в ячейках StringGrid по центру ячеек? Возможно ли это?
kta87 вне форума Ответить с цитированием
Старый 01.02.2012, 11:49   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Только если напишешь свою процедуру отрисовки.
Кстати примеры на форуме были, я в том числе свой выкладывал - заряди поиск.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.02.2012, 11:55   #3
IvaD
Пользователь
 
Аватар для IvaD
 
Регистрация: 15.11.2011
Сообщений: 16
По умолчанию

http://superadm.net/index.php?name=pages&op=view&id=172

или на форуме

http://programmersforum.ru/showthread.php?t=6231

Последний раз редактировалось IvaD; 01.02.2012 в 11:57.
IvaD вне форума Ответить с цитированием
Старый 01.02.2012, 12:24   #4
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; Col, Row: Longint;
Rect: TRect; State: TGridDrawState);
var
Txt: array[0..255] of Char;
begin
StrPCopy(Txt, StringGrid1.Cells[Col, Row]);
SetTextAlign(StringGrid1.Canvas.Han dle,
GetTextAlign(StringGrid1.Canvas.Han dle)
and not (TA_LEFT or TA_CENTER) or TA_RIGHT);
ExtTextOut(StringGrid1.Canvas.Handl e, Rect.Right - 2, Rect.Top + 2,
ETO_CLIPPED or ETO_OPAQUE, @Rect, Txt, StrLen(Txt), nil);
end;
Проблема при компиляции на строке
Код:
SetTextAlign(StringGrid1.Canvas.Han dle,GetTextAlign(StringGrid1.Canvas.Han dle)
and not (TA_LEFT or TA_CENTER) or TA_RIGHT);
" Undeclared identifier: 'Han' " Как решить?

А по способу предложенному Stilet
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var cr:TRect;
begin
with StringGrid1.Canvas do begin
cr:=StringGrid1.CellRect(acol,arow) ;
FillRect(cr);
TextOut(cr.left+((cr.Right-cr.Left) div 2)-(TextWidth(StringGrid1.Cells[acol,arow]) div 2),
cr.Top,StringGrid1.Cells[acol,arow]);
end;
end;
не могу объявить процедуру!

Последний раз редактировалось kta87; 01.02.2012 в 12:32.
kta87 вне форума Ответить с цитированием
Старый 01.02.2012, 13:06   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

За копипасту без разбору надо отлучать от церкви!

За незнание правил синтаксиса языка тоже можно ! Одна из самых первых тем - именование идентификаторов, перечитайте на всякий случай, а для данного конкретного случаю скажу что пробел нельзя использовать в имени идентификатора, а у вас он скопипастился с форума, без пробела должно быть Handle
Цитата:
не могу объявить процедуру!
это уж совсем... как так Вы первую смогли объявить, а вторую нет ??? они идентичный, если незаметно (не сам код, а заголовок, ессно, ну собственно, заголовок и понимается под словами объявить)
Её так-то не надо объявлять, достаточно щёлкнуть дважды по событию OnDrawCell в закладке Events для нужного компонента Stringgrid и заготовка процедуры сама сгенерится..

Вобщем, Вам бы подучиться, дружеский совет мой. Рекомендую http://delphikingdom.com/lyceum/seminar.asp?ID=6
phomm вне форума Ответить с цитированием
Старый 01.02.2012, 13:30   #6
kta87
Форумчанин
 
Аватар для kta87
 
Регистрация: 22.02.2010
Сообщений: 912
По умолчанию

phomm, да понятное дело - идентичны )) просто у меня почему то иногда во вкладке редактирования кода получается такая чтука, что при редактировании предыдущие символы съедаются.. я в очередной раз этого не заметил вот от туда и ошибка. а понять почему такое происходит не могу, не подскажете?
Собрал процедуру, как предложил Stilet
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
 cr:TRect;
begin
 with StringGrid1.Canvas do
  begin
   cr:=StringGrid1.CellRect(acol,arow) ;
   FillRect(cr);
   TextOut(cr.left+((cr.Right-cr.Left) div 2)-(TextWidth(StringGrid1.Cells[acol,arow]) div 2),
   cr.Top,StringGrid1.Cells[acol,arow]);
  end;
end;

Последний раз редактировалось kta87; 01.02.2012 в 13:53.
kta87 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по stringgrid madkot Помощь студентам 0 26.04.2011 18:19
Вопрос о StringGrid MasterofCDM Общие вопросы Delphi 9 21.10.2009 09:53
Вопрос по StringGrid MasterofCDM Компоненты Delphi 2 02.04.2009 17:06
Вопрос о StringGrid MasterofCDM Общие вопросы Delphi 2 23.09.2008 10:58