FWPPC - Puntatore del record - valid - lostfocus

Moderator: Enrico Maria Giordano

Post Reply
franz_matrix
Posts: 18
Joined: Wed Feb 20, 2008 2:51 pm

FWPPC - Puntatore del record - valid - lostfocus

Post 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
franz_matrix
Posts: 18
Joined: Wed Feb 20, 2008 2:51 pm

lostfocus

Post 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
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: lostfocus

Post by Enrico Maria Giordano »

Prova a mettere oVARGET[1]:Assign() come prima chiamata nella VALID.

EMG
User avatar
Maurizio
Posts: 705
Joined: Mon Oct 10, 2005 1:29 pm
Contact:

Post 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
franz_matrix
Posts: 18
Joined: Wed Feb 20, 2008 2:51 pm

grazie

Post by franz_matrix »

Vi ringrazio della gentilezza, provo subito le vostre soluzioni e faccio sapere l'esito
franz_matrix
Posts: 18
Joined: Wed Feb 20, 2008 2:51 pm

GRAZIE

Post 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
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: GRAZIE

Post 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
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: GRAZIE

Post 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
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: GRAZIE

Post by Enrico Maria Giordano »

franz_matrix wrote:fwppc ha problemi con l'uso di dbselectarea() e ordlistadd() ???
Non mi risulta.

EMG
franz_matrix
Posts: 18
Joined: Wed Feb 20, 2008 2:51 pm

grazie

Post 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
User avatar
Maurizio
Posts: 705
Joined: Mon Oct 10, 2005 1:29 pm
Contact:

Post 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
franz_matrix
Posts: 18
Joined: Wed Feb 20, 2008 2:51 pm

stampa

Post by franz_matrix »

grazie maurizio

per la stampa tramite bluetooth , qual'è la classe di stampa o le istruzioni messe a disposizione da FWPPC

franz
User avatar
Maurizio
Posts: 705
Joined: Mon Oct 10, 2005 1:29 pm
Contact:

Post by Maurizio »

Non è una classe

vedi il file di esempio BLUETOTH.PRG

Maurizio
www.nipeservice.com
Post Reply