![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Модальные окна [D7, XP]
Nastya © (2008-11-21 01:10:00)Помогите плз, не знаю как быть
---------------------------------
if (MyDialogForm.ShowModal = mrOk) then
begin
DModule.IBQuery.Close;
DModule.IBQuery.SQL.Text := 'delete from orders where id = '+ IntToStr (OrderBoard[TSpeedButton(Sender).Tag].ord_id);
DModule.IBQuery.ExecSQL;
DModule.IBTransaction.CommitRetaining;
DModule.IBTransaction.Active:=True;
MainF.OpenData;
DelControls;
FormOrders;
//FormShow(ShowAbonOrdersF);
end;
---------------------------------------
в этом кусочке кода вызывается модальное окно с кнопкой у которой
modalResult = mrOk и по нажатию на которой вылетает исключение AccessViolation, а сам код в условии работает нормально если не пользовать модальное окно, а просто делать эту форму MyDialogForm.Visible: = true,
помогите плз, что-то тут неладное с этими модальными формами и модал-резултами!
Германн (2008-11-22 02:24:00) [1]
> для пользования модальных форм есть ж/б шаблон:
Железобетонный?
:)
Anatoly Podgoretsky (2008-11-22 00:01:00) [2]> Leonid Troyanovsky (21.11.2008 23:45:12) [12]
И глобальную переменную, при том сразу же.
Leonid Troyanovsky (2008-11-21 23:45:00) [3]
> Nastya (21.11.08 01:56) [8]
> к примеру
> procedure TShowAbonOrdersF.DelControls;
А зачем на такая процедура?
Парент и так уничтожит собс-ные контролы при своей кончине.
Последующий FormOrders;//а эта создает - жизнь после смерти.
Да, и, во-ще, для пользования модальных форм есть ж/б шаблон:
with TMyModalForm.Create(nil) do
try
..
ShowModal;
..
finally
Free;
end;
Ну, и ясное дело, что надо удалить оные формы из auto-created.
--
Regards, LVT.
Сергей М. (2008-11-21 19:32:00) [4]
> Не важно
Ну раз не важно, то тряси бубен.
Nastya (2008-11-21 18:58:00) [5]
> А где код FormOrders ?
Не важно не работает и без него,
можно конечно, как исчезло модальное окно сделать кнопку на вызывающей форме для обновления таблички заказов
begin
DelControls; //чистит конкролы
FormOrders;//а эта создает
end;
Этот вариант работает безотказно, но не устраевает, что-то тут с модал-резултами!
Сергей М. (2008-11-21 08:40:00) [6]
> эти две процедуры не хотят работь
А где код FormOrders ?
> из за них вылетает ошибка
Что, вот прямо так и говорит "я, ошибка, вылетаю таким-то авиарейсом" ?)
Nastya (2008-11-21 01:56:00) [7]вот эти две процедуры не хотят работь, из за них вылетает ошибка
они описаны в вызывающем модуле
DelControls; FormOrders;
работеют нормально сами по себе:))
к примеру
procedure TShowAbonOrdersF.DelControls;
var
i: Integer;
begin
if(ScrollBox1.ControlCount > 0) then
begin
SetLength(OrderBoard, 0);
for i:= 0 to ScrollBox1.ControlCount - 1 do
ScrollBox1.Controls[0].Free;
end;
end;
Nastya (2008-11-21 01:50:00) [8]Да то работало "пол дня" номально, потом опять глючить начало, хотя в коде ничего не меняла
KilkennyCat (2008-11-21 01:48:00) [9]Это наводящие вопросы. Мало информации, по крайней мере, для меня. Но предполагаю, что идет путаница, и какой-то поток прекращает свое существование не совсем когда надо...
Nastya (2008-11-21 01:46:00) [10]
> принадлежит MyDialogForm?
> тогда может имеет смысл вызывать MyDialogForm из нее?
Чего это вы начали вопросы задавать?!! Отвечайте!:))))
Nastya (2008-11-21 01:44:00) [11]
> тогда может имеет смысл вызывать MyDialogForm из нее?
попробую, правда вот еще что: MyDialogForm вызывается тоже из модальной формы(showModal)
KilkennyCat (2008-11-21 01:39:00) [12]тогда может имеет смысл вызывать MyDialogForm из нее?
Nastya (2008-11-21 01:36:00) [13]DModule - это отдельная форма:TDataModule
KilkennyCat (2008-11-21 01:26:00) [14]
> DModule
принадлежит MyDialogForm?