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

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

DbComboBox [D6, Paradox]


Ag2002 ©   (2002-07-19 10:21:00) 

Подскажите пожалуйста, вот есть компонент DbComboBox, в него при старте формы из файла грузятся зачения, и поль-ель, должен выбирать из списка этих значений, но если ни одно значение не подходит, то он в этом же поле вводит свой вариант, ВОПРОС: как этот введенный вариант сохранить, в этот же файл чтобы при загрузке это ввденное значение сохранялось ?


kaif   (2002-07-20 01:07:00) [1]

Только одно но.
Добавлять в справочник так можно. А как же удалять или редактировать? Все равно придется для этой цели окно вызывать. Поэтому я считаю, что идеальное решение - применить компонент, у которого 2 кнопки имеются: одна для выпадающего списка, другая - с многоточием - для вызова окна справочника (добавление, удаление, редактирование). Такие компоненты имеются в RxLib и в других пакетах. В конце концов, можно радом с комбо-боксом кнопку поставить для такой цели. Извращаться не надо. Никто это не оценит. И еще совет: не использовать DBComboBox, а использовать DBLookUpComboBox. И справочник в отдельной таблице хранить. И ссылку на него цифровую иметь...


Ag2002   (2002-07-19 18:17:00) [2]

А чё нафиг целую таблицу для мак 10 записей, в крайнем случае если что можно и файл шифрануть !!!!


MsGuns   (2002-07-19 14:40:00) [3]

Так справочник просто в текстовом файле ? Тогда понятно..
Оригинально, однако..))


Ag2002   (2002-07-19 14:18:00) [4]

Люди вы меня не так поняли, мне нужно было из текстового файла записли читать и тудаже записывать, но я уже свой собственный код написал, вот работает отлично, надо его поставить, на событие выхода из компонента (кто улудшит буду благодарен):
var
i,k:integer;
begin
k:=0;
if DBComboBoxEh2.Text <> "" then
begin
for i:=0 to DBComboBoxEh2.Items.Count-1 do
if DBComboBoxEh2.Items.Strings[i] <>
DBComboBoxEh2.Text then inc(k);
if k = DBComboBoxEh2.Items.Count then
begin
DBComboBoxEh2.Items.Add(DBComboBoxEh2.Text);
DBComboBoxEh2.Items.SaveToFile("dogovora.dat");
end;
end;
end;


MsGuns   (2002-07-19 13:04:00) [5]

Это вообще весьма сомнительный способ пополнения справочника.
Я обычно поступаю тупее: никаких комбобоксов на залукапенное поле, а вместо него модальную форму с гридом с таблицей справочника - пополняй, выбирай, изменяй (но не ключи - это отдельная песня !)
А все эти стандартные изгаляции с BDE-шными лукапами - отстой, т.к.:
- во-первых, не дают просмотреть ВСЕ колонки справочника
- во-вторых, ни фильтров, ни норм.поиска (юзер запарится просматривать прайс из 5000 позиций по кодам товара или даже по наименованиям, если он точно НЕ ПОМНИТ, как ОНО обзывается)
- в-третьих, никакой возможности пополнения !


Lola   (2002-07-19 12:44:00) [6]


> MsGuns ©
А я вижу в предложенном коде

> // и append + post в базу
И разве список тоже не должен быть обновлен? Или для этого надо перегрузить форму?


MsGuns   (2002-07-19 12:22:00) [7]

> Verokko
Надо пополнить не список, а саму таблу (справочник)
Здесь надо добавлять запись в саму таблицу ?


Verokko   (2002-07-19 11:56:00) [8]

По идее надо отследить событие OnKeyPress, там запомнить текущее состояние Cb:=DBComboBox1.Text.
Затем OnExit:
procedure TVvod.DBComboBox1Exit(Sender: TObject);
begin
If Cb<>DBComboBox1.Text then begin
Cb_new:= DBComboBox1.Text;
DBComboBox1.Items.Append(Cb_new);
// и append + post в базу
end;
end;

Вроде так.


Наверх

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