FWPPC - Puntatore del record - valid - lostfocus
Moderator: Enrico Maria Giordano
-
- Posts: 18
- Joined: Wed Feb 20, 2008 2:51 pm
FWPPC - Puntatore del record - valid - lostfocus
Ho un piccolo problema , spero che qualcuno possa darmi una mano
ho scritto un piccolo programmino con fwppc, premetto che lo uso da poco , inoltre uso Alaska e non uso harbour , per cui abbiate pazienza.
Il dilemma è questo ho due Get
la prima serve per inserire un codice, all'interno della valid faccio una seek su un archivio aperto prima per stabilire se il codice esiste
dopo con lostfocus , cerco di assegnare alla seconda Get il valore della descrizione del record a cui sto puntando, stranamente però il puntatore è tornato all'inizio dell'archivio.
Come mai ? cos'è che ingnoro, forse il codeblock lostfocus è un thread è gestisce si gli archivi aperti , ma i puntatori ripartano da capo, se provo a rifare la seek nel blocco, non funziona più la valid
Posto un pezzettino del mio "bruttissimo" prg
use magazi new
@ 1, 1 GET oVARGET[1] VAR mtMATRICE[1,1] SIZE 65,15 PICTURE "XXXXXXXXXX"; // ,oDESCRI:REFRESH()
VALID IF( MAGAZI->(DBSEEK(mtMATRICE[1,1])),(.t. ),( msgINFO("NON TROVATO"),.f.)) OF oScroll PIXEL RIGHT //
oVarGet[1]:bLostFocus = { ||oDescri:varput(magazi->descri),oDescri:REFRESH() }
@ 1, 70 GET oDESCRI VAR cDESCRI1 PIXEL OF oScroll SIZE 120,15
Grazie in anticipo per l'aiuto
ho scritto un piccolo programmino con fwppc, premetto che lo uso da poco , inoltre uso Alaska e non uso harbour , per cui abbiate pazienza.
Il dilemma è questo ho due Get
la prima serve per inserire un codice, all'interno della valid faccio una seek su un archivio aperto prima per stabilire se il codice esiste
dopo con lostfocus , cerco di assegnare alla seconda Get il valore della descrizione del record a cui sto puntando, stranamente però il puntatore è tornato all'inizio dell'archivio.
Come mai ? cos'è che ingnoro, forse il codeblock lostfocus è un thread è gestisce si gli archivi aperti , ma i puntatori ripartano da capo, se provo a rifare la seek nel blocco, non funziona più la valid
Posto un pezzettino del mio "bruttissimo" prg
use magazi new
@ 1, 1 GET oVARGET[1] VAR mtMATRICE[1,1] SIZE 65,15 PICTURE "XXXXXXXXXX"; // ,oDESCRI:REFRESH()
VALID IF( MAGAZI->(DBSEEK(mtMATRICE[1,1])),(.t. ),( msgINFO("NON TROVATO"),.f.)) OF oScroll PIXEL RIGHT //
oVarGet[1]:bLostFocus = { ||oDescri:varput(magazi->descri),oDescri:REFRESH() }
@ 1, 70 GET oDESCRI VAR cDESCRI1 PIXEL OF oScroll SIZE 120,15
Grazie in anticipo per l'aiuto
-
- Posts: 18
- Joined: Wed Feb 20, 2008 2:51 pm
lostfocus
aggiungo
partendo dal presupposto che Lostfocus è eseguito dopo la valid, come mai nel blocco il valore oVARGET:value() è quello originale , iniziale e non quello digitato dall'utente ?
Grazie
partendo dal presupposto che Lostfocus è eseguito dopo la valid, come mai nel blocco il valore oVARGET:value() è quello originale , iniziale e non quello digitato dall'utente ?
Grazie
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: lostfocus
Prova a mettere oVARGET[1]:Assign() come prima chiamata nella VALID.
EMG
EMG
Prova Questo
Maurizio
www.nipeservice.com
//----------------------------------------------------------------------------//
function Main()
local oWnd, oFont
local cName1 := space(10)
local cName2 := space(30)
Local oGet1,oGet2
use
USE ( CurDir() + "\Customer" ) NEW
index ON field->FIRST to "FIRST"
DEFINE WINDOW oWnd TITLE "Test"
@ 6, 2 GET oGet1 VAR cName1 SIZE 50, 20 ;
VALID iif(dbseek(cName1,.T.), (cName2 := field->LAST,oGet2:Refresh(),.T.) , (MSGINFO("Non Trovato") , .F. ) )
@ 8, 2 GET oGet2 VAR cNAme2 SIZE 120, 20
@ 12, 2 BUTTON "&End" SIZE 60, 30 ACTION oWnd:End()
ACTIVATE WINDOW oWnd
USE
return nil
Maurizio
www.nipeservice.com
//----------------------------------------------------------------------------//
function Main()
local oWnd, oFont
local cName1 := space(10)
local cName2 := space(30)
Local oGet1,oGet2
use
USE ( CurDir() + "\Customer" ) NEW
index ON field->FIRST to "FIRST"
DEFINE WINDOW oWnd TITLE "Test"
@ 6, 2 GET oGet1 VAR cName1 SIZE 50, 20 ;
VALID iif(dbseek(cName1,.T.), (cName2 := field->LAST,oGet2:Refresh(),.T.) , (MSGINFO("Non Trovato") , .F. ) )
@ 8, 2 GET oGet2 VAR cNAme2 SIZE 120, 20
@ 12, 2 BUTTON "&End" SIZE 60, 30 ACTION oWnd:End()
ACTIVATE WINDOW oWnd
USE
return nil
-
- Posts: 18
- Joined: Wed Feb 20, 2008 2:51 pm
grazie
Vi ringrazio della gentilezza, provo subito le vostre soluzioni e faccio sapere l'esito
-
- Posts: 18
- Joined: Wed Feb 20, 2008 2:51 pm
GRAZIE
Grazie ai vostri consigli funziona sia la soluzione di Maurizio sia quella di Emg.
Siete Super
quando potete mi togliete qualche altro dubbio ?
io credevo di poter mettere le istruzioni di chiusura archivi dopo
ACTIVATE WINDOW, poi mi sono accorto mettendo un MSGINFO che vengono eseguite sin dall'inizio anche quelle, per esser certo che gli archivi vengano chiusi quando l'utente esce della funzione dovrei bloccare l'uscita forzata di chiusura finestra ed obbligare a chiudere con dei bottoni in modo da poter pilotare la corretta chiusura della funzione e degli archivi. Giusto ??? Devo togliere i pulsanti chisura ed iconizza ??
ho osservato che l'esempio di Maurizio ha la USE dopo ACTIVATE WINDOW e pensavo che il bottone obbligasse ad eseguirla alla chiusura dell'oggetto, ma a me ha chiuso l'archivio e quindi è andato in errore, mi manca sicuramente qualche concetto.
Xbase infatti non esegue le istruzioni dopo la creazione dell'oggetto, se non dopo la sua distruzione.
fwppc ha problemi con l'uso di dbselectarea() e ordlistadd() ??? Io le sto usando ed apparente è ok ma vorrei una conferma, sapete sto cercando comunque di recuperare il codice scritto con Alaska Xase
Grazie ancora a tutti e due per il vostro tempo
Franz
Siete Super
quando potete mi togliete qualche altro dubbio ?
io credevo di poter mettere le istruzioni di chiusura archivi dopo
ACTIVATE WINDOW, poi mi sono accorto mettendo un MSGINFO che vengono eseguite sin dall'inizio anche quelle, per esser certo che gli archivi vengano chiusi quando l'utente esce della funzione dovrei bloccare l'uscita forzata di chiusura finestra ed obbligare a chiudere con dei bottoni in modo da poter pilotare la corretta chiusura della funzione e degli archivi. Giusto ??? Devo togliere i pulsanti chisura ed iconizza ??
ho osservato che l'esempio di Maurizio ha la USE dopo ACTIVATE WINDOW e pensavo che il bottone obbligasse ad eseguirla alla chiusura dell'oggetto, ma a me ha chiuso l'archivio e quindi è andato in errore, mi manca sicuramente qualche concetto.
Xbase infatti non esegue le istruzioni dopo la creazione dell'oggetto, se non dopo la sua distruzione.
fwppc ha problemi con l'uso di dbselectarea() e ordlistadd() ??? Io le sto usando ed apparente è ok ma vorrei una conferma, sapete sto cercando comunque di recuperare il codice scritto con Alaska Xase
Grazie ancora a tutti e due per il vostro tempo
Franz
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: GRAZIE
Sì, a parte la main window che è modale, tutte le altre window sono non modali. Anche le dialog sono modali tranne quando specifichi la clausola NOMODAL. Per le finestre non modali devi mettere quindi il codice che vuoi eseguire alla chiusura non dopo la ACTIVATE ma nella clausola VALID.franz_matrix wrote:io credevo di poter mettere le istruzioni di chiusura archivi dopo ACTIVATE WINDOW, poi mi sono accorto mettendo un MSGINFO che vengono eseguite sin dall'inizio anche quelle
EMG
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: GRAZIE
Ops, dimenticavo che stiamo parlando di FWPPC. La cosa potrebbe essere leggermente diversa ma dovrebbe restare valido il suggerimento della clausola VALID.
EMG
EMG
- Enrico Maria Giordano
- Posts: 7355
- Joined: Thu Oct 06, 2005 8:17 pm
- Location: Roma - Italia
- Contact:
Re: GRAZIE
Non mi risulta.franz_matrix wrote:fwppc ha problemi con l'uso di dbselectarea() e ordlistadd() ???
EMG
-
- Posts: 18
- Joined: Wed Feb 20, 2008 2:51 pm
grazie
EMG ti ringrazio ancora delle informazioni
mi dispiace di non poter contracambiare per ora, spero di diventare + bravo
per ora ho reso funzionante , anzi abbiamo reso ...
FOR K = 1 TO 10
cVARCODICE:="mtMATRICE[" + ALLTRIM(STR(K)) + ",1]"
cVARDESCRI:="mtMATRICE[" + ALLTRIM(STR(K)) + ",2]"
cVARQUANTI:="mtMATRICE[" + ALLTRIM(STR(K)) + ",3]"
cBLOCCO:="{|| ESISTE_ARTICOLO2('" + RTRIM(mtMATRICE[K,1]) + "'," + ALLTRIM(STR(K)) + ",oGET)}"
@ nRIGA, 1 GET oVARGET[K] VAR &cVARCODICE SIZE 40,15 PICTURE "XXXXXXXXXX" OF oScroll PIXEL RIGHT ;
VALID EVAL(&cBLOCCO)
@ nRIGA, 40 GET oGET[K] VAR &cVARDESCRI PIXEL OF oScroll SIZE 110,15
@ nRIGA,150 GET &cVARQUANTI SIZE 50, 15 PICTURE "@E 9999" OF oScroll PIXEL RIGHT
nRIGA+=16
NEXT
purtroppo ho un'altra domanda FWPPC come si complorta con le stampe
io dovrei stampare dal palmare su una stampante condivisa in rete, c'è una classe per le stampe, si puo' procedere con le semplici istruzioni di Clipper ....
non mi dire che posso fare SET DEVICE TO PRINT
ho letto nel forum un certo CREATEFILE() ma non ho trovato informazioni nell'help.
Spero che con FWPPC non si debba stampare solo su stampanti bluetooth
grazie ancora
mi dispiace di non poter contracambiare per ora, spero di diventare + bravo
per ora ho reso funzionante , anzi abbiamo reso ...
FOR K = 1 TO 10
cVARCODICE:="mtMATRICE[" + ALLTRIM(STR(K)) + ",1]"
cVARDESCRI:="mtMATRICE[" + ALLTRIM(STR(K)) + ",2]"
cVARQUANTI:="mtMATRICE[" + ALLTRIM(STR(K)) + ",3]"
cBLOCCO:="{|| ESISTE_ARTICOLO2('" + RTRIM(mtMATRICE[K,1]) + "'," + ALLTRIM(STR(K)) + ",oGET)}"
@ nRIGA, 1 GET oVARGET[K] VAR &cVARCODICE SIZE 40,15 PICTURE "XXXXXXXXXX" OF oScroll PIXEL RIGHT ;
VALID EVAL(&cBLOCCO)
@ nRIGA, 40 GET oGET[K] VAR &cVARDESCRI PIXEL OF oScroll SIZE 110,15
@ nRIGA,150 GET &cVARQUANTI SIZE 50, 15 PICTURE "@E 9999" OF oScroll PIXEL RIGHT
nRIGA+=16
NEXT
purtroppo ho un'altra domanda FWPPC come si complorta con le stampe
io dovrei stampare dal palmare su una stampante condivisa in rete, c'è una classe per le stampe, si puo' procedere con le semplici istruzioni di Clipper ....
non mi dire che posso fare SET DEVICE TO PRINT
ho letto nel forum un certo CREATEFILE() ma non ho trovato informazioni nell'help.
Spero che con FWPPC non si debba stampare solo su stampanti bluetooth
grazie ancora
Per la stampa diretta puoi usare bluetooth , altrimenti puoi inviando dei file ad un PC ( con un programma che sta sempre in attesa ) che li elabora e li stampa .
Oppure c'è una libreria ( abbastanza costosa ) che ti permette di creare ed eseguire delle stampe direttamente da palmare
Maurizio
www.nipeservice.com
Oppure c'è una libreria ( abbastanza costosa ) che ti permette di creare ed eseguire delle stampe direttamente da palmare
Maurizio
www.nipeservice.com
-
- Posts: 18
- Joined: Wed Feb 20, 2008 2:51 pm
stampa
grazie maurizio
per la stampa tramite bluetooth , qual'è la classe di stampa o le istruzioni messe a disposizione da FWPPC
franz
per la stampa tramite bluetooth , qual'è la classe di stampa o le istruzioni messe a disposizione da FWPPC
franz