Текущий архив: 2009.01.04;
Скачать: CL | DM;
Вниз
Модальные окна Найти похожие ветки
← →
Nastya (2008-11-21 01:10) [0]Помогите плз, не знаю как быть
---------------------------------
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,
помогите плз, что-то тут неладное с этими модальными формами и модал-резултами!
← →
KilkennyCat © (2008-11-21 01:26) [1]
> DModule
принадлежит MyDialogForm?
← →
Nastya (2008-11-21 01:36) [2]DModule - это отдельная форма:TDataModule
← →
KilkennyCat © (2008-11-21 01:39) [3]тогда может имеет смысл вызывать MyDialogForm из нее?
← →
Nastya (2008-11-21 01:44) [4]
> тогда может имеет смысл вызывать MyDialogForm из нее?
попробую, правда вот еще что: MyDialogForm вызывается тоже из модальной формы(showModal)
← →
Nastya (2008-11-21 01:46) [5]
> принадлежит MyDialogForm?
> тогда может имеет смысл вызывать MyDialogForm из нее?
Чего это вы начали вопросы задавать?!! Отвечайте!:))))
← →
KilkennyCat © (2008-11-21 01:48) [6]Это наводящие вопросы. Мало информации, по крайней мере, для меня. Но предполагаю, что идет путаница, и какой-то поток прекращает свое существование не совсем когда надо...
← →
Nastya (2008-11-21 01:50) [7]Да то работало "пол дня" номально, потом опять глючить начало, хотя в коде ничего не меняла
← →
Nastya (2008-11-21 01:56) [8]вот эти две процедуры не хотят работь, из за них вылетает ошибка
они описаны в вызывающем модуле
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;
← →
Сергей М. © (2008-11-21 08:40) [9]
> эти две процедуры не хотят работь
А где код FormOrders ?
> из за них вылетает ошибка
Что, вот прямо так и говорит "я, ошибка, вылетаю таким-то авиарейсом" ?)
← →
Nastya (2008-11-21 18:58) [10]
> А где код FormOrders ?
Не важно не работает и без него,
можно конечно, как исчезло модальное окно сделать кнопку на вызывающей форме для обновления таблички заказов
begin
DelControls; //чистит конкролы
FormOrders;//а эта создает
end;
Этот вариант работает безотказно, но не устраевает, что-то тут с модал-резултами!
← →
Сергей М. © (2008-11-21 19:32) [11]
> Не важно
Ну раз не важно, то тряси бубен.
← →
Leonid Troyanovsky © (2008-11-21 23:45) [12]
> 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.
← →
Anatoly Podgoretsky © (2008-11-22 00:01) [13]> Leonid Troyanovsky (21.11.2008 23:45:12) [12]
И глобальную переменную, при том сразу же.
← →
Германн © (2008-11-22 02:24) [14]
> для пользования модальных форм есть ж/б шаблон:
Железобетонный?
:)
Страницы: 1 вся ветка
Текущий архив: 2009.01.04;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.008 c