Uscrire da un loop con ESC

Moderator: Enrico Maria Giordano

Uscrire da un loop con ESC

Postby aerrigo » Tue Dec 12, 2006 2:58 pm

Non riesco a capire perchè con la pressione del tasto ESC non riesco ad uscire da un DO WHILE ... ENDDO.

Di seguito il codice

DO WHILE .T.
SEL_AZI(V_AZICOD,V_AZIRAGIO1,V_AZIRAGIO2,V_AZIANNOCO)

IF V_AZICOD = 0
EXIT
ENDDO

DO WHILE .T.
DEFINE DIALOG oDlg RESOURCE "DOCUMENTI" TITLE "Elenco Documenti"

. . .

REDEFINE BUTTON ID 205 OF oDlg ACTION oDlg:End()

IF LASTKEY() = 27
oDlg:End()
ENDIF

ACTIVATE DIALOG oDlg CENTER

EXIT

ENDDO

ENDDO

Se clicco sul bottone 205 (Uscita) riesco ad uscire dal loop, se premo ESC no.

Grazie, Andrea
aerrigo
 
Posts: 24
Joined: Wed Oct 18, 2006 9:50 am
Location: Bari - Italy

Re: Uscrire da un loop con ESC

Postby Enrico Maria Giordano » Tue Dec 12, 2006 3:55 pm

Per prima cosa devi tenere presente che fintanto che una DIALOG è visualizzata l'esecuzione si trova bloccata nel comando ACTIVATE DIALOG (più o meno come succedeva in Clipper con il comando READ).

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8718
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Uscrire da un loop con ESC

Postby aerrigo » Tue Dec 12, 2006 4:15 pm

EnricoMaria wrote:Per prima cosa devi tenere presente che fintanto che una DIALOG è visualizzata l'esecuzione si trova bloccata nel comando ACTIVATE DIALOG (più o meno come succedeva in Clipper con il comando READ).

EMG


Io faccio esattamente questo, solo che se clicco sul bottone Uscita lui mi attiva il comando oDlg:End() ed esce regolarmente mentre se premo ESC è come se avessi confermato.

Ho provato con LASTKEY() ma anche quello sembra che non lo legga.

Andrea
aerrigo
 
Posts: 24
Joined: Wed Oct 18, 2006 9:50 am
Location: Bari - Italy

Re: Uscrire da un loop con ESC

Postby Enrico Maria Giordano » Tue Dec 12, 2006 4:50 pm

Allora cerca di fare un esempio chiaro del tuo problema perché da quello che hai riportato non si capisce assolutamente.

EMG
User avatar
Enrico Maria Giordano
 
Posts: 8718
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Uscrire da un loop con ESC

Postby aerrigo » Thu Dec 14, 2006 8:56 am

EnricoMaria wrote:Allora cerca di fare un esempio chiaro del tuo problema perché da quello che hai riportato non si capisce assolutamente.

EMG


Caro Enrico,

ho messo su questo link un documento in PDF dove spero di aver spiegato meglio il problema :

http://www.kompasso.it/sito/ControlloESC.pdf

Il problema mi sembrava molto semplice (fra l'altro in clipper 5.2 funziona benissimo), se passo il controllo ad una funzione quando questa mi ritorna, leggo una variabile e se è = 0 devo uscire dal loop del programma che l'ha richiamata.

Grazie, Andrea.
aerrigo
 
Posts: 24
Joined: Wed Oct 18, 2006 9:50 am
Location: Bari - Italy

Re: Uscrire da un loop con ESC

Postby Enrico Maria Giordano » Thu Dec 14, 2006 11:27 am

Senza un esempio minimale e compilabile del problema è molto difficile aiutarti. Comunque, se ho capito bene, prova a sostituire

Code: Select all  Expand view  RUN
IF LASTKEY() = 27
    oDlg:End()
ENDIF


con

Code: Select all  Expand view  RUN
IF GETKEYSTATE( VK_ESCAPE )
    oDlg:End()
ENDIF


EMG
User avatar
Enrico Maria Giordano
 
Posts: 8718
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia

Re: Uscrire da un loop con ESC

Postby aerrigo » Thu Dec 14, 2006 4:58 pm

EnricoMaria wrote:Senza un esempio minimale e compilabile del problema è molto difficile aiutarti. Comunque, se ho capito bene, prova a sostituire

Code: Select all  Expand view  RUN
IF LASTKEY() = 27
    oDlg:End()
ENDIF


con

Code: Select all  Expand view  RUN
IF GETKEYSTATE( VK_ESCAPE )
    oDlg:End()
ENDIF


EMG


Caro Enrico,

ti ringrazio, ho risolto; solo che al comando oDlg:End() ho sostituito il comando EXIT poichè la Dialog non è stata ancora attivata (il comando IF è in testa al loop).

Grazie ancora, Andrea.
aerrigo
 
Posts: 24
Joined: Wed Oct 18, 2006 9:50 am
Location: Bari - Italy


Return to All products support

Who is online

Users browsing this forum: No registered users and 4 guests