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