Brak zamykania okna modalnego

0

Problem jest tego rodzaju: muszę w pewnej wyjątkowej sytuacji wykonać zamknięcie
aktualnie otwieranego okna modalnego z jego zdarzenia "OnActivate". Pytanie jak to zrobić?
Normalnie wywołanie okna modalnego kończy zwykle operacja np: ModalResult:=mrCancel;
Jednak wpisanie tego w zdarzeniu "OnActivate" nic nie daje. Czy ktoś wie jak to powinno być prawidłowo
realizowane?

1

Ojejku, mam nadzieję że uda rozwiązać ci sie ten problem!

0

Jeśli w OnActivate nie można zrobić: ModalResult:=mrCancel(nie wiem, nie sprawdzałem), to ustawiasz sobie na formie Timer z interwałem np. na 100.
W OnTimer masz: ModalResult:=mrCancel.
Timer uruchamiasz w odpowiednim miejscu w OnActivate.

0

OnTimer działa prawidłowo ale chyba nie jest to optymalne rozwiązanie nie wspominając już o pięknie i prostocie kodu. Ciekawe ,że nie było wcześniej na Forum takiego problemu......

0

Nie wiem jak Twój kod wygląda, ale chyba ładniej by było gdyby udało Ci się tę wyjątkową operacją złapać przed pokazaniem okna modalnego?

0

Moje okno modealne jest tak naprawdę oknem paska progress i nie ma się pojawiać tylko gdy liczba pętli jest mniejsza od 10 do tego okna przekazuje tylko jeden parametr czyli typ proceduralny tz. procedurę jedną z wielu jakie mam w programie. Wszystkie ma reprezentować to jedno uniwersalne okno progress . Powstaje wyjątkowa sytuacja czyli zamkniecie okna przy małej liczbie przebiegów pętli nie potrzeba wtedy wyświetlenia tego okna.

0

A nie możesz go po prostu nie otwierać?

1
adf88 napisał(a):

A nie możesz go po prostu nie otwierać?

No dokładnie zrób coś w deseń

type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
    function ShowProgress: Integer; //mozna tez dodac jakies parametry
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
function TForm2.ShowProgress: Integer;
begin
  result:= mrCancel;
  // tu jakis sprawdzenie
  //if cos tam then
    result:= Self.ShowModal;
end;

i wywołuj tą funkcje zamiast Form2.ShowModal;

0
kAzek napisał(a):
adf88 napisał(a):

A nie możesz go po prostu nie otwierać?

No dokładnie zrób coś w deseń

type
  TForm2 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
    function ShowProgress: Integer; //mozna tez dodac jakies parametry
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
function TForm2.ShowProgress: Integer;
begin
  result:= mrCancel;
  // tu jakis sprawdzenie
  //if cos tam then
    result:= Self.ShowModal;
end;

i wywołuj tą funkcje zamiast Form2.ShowModal;

Zadziałało doskonale proste i skuteczne rozwiązanie problemu wielkie dzięki
Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1