![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать. чтобы 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; в кнопке редактировать? А по умолчанию в свойствах тру?