Page 1 of 1

FWPPC - Puntatore del record - valid - lostfocus

PostPosted: 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

PostPosted: 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

PostPosted: Tue Apr 08, 2008 6:39 am
by Enrico Maria Giordano
Prova a mettere oVARGET[1]:Assign() come prima chiamata nella VALID.

EMG

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: 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

PostPosted: Wed Apr 09, 2008 12:49 pm
by Maurizio
Non è una classe

vedi il file di esempio BLUETOTH.PRG

Maurizio
www.nipeservice.com