Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> StringGrid и выравнивание, помогите! 
:(
    Опции темы
MacTep
Дата 21.5.2005, 12:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Здравствуйте!
Проблема такая: не могу сделать выравнивание по середине в StringGrid'е. Знаю, что эта проблема давно и много раз обсуждалась. Но я не смог найти путевого ответа! У меня такой код:
Код

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var lRow,lCol:LongInt;
begin
  lRow:=ARow;
  lCol:=ACol;
  with Sender as TStringGrid, Canvas do
  begin
    FillRect(Rect);
    SetBkMode(Handle, TRANSPARENT);
    SetTextAlign(Handle, TA_CENTER);
    TextOut(Rect.Right-2, Rect.Top+2, Cells[lCol, lRow]);
  end;
end;

Только вот не получается по центру выставить содержимое ячеек. Почему это происходит и что я делаю не так? Спасибо...


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
s-mike
Дата 21.5.2005, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 16.1.2005
Где: Киев

Репутация: 9
Всего: 16



Используй DrawText и не мучься smile
Код

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  Windows.DrawText(
    StringGrid1.Canvas.Handle, PChar(Cells[ACol, ARow]), -1, Rect, 
    DT_SINGLELINE or DT_CENTER or DT_VCENTER);
end;


Это сообщение отредактировал(а) s-mike - 21.5.2005, 13:34
PM MAIL WWW   Вверх
MacTep
Дата 23.5.2005, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



s-mike, если делаю так:
Код

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
Windows.DrawText(
StringGrid1.Canvas.Handle,
PChar(StringGrid1.Cells[ACol, ARow]),-1,
Rect,
DT_SINGLELINE or DT_CENTER or DT_VCENTER);
end;

procedure TForm1.FormShow(Sender: TObject);
var s:string;
begin
  StringGrid1.Cells[0,1]:='***';
  StringGrid1.Cells[1,1]:='По центру';
  StringGrid1.Cells[2,2]:='***';
,
то получается что все надписи выводятся по два раза. Что делать?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
~FoX~
Дата 23.5.2005, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



MacTep
Ну так тыж сначал заносишь значения в ячейку при FormShow, а потом еще раз рисуешь при StringGrid1DrawCell, вот и получаются две надписи.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
s-mike
Дата 23.5.2005, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 16.1.2005
Где: Киев

Репутация: 9
Всего: 16



Цитата(MacTep @ 23.5.2005, 10:44)
то получается что все надписи выводятся по два раза. Что делать?

Ну дык StringGrid.DefaultDrawing := False
или
Код

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  StringGrid1.Canvas.FillRect(Rect);
  Windows.DrawText(
    StringGrid1.Canvas.Handle,
    PChar(StringGrid1.Cells[ACol, ARow]),-1,
    Rect, DT_SINGLELINE or DT_CENTER or DT_VCENTER);
end;

PM MAIL WWW   Вверх
MacTep
Дата 23.5.2005, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



s-mike, благодарю, все отлично работает! Но DefaultDrowing - фигня полная! Мне такой вид не понравился! smile


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
~FoX~
Дата 24.5.2005, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Цитата(MacTep @ 23.5.2005, 21:50)
Но DefaultDrowing - фигня полная! Мне такой вид не понравился!

Он то как раз и позволяет тебе с видом сделать все что угодно.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
s-mike
Дата 25.5.2005, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 425
Регистрация: 16.1.2005
Где: Киев

Репутация: 9
Всего: 16



Цитата(MacTep @ 23.5.2005, 20:50)
Но DefaultDrowing - фигня полная! Мне такой вид не понравился! smile


Цитата
Он то как раз и позволяет тебе с видом сделать все что угодно.

Да. Этот метод отключает отрисовку ячеек по умолчанию и позволяет придавать ячейкам совсем другой вид. smile
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0887 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.