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?
Ojejku, mam nadzieję że uda rozwiązać ci sie ten problem!
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.
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......
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?
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.
A nie możesz go po prostu nie otwierać?
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;
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