Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.11.2011, 21:58
dmit2222 dmit2222 вне форума
Новичок
 
Регистрация: 16.04.2008
Сообщения: 51
Репутация: 10
По умолчанию DBGrid

Как зафиксировать размер колонок, чтобы при запуске программы они не становились длинными?
Ответить с цитированием
  #2  
Старый 21.11.2011, 22:15
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Пропиши их размер в Design-Time или, если удобнее, тоже самое в Run-Time, но уже в коде.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 21.11.2011, 22:39
dmit2222 dmit2222 вне форума
Новичок
 
Регистрация: 16.04.2008
Сообщения: 51
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
Пропиши их размер в Design-Time или, если удобнее, тоже самое в Run-Time, но уже в коде.
Извиняюсь за тупой вопрос, но где именно этот design-time?
Ответить с цитированием
  #4  
Старый 21.11.2011, 22:42
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Клик правой кнопкой мышки на DBGrid, появится окошко для создания/выбора колонок. В Object Inspector-е выставляем ширину колонки.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #5  
Старый 21.11.2011, 22:52
t116 t116 вне форума
Новичок
 
Регистрация: 29.06.2011
Адрес: Луганск
Сообщения: 92
Версия Delphi: Delphi7
Репутация: выкл
По умолчанию

Я делал так, может и не правильно
Код:
procedure TMainForm.FormCreate(Sender: TObject);
var
 i:integer;
 
begin
  for i:=2 to 32 do
   DBGrid1.Columns[i].width:=40;
  for i:=34 to 36 do
   DBGrid1.Columns[i].Width:=30;
   DBGrid1.Columns[33].Width:=190;
   DBGrid1.Columns[37].Width:=150;
Скорее всего, что не правильно, но работает. При создании колонки получаются заданной ширины

Последний раз редактировалось t116, 21.11.2011 в 22:55.
Ответить с цитированием
  #6  
Старый 21.11.2011, 22:58
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Правильно, это называется Run-Time режим.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 21.11.2011, 23:02
dmit2222 dmit2222 вне форума
Новичок
 
Регистрация: 16.04.2008
Сообщения: 51
Репутация: 10
По умолчанию

У меня вся загвозка в том,что я не в design-time и не в run-time ничего этого раньше не прописывал. Просто мышкой растянул как надо и все. А теперь создал новый DBgrid мышкой растянул как надо, но при запуске длина колонок сбрасывается на значения по умолчанию.
Ответить с цитированием
  #8  
Старый 21.11.2011, 23:08
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

То что ты растянул, будет работать, но так неудобно -точный размер подогнать сложно.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.

Последний раз редактировалось angvelem, 21.11.2011 в 23:14.
Ответить с цитированием
  #9  
Старый 21.11.2011, 23:18
dmit2222 dmit2222 вне форума
Новичок
 
Регистрация: 16.04.2008
Сообщения: 51
Репутация: 10
По умолчанию

Цитата:
Сообщение от angvelem
То что ты растянул, будет работать, но так неудобно -точный размер подогнать сложно.
В том то и дело, что всегда работало, а вот теперь не работает.
Ответить с цитированием
  #10  
Старый 22.11.2011, 00:33
Snake22 Snake22 вне форума
Активный
 
Регистрация: 20.02.2011
Сообщения: 374
Репутация: 744
По умолчанию

после того как поключил базу к дбгриду.жмакни двойным кликом на этот грид,и в окошке Edititng DBGreed columns нажми add all fields и потом меняй размер,и тогда при запуске он останется

Последний раз редактировалось Snake22, 22.11.2011 в 00:36.
Ответить с цитированием
  #11  
Старый 23.11.2011, 10:02
Last Living Man Last Living Man вне форума
Прохожий
 
Регистрация: 10.11.2011
Сообщения: 25
Репутация: 513
По умолчанию

Надо написать процедуру авторазмера колонок (например по массиву процентов типа byte) и вызывать при OnResize того на чем лежит грид.

Примерно будет выглядеть так:
Код:
procedure AutoSizeDBGridColumns(DBGrid: TDBGrid; ColPercents: array of byte);
и вызывать:
Код:
AutoSizeDBGridColumns(DBGrid1, [20, 30, 50]);
Ответить с цитированием
  #12  
Старый 23.11.2011, 22:09
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от Last Living Man
Надо написать процедуру авторазмера колонок ...
Ну молодец, а чего же код не привёл, только подразнил ТС?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #13  
Старый 24.11.2011, 06:22
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от Last Living Man
Код:
procedure AutoSizeDBGridColumns(DBGrid: TDBGrid; ColPercents: array of byte);
А что если понадобиться задать ширину столбца больше 255?

Я бы посоветовал такую конструкцию:
Код:
var i: integer;
...
for i:= 0 to DBGrid1.Columns.Count-1 do
  case i of
  0: DBGrid1.Columns[i].Width:= 200;
  1: DBGrid1.Columns[i].Width:= 100;
  2: DBGrid1.Columns[i].Width:= 80;
  end;
И сколько столбцов столько и случаев описать. Case удобен также для случаев когда нескольким столбцам нужно задать одинаковую ширину:
Код:
case i of
0,2,3: DBGrid1.Columns[i].Width:= 200;
1,4: DBGrid1.Columns[i].Width:= 100;
end;
__________________
Google в помощь
Ответить с цитированием
  #14  
Старый 24.11.2011, 13:48
Last Living Man Last Living Man вне форума
Прохожий
 
Регистрация: 10.11.2011
Сообщения: 25
Репутация: 513
По умолчанию

Цитата:
Сообщение от angvelem
Ну молодец, а чего же код не привёл, только подразнил ТС?
Мда, я тебе идею оптимальную подал и ты не можешь такую элементарщину сам написать, прям подай да принеси... Кстати на сайте во многих статьях специально допущены ошибки чтоб человек сам думал, а не копипастил все подряд...

Цитата:
Сообщение от Ildar-tsr
А что если понадобиться задать ширину столбца больше 255?
Цитата:
Сообщение от Last Living Man
Надо написать процедуру авторазмера колонок (например по массиву процентов типа byte) и вызывать при OnResize того на чем лежит грид.
Ответить с цитированием
  #15  
Старый 24.11.2011, 14:16
Аватар для Ildar-tsr
Ildar-tsr Ildar-tsr вне форума
Местный
 
Регистрация: 09.08.2011
Адрес: г.Сургут, ХМАО
Сообщения: 453
Репутация: 7402
По умолчанию

Цитата:
Сообщение от Last Living Man
Надо написать процедуру авторазмера колонок (например по массиву процентов типа byte) и вызывать при OnResize того на чем лежит грид.

Да точно, не внимательно прочитал, потому что не ожидал, что кто-то может предложить задавать ширину столбцов грида процентно... Идея изначально ужасная, что получается в относительно маленьком окошке ничего видно не будет. Меня бы за такую идею на производстве пользователи убили бы наверно.
__________________
Google в помощь
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:13.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025