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

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

Одна форма для всех таблиц


quadronik ©   (2005-09-25 01:52:00) 

Решил сэкономить на размере приложения и поступил так:
создал одну форму для заполнения нескольких таблиц. На форму положил DBEdit и при OnShow формы написал так:
if flag_tbl=1 then //flag_tbl -флаг подключаемой таблицы
 begin
 dbedit.DataSource:=datamodule1.DataSource_regions;
 dbedit.DataField:='region';
 end;
if flag_tbl=2 then
 begin
 dbedit.DataSource:=datamodule1.DataSource_city;
 dbedit.DataField:='city';
 end; и т.д.
Заметил такую ерунду:если открыть форму первый раз, то все нормально(DBEdit правильно настраивается на нужную таблицу), но если второй, третий и т.д. раз и для другой таблицы - то не происходит переиницилизация свойств DataSource и DataField, и выводится сообщение <DBEdit: Field 'region' not found>(или <DBEdit: Field 'city' not found> - зависит от того к какой таблице был подключен DBEdit последний раз) .
При повторном открытии формы для этой же таблицы - никаких ошибок (DataSource и DataField настроены правильно). Ошибка повторяется если попробовать открыть форму для другой таблицы.
Проще говоря: Дельфи ругается, что не может найти поля той таблицы, которая была подключена последней раз.
ЗЫ. Прощу прощения, если объяснил недоходчиво. Пытался прорисовать всю картину происходящего.
Спасибо.


quadronik   (2005-09-26 06:00:00) [1]

>Prohodil Mimo
>не забывай устанавливать DataField:=''. перед сменой DataSource

Именно в этом и была загвоздка, теперь все заработало
Спасибо, что выручили!.


Prohodil Mimo   (2005-09-25 16:35:00) [2]

не забывай устанавливать DataField:=''. перед сменой DataSource

begin
  dbedit.DataField:='';
dbedit.DataSource:=datamodule1.DataSource_regions;
dbedit.DataField:='region';
end;

Я создаю процедуру, которая делает всё что надо, а потом открывает форму.

Procedure FActivate;
Begin
{
тут делаем всё что надо
}
  form1.showmodal;
End;


Johnmen   (2005-09-25 01:57:00) [3]

Видимо, ОнШоу генерится только один раз...
Посему, что значит "открыть форму" ?


Наверх

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