PDA

Visualizza la versione completa : [Delphi 2007] Finestra confirm misterioso else if


TEODORO
22-04-2008, 09:59
C' qualcuno che mi sa dire perch mi capita questo...
il codice sotto riportato apre una finestra confirm al click del menu esci:
suppongo che l'errore sia negli else if, uso delphi 2007. Grazie

se premo salva va bene l'operazione se premo No mi prima di chiudere il file mi propone due volte la finestra confirm se premo annulla me la propone tre volte. C qulcuno che mi sa aiutare?

procedure TFMain.esci1Click(Sender: TObject);
begin
if
messagedlg('salvare le modifiche apportate al file?',
mtConfirmation,[mbYes,mbNo,mbCancel],0) = mrYes
then
begin
if (Sd.FileName='') then
begin
Sd.Execute;
end
else
if (statusbar1.Panels[0].Text= 'untitled.txt')
or (statusbar1.Panels[0].Text= 'untitled.php')
or (statusbar1.Panels[0].Text= 'untitled.css')
or (statusbar1.Panels[0].Text= 'untitled.html')
then
begin
Sd.Execute;
richedit1.Lines.SaveToFile(Sd.FileName);
end
else
begin
richedit1.Lines.SaveToFile(Sd.FileName)
end
end

else if
messagedlg('Salvare le modifiche apportate al file?',mtConfirmation,
[mbYes,mbNo,mbCancel],0) = mrNo
then
begin
FMain.Close
end
else if messagedlg('Salvare le modifiche apportate al file?',
mtConfirmation,[mbYes,mbNo,mbCancel],0) = mrCancel
then
begin
end
end;

mondobimbi
22-04-2008, 10:10
hai un errore concettuale, la tua procedura la devi scrivere cos


procedure TFMain.esci1Click(Sender: TObject);
var
rst : tipo_risposta_messagedlg;
begin

rst := messagedlg('salvare le modifiche apportate al file?', mtConfirmation,[mbYes,mbNo,mbCancel],0);

if (rst = mrYes) then
begin
if (Sd.FileName='') then
begin
Sd.Execute;
end
else if (statusbar1.Panels[0].Text= 'untitled.txt') or (statusbar1.Panels[0].Text= 'untitled.php') or (statusbar1.Panels[0].Text= 'untitled.css') or (statusbar1.Panels[0].Text= 'untitled.html') then
begin
Sd.Execute;
richedit1.Lines.SaveToFile(Sd.FileName);
end
else
begin
richedit1.Lines.SaveToFile(Sd.FileName)
end
end
else if (rst = = mrNo) then
begin
FMain.Close
end
else (rst = mrCancel) then
begin
end

end;


non mi ricordo il tipo ritornato dalla messageDlg, guardalo nella guida on line.
ciao
sergio

oregon
22-04-2008, 10:10
Se non utilizzi i tag code nel riportare il tuo codice nel forum questo risultera' illeggibile.

TEODORO
22-04-2008, 16:46
Innanzi tutto grazie per l'interessamento, Oregon, e mi scuso se non ho utilizzato i tag code rendendo difficilmente leggibile il mio codice. Volevo Farti notare che il tuo collegamento punta a una guida di visual basic...

MA QUESTO DELPHI!!

e se ho aperto un forum perche non riesco a trovare una guida che mi spieghi bene come utilizzare pi condizionali...

esempio:
if
condizione
then
begin
espressione
end
else if
condizione
then
begin
espressione
end


e cosi via ne devo analizzare tre di condizioni...


:ciauz:

oregon
22-04-2008, 17:08
Originariamente inviato da TEODORO
Volevo Farti notare che il tuo collegamento punta a una guida di visual basic...

Lo so ... quel link sta nella mia "firma" ... c'e' in tutte le risposte a prescindere dalla risposta ...


MA QUESTO DELPHI!!

So anche questo ... vedi sopra ...


se ho aperto un forum

Semmai hai aperto un thread ... non tutto il forum ...

TEODORO
22-04-2008, 17:21
oh scusa non avevo fatto caso...
ho appena risolto Prendendo spunto dal codice che mi stato riportato dall'utente mondobimbi
alcuni errori di sintassi me li dava anche il suo codice ma erano errori semplici di distrazione facilmente risolvibili..Grazia a tutti per l'aiuto che mi avete dato per qualsiasi cosa il mio link messanger teodoro.basta@hotmail.it
:ciauz:

Loading