L'idea è quella di costuire in runtime un gruppo di controlli che corrisponde per es a:
1-tips[1]=textbox
2-tips[2]=textbox (provincia)Pescara
3-tips[3]=combobox
4-tips[4]=textbox 05/19/2013
5-tips[5]=textbox (comune) Popoli
6--tips[6]=combobox
7-tips[7]=textbox 324
8-tips[8]=textbox 19/2013 14:02:49.502
e successivamente riempirli utilizzando un focus itinerante
tutti i controlli hanno delle proprietà particolari e ecome tali soggetti a filtri ;
nel caso in esame potremmo avere tips[1]..........autoincrement "au" e comme tale non va immesso.
tips[4].......... data apertura sk "iv" invisibile all'atto dell'imput
tips[7]...........id dell'operatore "iv" invisibile all'atto dell'imput
tips[8]...........data dell'imput "iv" invisibile all'atto dell'imput
può essere richiesto anche un input veloce per es tips[2].tips[5].
i campi invisibili, ed un imput veloce vanno preparati prima di procedere all'input
i dati fissi input veloce od invisibili su riportati sono preparati prima dell'imput ed immessi in ogni record, operazione che immette anche auto increment.
certamente vi sarà necessita di verificare lunghezza stringhe,correttezza di un codice fiscale...............................
a questo punto possiamo scrivere la prima routine:
'in fase di prepaarazione metto tutti gli oggetti tips[] in una matrice pdl[np,0], mente eventuali filtri si
,================================================================================================================================================================
modo a non funziona in quanto non è facile uscire ed entrare nel ciclo
WHILE Pdl[np, 0] <> ""
'=================================================================================================================================================================
'modo B evita il while e funziona
IF Pdl[np, 0] <> "" THEN
'===================================================================================================================================================================
cat = tips[np] 'in Pdl[np,1-2-3........]]
gk = Object.Type(cat)
nh = 0
SELECT CASE gk
CASE "ComboBox"
tips[np].text = tips[np].List[0]
tips[np].SetFocus
WHILE tips[np].text = ""
WAIT 0.001
'===================================================================================================================================================================
'IL ciclo while wend non viene interrotto da un set focus pertanto o s'inserisce un wait altrimenti non è in grado di mostrare quello che ha fatto.
'===================================================================================================================================================================
WEND
nh = 1
CASE "TextBox"
IF Pdl[np, 1] = "au" OR tips[np].text <> "" THEN
nh = 1
ELSE
tips[np].setfocus
WAIT 0.001
ENDIF
IF nh = 1 THEN INC np
WEND
'===================================================================================================================================================================
'nel caso del text box il ciclo dovrebbe lavorare su la rotine estenna tips_Keypress() ed almeno a me con il modo a non funziona.
l'aggiornamento utomatico del cicli while piu esterno fa che la riga "IF Pdl[np, 1] = "au" OR tips[np].text <> "" THEN" vie aggiornata dopo il primo giro, quindi tutto "CASE "TextBox"" va riscitto
'===================================================================================================================================================================
CASE "TextBox"
nk = 0
k = 0
WHILE ctk[np, k] <> ""
IF ctk[np, k] = "iv" THEN nk = 1
INC k
WEND
IF Pdl[np, 1] = "au" OR nk = 1 THEN
nh = 1
ELSE
tips[np].setfocus
ENDIF
,================================================================================================================================================================
srttura dell parte fina giusta Modo B
'=================================================================================================================================================================
CASE "blog"
CASE "label"
END SELECT
IF nh = 1 THEN
INC np
InputRecord()
ENDIF
ELSE
Button2.visible = TRUE
ENDIF
' WEND
END
PUBLIC SUB tips_Keypress()
DIM Plen AS Integer
IF Key.code = Key.enter OR Key.code = Key.return THEN
plen = Len(tips[np].text)
IF plen > 8 THEN
tips[np].text = ""
ELSE
INC np
inputrecord()
ENDIF
ENDIF
END
Spero di essere stato sufficentemente chiaro diversamente fatemi sapere
giob1642