Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > ActionManager


Автор: Akella 7.9.2005, 16:26
Нашёл ещё один баг

когда вызываю одну процедуру ActionManager`a из другой, процедура не выполняется

Код

procedure TfmMain.actOrderReturnRecipExecute(Sender: TObject);
begin
  PrintReturnOrder(dbgOrder.DataSource.DataSet);
  with dm
  do begin
    edBarCode.Text := '';
    Application.ProcessMessages;
    //сразу создаем новый заказ
    iOrderID := -1;
    actOrderNew.Execute;<--- процедура НЕ выполняется :rtfm 
  end;
end;


но если сделать так, то всё в порядке
Код

procedure TfmMain.actOrderReturnRecipExecute(Sender: TObject);
begin
  PrintReturnOrder(dbgOrder.DataSource.DataSet);
  with dm
  do begin
    edBarCode.Text := '';
    Application.ProcessMessages;
    //сразу создаем новый заказ
    iOrderID := -1;
    actOrderNewExecute(nil);<--- процедура выполняется :rtfm 
  end;
end;


такое происходит не всегда, вернее не со всем процедурами smile

Автор: Quadr0 7.9.2005, 20:03
...

Автор: <Spawn> 8.9.2005, 05:08
Цитата
Вообще ИМХО этот ActionManager какой-то кривой и недоделанный. Советую использовать ActionList вместо него...


Ага, в свое время я натнкнулся на такие его ошибки, что бился сутки прежде чем понял в чем дело smile Допустим при работе своего эксперта, если формы динамически создавать через акшены TActionManager-а, то при закрытии этих форм возникала AV, даже если это чистая, только что добавленная форма... с TActionList все глюки исчезли.

Автор: Akella 12.9.2005, 09:57
Цитата(Quadr0 @ 7.9.2005, 20:03)
А можешь показать код процедуры actOrderNewExecute;

1. Из одной процедуры эта (actOrderNew.Execute) выполняется
2. А из этой процедуры просто не заходит в неё? в actOrderNew.

actOrderNewExecute - там просто передача параметров в хранимую процедуру и выполнение её (execProc) (ADO).

Я же говорю - всё переделал и тепеь работает, мне посоветовали делать именно через actOrderNewExecute(nil), не actOrderNew.Execute.

Хоть глючный этот ActionManager, но удобно, приходиться мучаться.


//-----------------------------------------------------------
Продолжение:
Иногда процедуры в самом ActionManager`е принимают статус Enabled := false; опять же, перед компиляцией проекта выделяю все процедуры в ActionManager`е и ставлю Enabled := True; это не всегда но бывает и не со всеми процедурами, только с некоторыми, особенно с теми, которые связаны с компонентами. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)