Newsgroup: it.comp.lang.delphi
Titolo: Chiusura alternativa di form

Dunque io ho dei form. Vorrei che questi form si chiudessero quando l'utente
preme Esc. Come risolvo? Cosa devo aggiungere? Praticamente è come se
l'utente cliccasse su "chiudi" con il mouse.
Davide

 ha scritto nel messaggio

ciao
FormX.Close;
ti chiude la formX. es Form1.Close;
Application.Terminate ti chiude tutte le form
MainForm compresa // la puoi chiamare da qualsiasi form.
ciao
erik

 ciao
Ok, ma io voglio che quando schiaccio il tasto Esc si chiuda il form attivo
in quel momento capito?
Davide

 attivo in quel momento capito?
Puoi usare l'evento OnMouseUp della Form:
    if Key = VK_ESC then Close;
Ricordati di impostare KeyPreview a True.
--
Jax

 Davide
mmm
No non ho capito!
La vuoi chiudere dalla stessa oppure da Form1?
Da form1 vuoi chiudere
Form[Attiva]  o ne hai una solo aperta ? e come attiva intendi quello?
Come apri le form? FormX.Show?
Se  ho capito qualcosa ,forse ci sono anche altri modi,
ma puoi assegnare una var integer al bottone di apertura e chiusura:
var Form1:TForm;
FormX:Integer;
Procedure TForm1.buttonApriform2.Click;
begin
FormX:=2;
Form2.Show;
end;
Procedure TForm1.buttonApriform3.Click;
begin
FormX:=3;
Form3.Show;
end;
Procedure TForm1.Chiudi form.Click;
begin
case FormX of
2:=Form2.Close;
3:=Form3.Close;
end;
end;
Cerca di dare piú spiegazioni la prossima volta.
ciao
erik

Azz
da tastiera intendevi!!
Credevo tu avessi un pulsante 'Esc'
O come ti ha detto Jax o cosí :
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#27 then close;
end;
ciao
erik

 wrote in message
news:bqurgq$p6c$1...@le1.cs.unibo.it...

invocare il Close del form qualora ti giunga un ESC tra gli eventi OnKeyDown
o OnKeyPress ?

 preme Esc. Come risolvo? Cosa devo aggiungere?
Ciao,
io faccio così:
1. Preparo il mio dialog (Una form in bsDialog. Quest'ultimo attributo puoi
decidere di non adottarlo)
2. Metto il mio pulsante "ANNULLA" (Metti quello che vuoi)
3. Proprietà ModalResult del pulsante a mrCancel
4. Proprietà Cancel del pulsante a True
Sempre in base a cosa ti serve la Form e quali controlli usi in essa.
Ciao
Giuseppe


Open Delphi Manual (
http://groups.yahoo.com/group/delphi_open_manual/
)

 Come apri le form? FormX.Show?
Praticamente:
da form1 lancio questo mio altro formettino di selezione.... il quale
contiene 2 pulsanti, ok e Annulla. Il tasto ok è disabilitato appena creo
tale form fino a quando l'utente non fa una selezione.... io vorrei che
premendo il tasto Esc mi venisse fatta la close di questo mio formettino,
capito?
Spero di essere stato abbastanza chiaro
Davide

 o OnKeyPress ?
Io voglio che il mio form si chiuda quando l'utente preme il tasto ESC.
Ho già provato com la FormKeyPress come mi è stato consigliato da erik ma
non funziona, quando premo esc non viene sollevato l'evento....
Altre idee?

 ESC, invece, corrisponde al clic sul pulsante di annullamento (Cancel).
Ho capito perfettamente quello che mi hai spiegato... il problema č che il
tasto ok č disabilitato fino a quanddo l'utente non fa una selezione, quindi
di default č attivo proprio il tasto cancel e quindi quando premo ok mi
viene chiuso il form, cosa che non succede quando premo Esc....
Davide


Davide,
Marco ti ha spiegato perfettamente il modo migliore per ottenere quello che
vuoi. Credo ci siano ora delle difficoltà pratiche di implementazione.
Perché non posti un po' di codice? Tipo tutto quello inerente i due
pulsanti, sia dal lato .PAS sia da quello .DFM
Saluti
Giuseppe

 quando premo Esc....
Una volta che hai attribuito le caratteristiche di Default e Cancel ai
tasti, queste caratteristiche diverranno attive solo se i rispettivi
pulsanti sono abilitati.
Se il pulsante predefinito (Default) è disabilitato, non accadrà nulla
premendo il tasto INVIO; analogamente, non accadrà nulla premendo ESC se
il pulsante di annullamento (Cancel) è anch'esso disabilitato.
Generalmente, il pulsante di annullamento è sempre abilitato, poichè
dovrebbe essere possibile in ogni momento annullare le modifiche
apportate; il pulsante di conferma, come hai giustamente detto, può
essere abilitato sempre (con controllo degli errori sulla pressione)
oppure solo se i dati introdotti dall'utente sono formalmente corretti.
Entrambi i pulsanti, comunque, chiudono la finestra di dialogo; il
pulsante di conferma la chiude salvando i dati, mentre il pulsante di
annullamento chiude il form senza effettuare alcuna operazione (questa
implementazione può cambiare a seconda dei casi e delle necessità).
Se devi effettuare solamente la chiusura, ti basta associare alla
proprietà ModalResult i valori "mrOk" e "mrCancel" sui rispettivi
pulsanti di conferma e annullamento, come ti hanno indicato diverse
persone in questo thread; se invece devi eseguire del codice, allora
intercetta l'evento OnClick dei singoli pulsanti e inserisci al suo
interno le istruzioni da eseguire.
Credo di averti scritto tutto, ma se ci sono ancora dei dubbi prova a
scrivere qui un po' del codice che hai utilizzato, oppure dettagliare le
caratteristiche del form che stiamo analizzando.


caratteristiche del form che stiamo analizzando.
Si hai detto proprio tutto e come sempre ti dimostri il miglior teacher di
ICLD ;-)
A questo aggiungere che si puo' sfruttare l'evento OnCloseQuery del TForm che
viene innescato prima dell'evento Close, in automatico.
Io dovendo gestire programmi con pulsanti dbaware, devo obbligatoriamente
gestire questi casi limite: bottone "Chiudi" con la proprieta' Cancel
impostata a True. Se l'utente entra in edit/insert del record e poi vuole
andarsene, preme ESC e il bottone "Chiudi" innesca l'OnCloseQuery. Cosi'
facendo ho la possibilita' di gestire la situazione rispetto al database.
Ciao!
-- 
Morde. 
(
mo...@despammed.com
)