Uno strumento per fare ricerche nelle colonne delle griglie: Trova.scx

Articolo di: Ernest Morariu ©
Torino, 19 Novembre 2001
ernestmorariu@libero.it

"Trova" è una form che potrebbe essere utilizzata come uno strumento per fare delle ricerche incrementali nelle colonne di una griglia.

E' molto facile da usare ed è costruita su una massima generalità, nel senso che si possono fare ricerche in un campo di qualsiasi tipo, tranne che di tipo General.

La chiamata della form Trova si deve fare solamente da una delle colonne della griglia oppure da uno degli oggetti contenuti nella colonna (dalla Textbox, Header,…).

Il codice che chiama la form si può scrivere in uno degli eventi che l'utente può generare: Click, DblClick, KeyPress,…

La form EsempioTrova che accompagna questo articolo usa gli eventi Click del Header e l'evento KeyPress della Textbox (che si trovano nelle colonne) per fare le chiamate della form Trova.

La form Trova accetta due parametri oColonna e nKeyCode , dove solo il primo e' obbligatorio.
oColonna rappresenta l'oggetto della colonna dal quale viene chiamata la form Trova.

Se, per esempio, la chiamata della form Trova viene fatta nell'evento Click del Header di una colonna, allora deve avere all'incirca questo formato:

DO FORM TROVA.SCX WITH THIS.PARENT

Ovviamente, essendo nella Header di una colonna, l'espressione THIS.PARENT rappresenta l'oggetto Colonna che contiene l'Header.

Se, per esempio, si desidera dare all'utente la possibilità di fare ricerche in una colonna direttamente con la tastiera senza usare il mouse, allora la chiamata del form Trova si può fare al interno dell'evento KeyPress della casella textbox che forma la cella della griglia. In questo caso conviene che alla form Trova si mandi anche il codice ASCII del carattere premuto (premuto nella cella della griglia). In questo modo, la form Trova utilizza il parametro nKeyCode quindi lo fa vedere come un primo tasto premuto.

In somma, il codice dall'evento KeyPress della Textbox di una colonna potrebbe essere così:

LPARAMETERS nKeyCode, nShiftAltCtrl
IF BETWEEN(nKeyCode,48,57) OR BETWEEN(nKeyCode,65,122)
              DO FORM Trova.scx WITH THIS.PARENT,nKeyCode
ENDIF

Ovviamente bisogna di filtrare i tasti in modo di lasciare l'utente di avere la possibilità di utilizzare le frecce, PgUp,PgDown,… per potere muoversi nella griglia.

Quando la chiamata della form Trova viene fatta nell'evento KeyPress della cella si deve disinibire la possibilità di modificare la cella, quindi la proprietà ReadOnly della textbox deve avere il valore .T.

Come funziona la form Trova?

Ad ogni tasto premuto nella prima textbox, si esegue un comando LOCATE nel campo in quale si fa la ricerca . Se la funzione FOUND() torna il valore .T. , allora , nella seconda casella si va vedere il valore di quel campo. A questo punto, l'utente può premere il pulsante Successivo per trovare un successivo valore(se c'e') , poi può tornare ai valori trovati prima premendo il pulsante Precedente.

Se la funzione FOUND() torna .F., allora nella seconda casella viene scritta la stringa
** Non e' stato trovato nessun valore **

Sempre se Found() torna .F., l'ultimo tasto premuto dell'utente non e' stato "valido" , quindi viene visualizzato in rosso più alla destra della stringa che si cerca(nella prima casella).

Sempre sulla form Trova si trovano due checkbox : la prima "Ignora Minuscole/Maiuscole" che consente all'utente di fare delle ricerche "case-sensitive".

Per default, si ignora maiuscole/minuscole; la seconda "Cerca anche all'interno" permette di fare le ricerca anche al interno dei valori, cioè la ricerca si fa usando l'operatore $.

Alla fine , l'utente può premere INVIO per tornare alla griglia sul record che e' appena stato trovato oppure può premere ESC per tornare griglia sul record dove era prima di fare la ricerca.

La form Trova avrà come caption nella bara di titolo la caption della applicazione, Quindi se nel vostro programma di start viene scritto :

Application.Caption="Mio programma"

allora la form trova avrà scritto "Mio programma" nella bara di titolo.


Sono disponibili per il download la form Trova e anche una piccola form (ESEMPIOTROVA.SCX ) che fa vedere un esempio pratico di utilizzare la form Trova, cliccate sul seguente collegamento: Trova.scx & sct

EsempioTrova.sct & sct
FileList.dbf - una tabella che viene usata dalla form EsempioTrova

Istruzioni:
Copia tutti i file in una cartella : C:\XX\ (ad esempio)
Lancia VFP e nella finestra di comandi scrivi :
CD C:\XX\
Do form esempiotrova.scx

Per un utilizzo più avanzato della form Trova vedi l'articolo Griglia speciale sempre su FoxItaly.

© Articolo: Ernest Morariu Novembre 2001 - Riproduzione vietata

© FoxPro e Visual FoxPro sono un marchi registrati da Microsoft Corporation

 



Data: 19/11/2001
webmaster@foxitaly.com

 

dal 22 Giugno 1999