[ FranjoZG @ 18.05.2015. 00:05 ] @
| radi se o delphi XE 7
Imam problem u proceduri s kojim se do sada nisam sreo:
ne prikazuje ShowMessage.
Procedura je u datamudulu, a pozivam je iz main forme u eventu OnShow:
Code:
procedure Tdm.OtvoriDB;
var
ti: tMyInit;
dbName: string;
Odg: integer;
begin
ti := tMyInit.Create;
dbName := ti.Read('DATABASE', 'NAME', '');
ti.Free;
Odg := mrCancel;
if dbName = '' then
begin
Odg := MessageDlg('Nije određena radna baza' + ''#13'' + 'Odrediti radnu bazu?' + ''#13'' + ''#13'' + '(bez određene baze rad nije moguć)', mtConfirmation, [mbYes, mbNo], 0);
if Odg = mrYes then
begin
fmParametri := TfmParametri.Create(nil);
fmParametri.ShowModal;
fmParametri.Free;
ti := tMyInit.Create;
dbName := ti.Read('DATABASE', 'NAME', '');
ti.Free;
if dbName = '' then begin
ShowMessage('Baza nije određena' + #13 + 'Rad nije moguć');
Application.Terminate;
exit;
end;
end
else
Application.Terminate;
exit;
end
else
begin
try
fdc.Params.Database := dbName;
except
ShowMessage('Pogreška pri otvaranju radne baze:' + #13 + dbName);
OtvoriDB;
end;
end;
...
linija:
ShowMessage('Baza nije određena' + #13 + 'Rad nije moguć');
se ne prikazuje a pređe preko nje!!!
Ideja zašto? |
[ savkic @ 18.05.2015. 00:56 ] @
> ShowMessage('Baza nije određena' + #13 + 'Rad nije moguć');
> se ne prikazuje a pređe preko nje!!!
> Ideja zašto?
Ako je VCL aplikacija, da li imas glavnu formu kreiranu? Ako da onda bi se morala videti, ukljuci debugDcu i udji u ShowMessage pa vidi gde je zastoj.
[ FranjoZG @ 18.05.2015. 08:22 ] @
Moja greška... recimo...
1. Ostavio sam TFDConnection "Open" u design modu
2. u BeforeConnect sam pozvao proc. "OtvoriDB"
3. u OnShow main forme sam pozvao proc. "OtvoriDB"
Ispravak:
1. u design modu sam stavio TDBVConnect na "Close"
2. maknuo sam poziv procedure iz BeforeConnect
Sada radi ispravno. Svejedno mi nije jasna greška - preskoči ShowMessage kao da ga je izvršio.
U debugu pratim:
frmMain.ShowMessage -> Vcl.Dialogs.ShowMessage -> Vcl.Dialogs.ShowMessagePos = prikaz poruke
procedura koja se poziva iz Vcl.Dialogs.ShowMessagePos se ne izvrši i debuger deaktivira brekpoint kao da se ne koristi u programu.
-> Vcl.Dialogs.MessageDlgPos
O čemu se radi? Bug?
[ Milan Milosevic @ 18.05.2015. 10:16 ] @
Meni se desavalo da nece da prikaze poruku u ShowMessage slicno kao kod tebe kad se istrosi stack memorija
Code:
implementation
{$R *.dfm}
{$MAXSTACKSIZE 1073741824}
procedure TForm2.Button1Click(Sender: TObject);
begin
ShowMessage('Prikazi me');
end;
[ savkic @ 18.05.2015. 10:30 ] @
> 1. Ostavio sam TFDConnection "Open" u design modu
> 2. u BeforeConnect sam pozvao proc. "OtvoriDB"
> 3. u OnShow main forme sam pozvao proc. "OtvoriDB"
> Ispravak:
> 1. u design modu sam stavio TDBVConnect na "Close"
> 2. maknuo sam poziv procedure iz BeforeConnect
Deluje da u prvom slucaju ti jos nije bila glavna forma kreirana a u drugom jeste. U takvom slucaju mozes direktno raditi sa WinApi MessageBox i tu neces imati nikakvih problema sa prikazom.
Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.