Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сделать. чтобы ComboBox-ы заполнились и "зафиксировались"?


Guriev ©   (2008-01-24 12:00:00) 

Есть БД = Access + Delphi (ADO). При запуске программы появляется таблица-список (DBGrid), по двойному щелчку на определённой строке, открывается уже более объёмное окно (12 -Edit, 7 - ComboBox, 5 - Memo...) на котором также есть кнопка "Редактировать".
Помогите реализовать следующее:
Как сделать так, чтобы в режиме просмотра строки (записи) - ДО нажатия на "Редактировать", ComboBox-ы заполнились, но "зафиксировались" на определённой записи (т.е. были как only read Edit), а в режиме Редактирования бы отключалась!?


Guriev   (2008-01-25 15:27:00) [1]


> DiamondShark ©   (25.01.08 11:57) [14]
>
> > с ReadOnly:=True

Ты прав... отчасти!
Нельзя сменить в выпадающем списке значение (хотя неприятно уже то, что этот список можно вызвать) при ReadOnly:=True,
НО! - "Backspace" срабатывает! А вот Active:=false уже у него нет!


DiamondShark   (2008-01-25 11:57:00) [2]


> с ReadOnly:=True

Сам себе ответил


Guriev   (2008-01-24 17:56:00) [3]


> Что значит "зафиксировать"? В комбобоксе будет значение
> из поля записи.

Но, если пользователь случайно раскроет выпадающий список, или ненароком порутит колёсико мыши... ComboBox же заполнен!
Т.е. на время просмотра сделать ComboBox - Edit-ом с ReadOnly:=True


DiamondShark   (2008-01-24 16:28:00) [4]


> Но тогда как потом установить в нём нужное значение без
> дублирования?

if TDBComboBox1.Items.IndexOf(s) < 0 then TDBComboBox1.Items.Add(s)


> И, вроде-бы, вопрос простой, НО, - как потом в этом значении
> DBComboBox зафиксировать?

Что значит "зафиксировать"? В комбобоксе будет значение из поля записи.


Guriev   (2008-01-24 16:08:00) [5]

И, вроде-бы, вопрос простой, НО, - как потом в этом значении DBComboBox зафиксировать?


Guriev   (2008-01-24 16:06:00) [6]

Да, TDBComboBox!...

> 1. Если комбобоксы простые или TDBComboBox, то открыть вспомогательный
> датасет, пробежаться по нему, переписать значения в Items
> комбобокса

Но тогда как потом установить в нём нужное значение без дублирования?


DiamondShark   (2008-01-24 13:18:00) [7]


> Как заполнить Combobox из столбца базы? И потом сопоставлять
> ItemIndex c записью?

Это очень сильно отличается от исходного описания задачи.

1. Если комбобоксы простые или TDBComboBox, то открыть вспомогательный датасет, пробежаться по нему, переписать значения в Items комбобокса
2. Использовать TDBLookupComboBox


Guriev   (2008-01-24 13:13:00) [8]


> И что у тебя не получается?

Как заполнить Combobox из столбца базы? И потом сопоставлять ItemIndex c записью?


DiamondShark   (2008-01-24 13:07:00) [9]

И что у тебя не получается?


Guriev   (2008-01-24 13:05:00) [10]

Смысл в чём? - Зачем создавать 2 формы?!?!
Я хочу создать одну! Во время просмотра всё ReadOnly:=True, и чтобы из-за случайного движения мыши не сбилась информация в Combobox! Но при этом хочу сделать, чтобы пользователь мог быстро переключиться в режим редактирования (все значения остались исходными(как в просмотре), но те-же Combobox-ы уже заполнены неповторяющимися значениями из базы и включена возможность выбора другово)!


Mariya   (2008-01-24 12:54:00) [11]


> без возможности открыть выпадающий список

он список откроет.
> или изменить

но изменить нельзя будет


Mariya   (2008-01-24 12:52:00) [12]

Если ты правильно связал грид с тэйблом и датасорсом, и комбобокс с "главным тэйблом" у тебя он так и так при выборе твоего Иванова, в комбобоксе должен показать, данные, принадлежащие Иванову.


Guriev   (2008-01-24 12:48:00) [13]


> DBLookupCombobox1.ReadOnly:=False; в кнопке редактировать?
>  А по умолчанию в свойствах тру?

Есть одно НО:
- при запуске этой формы просмотра/редактирования заполняются Combobox-ы не повторяющимися записями из определённого столбца, а ЗАТЕМ хотелось бы "зафиксировать" на конкретной строчке, соответствующей записи в таблице: пр. выбрана в базе запись №333 об Иванове, Combobox заполнился (Петров, Сидоров, Иванов, Смирнов) - 3 строка - "Иванов" должна выбраться аавтоматически и без возможности открыть выпадающий список, или изменить!


DiamondShark   (2008-01-24 12:42:00) [14]


> ДО нажатия на "Редактировать", ComboBox-ы заполнились, но
> "зафиксировались" на определённой записи (т.е. были как
> only read Edit), а в режиме Редактирования бы отключалась!
> ?

Написанное означает либо, что комбобоксы тут вообще не нужны, либо, что с русским языком проблемы.


Mariya   (2008-01-24 12:04:00) [15]

DBLookupCombobox1.ReadOnly:=False; в кнопке редактировать? А по умолчанию в свойствах тру?


Наверх

Титульная страница Поиск, карта сайта Написать письмо