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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно выравнить колонки в DBGridEh 
:(
    Опции темы
Delphist
Дата 4.4.2007, 17:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


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

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



Есть DBGridEh AutoFitColWidth колонок которого = True; Встала задала, чтобы 1-ая колонка имела, например 180 пикселей, а остальные колонки по ширине были бы равны между собой, при все этом AutoFitColWidth всех колонок должен быть = 180. Вопрос как это выравнивание осуществить порграммно? 



--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akella
Дата 6.4.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



используй FrozenCols
PM MAIL   Вверх
AriX
Дата 7.4.2007, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 16.6.2003

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



Код
procedure TFormMain.FormCreate(Sender: TObject);
var
  i, WidthForCols, ColWidth, LastColWidth: Integer;
begin
  // Первая колонка
  DBGridEh1.Columns.Items[0].Width := 20;
  // Общая оставшееся место для остальных колонок (-40 - чтобы учесть скроллбар)
  WidthForCols := DBGridEh1.Width - DBGridEh1.Columns.Items[0].Width - 40;
  // Ширина каждой колонки, кроме последней
  ColWidth := WidthForCols div (DBGridEh1.Columns.Count - 1);
  // К последней еще прибавляем остаток от округления
  LastColWidth := ColWidth + (WidthForCols mod (DBGridEh1.Columns.Count - 1));
  // Устанавливаем ширину для колонок от 2-ой до предпоследней
  for i := 1 to DBGridEh1.Columns.Count - 2 do
    DBGridEh1.Columns.Items[i].Width := ColWidth;
  // Теперь последняя колонка
  DBGridEh1.Columns.Items[DBGridEh1.Columns.Count - 1].Width := LastColWidth;
  // И нужное свойство
  DBGridEh1.AutoFitColWidths := True;
end;

Только в дизайнере свойство AutoFitColWidths выключи.
Вообще очень странно, но работает, так как надо smile Т.е. так, как я понял, как нужно...
Фишка в том, что итоговая ширина колонок в итоге не равна той, которую мы делаем при создании формы... Но если убрать изменение ширины этих колонок из кода, то будут глюки.

Akella
FrozenCols немного не то - это количество колонок слева, которые всегда должны оставаться на виду при горизонтальном скролле.

Это сообщение отредактировал(а) AriX - 7.4.2007, 21:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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