Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DBComboBox, или как оно работает 
:(
    Опции темы
Virus
Дата 21.6.2003, 14:39 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Люди как работает DBComboBox или BDListBox почему он сразу не отражает данные которые прикрепленны к DataField?
  Вверх
&-ray
Дата 21.6.2003, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

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



DBComboBox и BDListBox сами не формируются, их надо заполнять самому.
Если хочешь, чтобы списки формировались автоматически, то вместо этих компонентов используй DBLookupComboBox или DBLookupListBox


--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
Cashey
Дата 22.6.2003, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


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

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



Цитата

DBComboBox и BDListBox сами не формируются, их надо заполнять самому.
Если хочешь, чтобы списки формировались автоматически, то вместо этих компонентов используй DBLookupComboBox или DBLookupListBox

Так-то оно так вот даже код который можно использовать для загрузки данных в свойство Items автоматически

Код

procedure TForm1.FormActivate(Sender: TObject);
var a: Cardinal;
begin
for a:=1 to table1.RecordCount do  begin
DBListBox1.Items.Add(table1.FieldByName('name').AsString);
table1.next;
end;
end;


Вот только хотелось бы узнать для чего созданно св-во DataField. А компоненты DBLookupComboBox и DBLookupListBox предназначены немного для другого.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
lider07
Дата 22.6.2003, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 11.6.2003
Где: Бишкек

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



В практике программирования довольно часто встречается ситуация когда информация, предназначенная для отображения в имеющемся компоненте, не помещается по длине. С подобным обычно сталкиваются в работе с базами данных. В таких случая выручают всплывающие
подсказки – Hint. Но, в некоторых случаях, даже такая возможность не спасает. К таким ситуациям можно отнести работу с выпадающим списком в DBComboBox. Представьте, что размер поля увеличился, а изменить ширину DBComboBox на форме, по тем или иным причина
м, нет возможности. Конечно, можно увеличить ширину выпадающего списка. Но выглядит это не всегда красиво да и не делает чести разработчику. Предлагаемая идея позволит создать более изящный компонент. Взгляните на рисунок:




В демонстрационном примере в выпадающем списке появляется всплывающая подсказка для строки не помещающейся по длине.

При работе с Hint нужно помнить – использовать ToolTip из API, бесполезная затея. Delphi игнорирует любые попытки работы ним. Для этих целей в Delphi предусмотрен класс – THintWindow.

В своем компоненте объявите FTipHint:



--------------------------------------------------------------------------------
type
TVSComboBox = class(TCustomComboBox)

private
FHint: THintWindow;

protected
procedure WMCTLCOLORLISTBOX(var Message: TMessage); message WM_CTLCOLORLISTBOX;

и не забудьте выполнить инициализацию в конструкторе вашего компонента:



--------------------------------------------------------------------------------

begin
inherited Create(AOwner);
FHint := THintWindow.Create(Self);


Чтобы получить информацию об активной строке в выпадающем списке ComboBox перехватите сообщение WM_CTLCOLORLISTBOX. В процедуре сообщения анализируйте - если длина строки больше ширины выпадающего списка – передайте "длинную" строку в ваш Hint и активируй
те его:



--------------------------------------------------------------------------------
FHint.ActivateHint(TextRC, Items[ItemIndex]);

где
TextRC – прямоугольник для строки подсказки
Items[ItemIndex] – "длинная" строка из выпадающего списка

Если активная строка в выпадающем списке "короткая" – спрячьте Hint:



--------------------------------------------------------------------------------
FHint.ReleaseHandle;

Для получения подробной информации о классе THintWindow воспользуйтесь Help из Delphi.



PM MAIL ICQ MSN   Вверх
&-ray
Дата 22.6.2003, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

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



Цитата
Вот только хотелось бы узнать для чего созданно св-во DataField


Это свойство связывает данный компонент с полем связанного набора данных. При изменении item'а в компоненте, соответственно изменяется содержимое соответствующего поля в активной записи.


--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
Virus
Дата 24.6.2003, 15:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата

Это свойство связывает данный компонент с полем связанного набора данных. При изменении item'а в компоненте, соответственно изменяется содержимое соответствующего поля в активной записи.

Спасибо, но не мог бы ты по-подробнее рассказать об отличии этого компонента от обычного CobboBox'а
  Вверх
eof
Дата 24.6.2003, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



smile.gif свойством DataField и DataSource в первую очередь...
при изменение значения DBComboBox его DataSource.DataSet переходит в режим редактирования. Зничение которое выбрано из списка присваевается DataField.NewValue, при смене записи DataSource.DataSet пытается сделать Post. Короче это как DBEdit со списком предлагаемых вариантов заполнения поля...

извеняюсь, но подробнее чем &-ray врятли можно ответить

Это сообщение отредактировал(а) eof - 24.6.2003, 15:49
PM MAIL   Вверх
forest
Дата 29.4.2004, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



jib,cz

Это сообщение отредактировал(а) forest - 29.4.2004, 23:36
PM MAIL   Вверх
eugenko
Дата 10.1.2006, 19:56 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Люди хоть кто-нибудь.... хоть когда-нибудь.... доставал данные из DBComboBoxa ??? Как туда их запихнуть разжевано до мелочей... а достать?? а если еще и в переменную передать - так тогда я вообще буду премного благодарен!!!
  Вверх
FRAGNATIC
Дата 10.1.2006, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


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

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



eugenko
а DBComboBox1.Text; ваще ни как?
или чёт я не понял чё те надо-то конкретно?
PM MAIL   Вверх
Guest
Дата 11.1.2006, 10:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Вобщем задача следующая: есть Оракловый запрос, результат которого выводится в DBComboBox, так вот при позиционировании на какую-либо запись в комбобоксе хотелось бы чтобы строку на которой позиционируешься можно было присваивать в переменную. Вот. А я все обчитал и обыскался а как это реализовать - непойму smile
  Вверх
Albinos_x
Дата 11.1.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

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



Цитата(Guest @ 11.1.2006, 10:11 Найти цитируемый пост)

в комбобоксе хотелось бы чтобы строку на которой позиционируешься можно было присваивать в переменную.

нифига не понятно... тебе нужно итем сохранить?


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
eugenko
Дата 11.1.2006, 12:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Разобрался!!! Надо юзаить DBLookupComboBox. Правильно настраиваем KeyField, ListField и ListSource - и будет счастье smile
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


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

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

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


 




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


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

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