Newsgroup: it.comp.lang.vo-clipper
Titolo: Per favore correggetemi il mio primo programma

Salve, oggi è il 19° giorno che uso VO 2.0
Ho cercato di seguire i vostri consigli e hi guardato attentamente agli
esempi.
Dopo qualche giorno come vi avevo detto ho pensato di fare una utility
(Programma brevissimo)
per la mamma che ha una 
bottega.in
 Piazza Vidoni.
Qual'era il priblema?
Il 1 Gennaio 2002 con l'euro la mammma si potrebbe trovare nella
situazione di dare lo scontrino in euro e di ricevere lire.
Per fare questo dovrebbe dire al cliente sprovvisto di euro quant'è il
valore da p agre in lire e una volta avuta dal cliente una somma
maggiore dovrebbe convertirla in euro e dare al cliente il resto in
euro.
Difficilissimo da dire  ma facilissimo da fare in una fimestra Con VO.
Ho pertanto modificato l'empry menù, ho creato una finestra e ho messo
dei i controlli SLE.
Il primo attende l'immissione del valore iniziale in EURO.
Accanto vi ho messo un pulsante che richiama il metodo scambia che
calcola il cambio euro->lire e pone questo valore nella seconda sle che
è di sola lettura.
Il metodo scambia prima di terminare da il fuoco alla terza sle che
attende il valore in lire che il cliente da al negoziante.
Accanto a questa sle c'è il pulsante che richiama il metodo DAIILRESTO()
il quale calcola il resto in euro e lo pone nell'ultima SLE in fondo
alla finestra e cntemporaneamente da il fuoco alla prima sle per
ricominciare il cicclo.
Tutto facile ANCHE GRAZIE AI CONSIGLI DATI DA ALCINI DI VOI.
Però c'era e c'è una problema .
Per la mamma l'uso del mouse è difficile e lentp (la pallina non gira
bene e lei si spazientisce)  e sul banco di vendita ci somo già tante
cose.
Lei va meglio con la tastiera.
Pertanto ho voluto che il primo e il terzo sle rispondessero al tasto
return richiamando rispettivamente i metodi scambia e daiilresto.
Anche qui con il vostro aiuto ho prodotto il seguente listato:
  FUNCTION Mostra(cFrase AS STRING)
  LOCAL  oWB AS  TEXTBOX
  oWB:=TextBox{ ,"Nota" , cFrase}
  oWB:type :=BOXICONEXCLAMATION   + BUTTONOKAY
  oWB:Show()
  RETURN  NIL
CLASS MySle INHERIT SingleLineEdit
METHOD   Dispatch(oEvent) CLASS   MySle
Local oOW:=self:owner as object
DO CASE
CASE oEvent:message == WM_KEYUP .AND. oEvent:WParam ==  KEYRETURN .AND.
self:NameSym==#nTEuro
mostra("Sono nella prima sle")
oOW:Scambia()
RETURN 1L
CASE oEvent:message == WM_KEYUP .AND. oEvent:WParam ==  KEYRETURN .AND.
self:NameSym==#nLireDate
mostra("Sono nella terza sle")
oOW:DaiIlResto()
RETURN 1L
ENDCASE
RETURN(SUPER:Dispatch(oEvent))
Ho poi sostituito il termine SingleLineEdit con il termine  MySle nelle
due dichiarazioni delle sle nella finestra usando l'editor.
TUTTO FUNZIONA  FINALMENTE  BENISSIMO!
Ma Aimhè! bisogna togliere la riga  con la chiamata alla funzione mostra
che avevo messo per capire se al tasto return coincideva la chiamata
alla funzione dispatch.
Bene se tolgo la riga mostra("Sono nella prima sle") oppure mostra("Sono
nella terza sle")
NON FUNZIONA PIU' NIENTE!!!
Se le lascio  appare la finestra mostra, se la chiudo col mouse mi fila
tutto bene e mi calcola tutto benissimo se la chiudo col tasto return
NO!
Se la toglgo non va più nulla e si comporta come se a chiudere la
finestra di mostra("Sono nella terza sle") fosse il tasto return.
Potete aiutarmi a capire?
Grazie Immensamente e a dopo.
Pietro

Con ogni probabilità devi inserire nel listato la direttiva
Self:Exec(EXECWHILEEVENT)
che informa la finestra di processare gli eventi in attesa durante
l'elaborazione. Talvolta, è la finestra "madre" che deve essere informata di
processare gli eventi, allora la sintassi diventa:
Self:Owner:Exec(EXECWHILEEVENT)
Ciao, Antonio


E dove andrebbe messa  la riga:
Self:Exec(EXECWHILEEVENT)???
Nel codice della sle? e dove?
Pietro


 ha scritto nel messaggio
news:3BE8E592...@msn.com...
