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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2010, 12:14   #1
altcore
Пользователь
 
Регистрация: 31.03.2010
Сообщений: 38
По умолчанию Как задать ширину полей DropDownBox для TDBLookupComboboxEh?

Нужно автоматически подбирать ширину полей.
На событие OnDropDown повесил примерно такую процедуру:

Код:
 
procedure TCreateControls.MyDropDown(Sender: TObject);
var i, wd: Integer;
begin
   wd:= 0;
   with TDBLookupComboboxEh(Sender) do
      begin
         for i:= 0 to DropDownBox.Columns.Count -1 do
            begin
               DropDownBox.Columns.Items[i].OptimizeWidth;
               wd:= wd + DropDownBox.Columns.Items[i].Width;
            end;
         DropDownBox.Width:= wd;
      end;
end;
По идее ширина столбцов и самого выпадающего списка должна оптимизироваться под самое большое значение, однако этого не происходит. Может укажете на ошибку или предложите другой способ?
altcore вне форума Ответить с цитированием
Старый 05.04.2010, 10:48   #2
altcore
Пользователь
 
Регистрация: 31.03.2010
Сообщений: 38
По умолчанию

ничего не посоветуете?
altcore вне форума Ответить с цитированием
Старый 05.04.2010, 11:21   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Я что-то сути вопроса не очень понял..
Цитата:
По идее ширина столбцов и самого выпадающего списка должна
Каких столбцов? В гриде?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 05.04.2010, 15:02   #4
altcore
Пользователь
 
Регистрация: 31.03.2010
Сообщений: 38
По умолчанию

Имеется ввиду ширина полей в выпадающем списке(DropDownBox).
Изображения
Тип файла: jpg ddb.JPG (36.0 Кб, 87 просмотров)
altcore вне форума Ответить с цитированием
Старый 05.04.2010, 17:19   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

А вы уверены, что там используется именно TDBLookupComboBoxEh? Мне кажется там какой-то специальный и другой компонент. Сомневаюсь, что TDBLookupComboBoxEh умеет такое..
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 05.04.2010, 17:30   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

а что происходит если сделать тупо так?
Код:
DropDownBox.Width:=100;
soleil@mmc вне форума Ответить с цитированием
Старый 06.04.2010, 10:44   #7
altcore
Пользователь
 
Регистрация: 31.03.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
А вы уверены, что там используется именно TDBLookupComboBoxEh? Мне кажется там какой-то специальный и другой компонент. Сомневаюсь, что TDBLookupComboBoxEh умеет такое..
Естественно уверен, т.к. это моя форма. Умеет что? Выпадающий список из нескольких полей?

Код:
    
ctrlLookup := TDbLookupComboBoxEh.Create(Self.Owner);
with ctrlLookup do begin 
...
     DropDownBox.Columns.Add.FieldName := 'KOD';
     DropDownBox.Columns.Add.FieldName := 'NAME';
     DropDownBox.Columns[0].Title.Caption := 'Код';
     DropDownBox.Columns[1].Title.Caption := 'Наименование';
...
--------------------------------------------------------------

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
а что происходит если сделать тупо так?
Код:
DropDownBox.Width:=100;
Изменится ширина выпадающего списка. Естественно, если задать достаточное значение, то все будет нормально отображаться. Просто наименования сильно рознятся по длине. Хочется более элегантно сделать.

Последний раз редактировалось altcore; 06.04.2010 в 10:52.
altcore вне форума Ответить с цитированием
Старый 06.04.2010, 11:40   #8
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

такая элегантность приведет к тому, что в пределе наименования просто не влезут в экран и полоса прокрутки тоже
рекомендую еще ввести константы по максимальному размеру полей в отдельности и для всего списка в целом и при необходимости ресетить значения вылезшие за максимум
soleil@mmc вне форума Ответить с цитированием
Старый 06.04.2010, 17:26   #9
altcore
Пользователь
 
Регистрация: 31.03.2010
Сообщений: 38
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
такая элегантность приведет к тому, что в пределе наименования просто не влезут в экран и полоса прокрутки тоже
рекомендую еще ввести константы по максимальному размеру полей в отдельности и для всего списка в целом и при необходимости ресетить значения вылезшие за максимум
Не понимаю я вас

DropDownBox смещается влево, если его ширина не позволяет отобразится вправо от Lookup'a. Я могу задать ширину вручную, но тогда для коротких наименований будет слишком широкое поле. Вы мне предлагаете для каждого контрола задать константу для макс. ширины? А смысл какой в этом? Может еще по всему справочнику пробежаться и максимальные значения найти?! И что вы подразумеваете под "ресетить значения вылезшие за максимум"?

Меня интересует вопрос - должен ли метод OptimizeWidth делать то, что я хочу. Если да, то что я делаю не правильно?
altcore вне форума Ответить с цитированием
Старый 06.04.2010, 18:26   #10
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от altcore Посмотреть сообщение
Если да, то что я делаю не правильно?
не читаешь хелпы/доки (на крайняк копнуть сурсы компонента)
soleil@mmc вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объеденение полей запроса в для отображения нескольких полей в одном списке mrCreator Microsoft Office Access 3 08.08.2009 00:53
Как задать параметры для всех элементов формы? Klim Bassenger Microsoft Office Excel 2 10.07.2009 15:44
Как задать стиль для title гиперссылки Romms HTML и CSS 2 26.04.2009 22:07
как в стрингриде задавать ширину(высоту) ячеек, а для отдельных строк (столбцов)) sdp Компоненты Delphi 3 20.06.2007 23:02