Newsgroup: it.comp.lang.delphi
Titolo: 2 domande 2

sarò rapido:
1- nell'evento onclick di un pulsante ho messo la creazione a Run- time di
una form:
  try
    FPassword := TFPassword.Create(FPassword);
    FPassword.ShowModal;
  finally
    FPassword.Free;
  end;
Perchè la seconda volta che richiamo la forma di dà access violation? La
form non dovrebbe essere stata distrutta da Freee?
2- per un progetto controllo che sia istanza singola:
 //-- Istanza singola
  try
    HndPrevIst := CreateMutex(nil, False, 'Museum');
    if (GetLastError <> ERROR_ALREADY_EXISTS) AND (HndPrevIst <> 0) then
    begin
      Application.Initialize;
      Application.CreateForm(TFMain, FMain);
      Application.Run;
    end
    else begin
      //-- nel caso di altra istanza e la precedente è ridotta a icona, la riporto
a tutto schermo
      HndPrevIst := FindWindow('TApplication', 'Museum');
      if IsIconic(HndPrevIst) then
      begin
        ShowWindow(HndPrevIst, SW_SHOWDEFAULT);
        SetForegroundWindow(HndPrevIst);
      end;
    end;
  finally
    CloseHandle(HndPrevIst);
  end;
Xò a quanto mi riconosce che ho aperto una precedente istanza ma non mi
mette a tutto schermo la precedente istanza. i comandi sono giusti? Ho
scritto qualche cazzata?
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 scritto qualche cazzata?
Cosa intendi per "mettere a tutto schermo"? Ingrandire o ripristinare?
Dovrebbe essere sufficiente modificare il secondo parametro della 
funzione API /ShowWindow/ in modo appropriato.
P.S.: non utilizzare titoli come "2 domande 2" o affini per le richieste 
d'aiuto; sono poco significativi, non danno alcuna indicazione riguardo 
al contenuto del messaggio e obbliga tutti quanti ad aprirlo per 
scoprire, magari amaramente, che contiene una richiesta alla quale non 
possono dare risposta. Inoltre, un simile titolo impedisce di ricercare 
in futuro l'argomento.
Piuttosto che scrivere più domande nello stesso messaggio e usare un 
titolo sbagliato, separa le domande in messaggi differenti e attribuisci 
loro un titolo decente. :-)
Ciao!
-- 
Marco «Alka» Breveglieri
  ABLS Team S.n.c. - Software & Web
  Via De Gasperi, 14
  42019 Scandiano (Reggio Emilia)
 
http://www.abls.it


Per la prima, la sola che ho capito...
Sarebbe buona norma controllare che il puntatore alla form sia nil ovvero :
if Form1  = nil then
//procedi alla creazione
non basta fare il free della form ma bisogna impostare a nil il suo
riferimento, quindi o scrivi :
Form1.Free;
Form1 := nil
oppure
FreeAndNil(Form1);
in definitiva :
if Form1 = nil then
Form1 := TForm1.Create(Self);
Form1.ShowModal;
FreeAndNil(Form1);
Ciao,
Antonio.

loro un titolo decente. :-)
caro Marco se fossi in te eviterei di perdere tempo dietro ad un improbabile
"marcolattanzi" con email dichiaratamente falsa e dal comportamento ambiguo
visto gli ultimi post di questo genere. :-)
Da oggi rispondo solo a chi si comporta correttamente, e non spamma il ng di
domande ripetute.
Ciao ;-)
-- 
Morde. 
(
mo...@despammed.com
)
M-List di icld: 
http://it.groups.yahoo.com/group/icld/

 scritto qualche cazzata?
ti rispondo perchè non ne posso più di leggere questa domanda! :o)
io faccio così e funziona:
begin
  MyMutex := CreateMutex(nil, False, 'MY_MUTEX');
  try
    if (GetLastError = ERROR_ALREADY_EXISTS) then
    begin
      MessageBox(0, 'Programma già attivo!', 'Attenzione', MB_OK);
      ShowWindow(FindWindow('TfmMain', 'GeLice'), SW_SHOWNORMAL);
      SetForegroundWindow(FindWindow('TfmMain', 'GeLice'));
      //la findwindow usa la classe e la caption del form principale
    end
    else
    begin
      Application.Initialize;
      Application.CreateForm(TfmMain, fmMain);
      Application.Run;
    end;
  finally
    CloseHandle(MyMutex);
  end;
end.
E' una soluzione che ho preso da un post di Andrea Laforgia su questo ng.
-- 
Ciao, Anto', [37, 143, AQ] 
MB C SC 220 CDI Magma Rot
"Di sempre cio' che senti e fai cio' che pensi."
    G.G. Màrquez

In data Mon, 20 Sep 2004 11:56:09 +0200, Antò LuZombi ha scritto:
visto che sicuramente nonci arrivi...
;o)
var
  MyMutex: THandle;
{$R *.res}


 visto gli ultimi post di questo genere. :-)
Anche il mio indirizzo email è dichiaratamente falso... ;-)
Scherzi a parte, ci metto la buona fede e suggerisco il comportamento 
che credo sia corretto: se l'interessato lo segue, bene, altrimenti 
adotterò la tua linea. :-)



Scusate il mio comportamento "AMBIGUO", non volevo in alcun modo darvi
fastidio o altro. Per quanto riguarda la mail, non mi va di metterla a
disposizione. Per gli svariati post... chiedo ancora umilmente scusa, avevo
urgenza di sapere come funzionasse, non accadrà più. Spero che la
"collaborazione" on line possa continuare.. :)
sentite scuse..


sentite scuse..
Certo che la "collaborazione" continuera', e' lo scopo di questo ng ed e' la
mission che ci prefiggiamo noi che partecipiamo... 
Tuttavia ti consiglio di rivedere il *motivo* del tuo comportamento perche'
l'urgenza non giustifica il "morphing", sai qui si ha a che fare con persone
come te, esseri umani che lavorano, si stancano, si danno da fare per aiutare
senza mai nulla ricevere in cambio: se tu fai finta di essere 10 persone
diverse, solo per aumentare le probabilita' di risposta, non e' che sia molto
pulito questo comportamente nei riguardi degli altri.
Per me l'argomento ora è chiuso, e le scuse sono accettate di buon grado.
:-)
ciao,


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
MarcoLattanzi wrote:
| Scusate il mio comportamento "AMBIGUO", non volevo in alcun modo darvi
| fastidio o altro. Per quanto riguarda la mail, non mi va di metterla a
| disposizione. Per gli svariati post... chiedo ancora umilmente scusa,
avevo
| urgenza di sapere come funzionasse, non accadrà più. Spero che la
| "collaborazione" on line possa continuare.. :)
| sentite scuse..
Non è necessario dare un email reale. Basta che ne scegli una e usi
quella per tutti i tuoi post.
Bye,
~  Luca
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (GNU/Linux)
Comment: Using GnuPG with MultiZilla - 
http://enigmail.mozdev.org
iD8DBQFBT0ERliez+Z59f3URAjnAAJwNmAMhLZwfpqsQtfOaUjouiHdn3ACgu9FI
XQ7Cd9EbrYxriFvNjtCQras=
=UoQJ
-----END PGP SIGNATURE-----