Page 1 of 1
FWPPC - Puntatore del record - valid - lostfocus
Posted: Mon Apr 07, 2008 4:10 pm
by franz_matrix
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
lostfocus
Posted: Mon Apr 07, 2008 6:17 pm
by franz_matrix
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
Re: lostfocus
Posted: Tue Apr 08, 2008 6:39 am
by Enrico Maria Giordano
Prova a mettere oVARGET[1]:Assign() come prima chiamata nella VALID.
EMG
Posted: Tue Apr 08, 2008 7:02 am
by Maurizio
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
grazie
Posted: Tue Apr 08, 2008 10:00 am
by franz_matrix
Vi ringrazio della gentilezza, provo subito le vostre soluzioni e faccio sapere l'esito
GRAZIE
Posted: Tue Apr 08, 2008 10:43 am
by franz_matrix
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
Re: GRAZIE
Posted: Tue Apr 08, 2008 4:46 pm
by Enrico Maria Giordano
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
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.
EMG
Re: GRAZIE
Posted: Tue Apr 08, 2008 4:47 pm
by Enrico Maria Giordano
Ops, dimenticavo che stiamo parlando di FWPPC. La cosa potrebbe essere leggermente diversa ma dovrebbe restare valido il suggerimento della clausola VALID.
EMG
Re: GRAZIE
Posted: Tue Apr 08, 2008 4:48 pm
by Enrico Maria Giordano
franz_matrix wrote:fwppc ha problemi con l'uso di dbselectarea() e ordlistadd() ???
Non mi risulta.
EMG
grazie
Posted: Tue Apr 08, 2008 11:57 pm
by franz_matrix
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
Posted: Wed Apr 09, 2008 6:26 am
by Maurizio
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
stampa
Posted: Wed Apr 09, 2008 11:53 am
by franz_matrix
grazie maurizio
per la stampa tramite bluetooth , qual'è la classe di stampa o le istruzioni messe a disposizione da FWPPC
franz
Posted: Wed Apr 09, 2008 12:49 pm
by Maurizio
Non è una classe
vedi il file di esempio BLUETOTH.PRG
Maurizio
www.nipeservice.com