Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
ВнизЗаполнение данных формы из справочника Найти похожие ветки
← →
TAN_K (2004-11-18 11:31) [0]Господа , здравствуйте !
Есть форма - например , личная карточка работника . Данные : место рождения , перемещения , место работы , профессия и т. д. эаполняем из соответствующих справочников .
1 форма - список работников .
Например , надо внести перемещения работника .
2 форма - перемещения . Данные ввожу , редактирую , удаляю с помощью модальной формы (диалога) - форма 3 .
В форме 3 есть поля :
- подразделение (поле 1)
- профессия и т.д. (поле2 , 3 , 4 ...)
Значения полей получаю из справочникка - форма 4 .
Форма 4 одна для нескольких справочников (динамическое описание Grida и Query).
Когда вызываю справочник в поле 1 , форма 4 закрывается успешно - Form4.Close .
Когда вызываю справочник в поле 2 , форма 4 не закрывается , возникает ошибка на операторе Form4.Close :
Acces violation at adress 0000....4 . Write of adres 00E7b410 .
В чем причина - не могу понять .
Может быть кто-то поможет советом .
Всем спасибо .
← →
ЮЮ © (2004-11-18 11:43) [1]Тебе спасибо! У тебя проект и IDE, а у нас только строчка Form4.Close;
:)
Form4 открывается модально? В юните какой формы стоит этот чудо оператор? Покажи оператор создания Form4
← →
YurikGL © (2004-11-18 11:49) [2]>Покажи оператор создания Form4
Лучше уж Form4.onClose..
← →
sniknik © (2004-11-18 12:04) [3]> Тебе спасибо! У тебя проект и IDE, а у нас только строчка Form4.Close;
должен понять! инфы на ответ достаточно. ;о))
ошибка в 17й строке!
кстати с точным адресом практически > at adress 0000....4
осталось сделать Find Error и узнаеш причину, может быть.
← →
TAN_K (2004-11-18 12:06) [4]Form3 - модальная форма диалога (OkBottomDialog) , вызывается из Form2 - список перемещений - стандартная форма .
Еdit1 (поле 1) - кликаю клавишей F4 - вызов справочника - Form4.ShowModal . Form4 - стандартная форма , создается проектом , в данном случае вызывается в модальном режиме.
Form3 - код в Edit1 - KeyPress :
if (Key = VK_F4) then begin
PER := 77;
Form4.ShowModal;
Edit1.Text := naimp;
end;
В Form4 - кнопка выбора или клик мышью на записи :
case PER of
....
77:NAIMP := IBQuery1["NAIM"];
...
end;
try
finally
IBQuery1.Close;
IBQuery1.UnPrepare;
IBTransaction1.Active := False;
IBTransaction2.Active := false;
OKBottomDlg3.Free; - форма редактирования записей справочника , создается при открытии (Create) Form4 - Application(...)
Form4.Close;
end;
← →
sniknik © (2004-11-18 12:14) [5]> создается при открытии (Create)
владелец указан? ну там Create(self) или Create(nil) стоит? если поевое то освобождение не нужно.
и кстати Close тоже не нужно раз по ShowModal вызывается.
← →
ЮЮ © (2004-11-18 12:15) [6]вылетает на самом деле на
OKBottomDlg3.Free;
т.к. создается один раз (при создании Form4), а пытается уничтожить много раз (при каждом закрытии Form4)
← →
TAN_K (2004-11-18 13:42) [7]ЮЮ - спасибо большое , я уже думала (потеряла несколько дней), что-то с FREE , но хотела освободить память , т.к. приложение большое , форм много , а с фреймами работать еще не научилась .
Сделала , создание модальных диалоговых форм автоматически при создании проекта , удалила OKBottomDlg3.Free; и все получилось .
← →
ЮЮ © (2004-11-19 04:07) [8]>Сделала , создание модальных диалоговых форм автоматически при создании проекта , удалила OKBottomDlg3.Free; и все получилось .
Надо было наоборот, убрать Form4 из списка автоматически создаваемых, а создвать его перед показом.
OKBottomDlg3.Free, естественно, тоже должно стоять в месте вызова диалога, например:
dlgFrm := TDlgFrm.Create(nil);
try
dlgFrm.ModalShow;
Case dlgFrm.ModalResult of
mrOk: ...
else
...
end;
finally
dlgFrm.Free;
dlgFrm := nil;
end;
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.042 c