conversione degli items di un combobox

Moderator: Enrico Maria Giordano

Post Reply
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

conversione degli items di un combobox

Post by Silvio »

Caro Emg ho visto la tua risposta sull'altro forum
il mio problema è semplice
In automatico con una mia funzione specifica quando apro un archiviomi carico il testo dell'index di questo archivio cioè "per nome", "per cognome" caricandolo in un array e con il combobox potevo far funzionare gli items dello stesso poi mettendo naturalmente un "on change selindex(ocbx:nAt)" cosi il listbox si indicizzava sull'indice prescelto .

Adesso eliminando il combobox dal dialogo volendo usare il tab in fondo al xbrowse volevo fare la stessa cosa cioè farmi visualizzare tanti tabs per quanti indici dell'archivio quindi su aa[1] verrà memorizato "per nome", in aa[2] verrà memorizzato "per cognome" .
se io metto l'array nell'istruzione @tabs... Items aa quando vado a compilare mi fa errore STRtran come mai ?

Spero che tu abbia capito il problema
grazie
Best Regards, Saludos

Falconi Silvio
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: conversione degli items di un combobox

Post by Enrico Maria Giordano »

Francamente no, non l'ho capito. Probabilmente perché non conosco l'xBrowse. Ma il mio esempio c'entra qualcosa con il tuo problema?

EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

no non centra il xbrowse

immagina di avere un listbox e sotto al listbox ho posizionato un controllo tab con diversi tab " per nome","per cognome","per città"

nel vecchio programma io non usavo i tab ma usavo un combo dove mi caricavo gli items del combo in un array aaa[n]
però in non so di preciso il numero n

con una mia funzione quando apro l'archivio vado a controllare in un archivio di sistema quanti e quali indici abbia questo archivio ad esempio clienti ha tre indici il primo è per nome quindi inserisco nell'array la stringa "per nome" e cosi via

nel vecchi programma io usavo un combo nel quale erano visualizzati tutti questi items

l'utente selezionava un item e il listbox automaticamente si indicizzava sull'indice relativo

REDEFINE COMBOBOX oCbx VAR cVar ITEMS aIdx ID 210 OF oDlg;
ON CHANGE Sel_Index(oCbx)




Ora io vorrei sostituite il combo con il tab cosi che l'utente finale potesse cliccare su ogni prompt del tab e indicizzare il listbox per l'indice relativo

quindi devo fare un'istruzione :
@ nGridBottom, nSplit+2 TABS oApp():oTab ;
OPTION nOrder SIZE oApp():oWndMain:nWidth()-80, 12 PIXEL OF oApp():oDlg ;
ITEMS aIdx


dove aIdx è l'array con le stringhe relative agli indici

però quando compilo mi fa errore strtran

spero tu abbia capito adesso
Best Regards, Saludos

Falconi Silvio
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Visualizza il contenuto di aIdx e dimmi cosa contiene esattamente.

EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

ok
se faccio ? aidx[1]
mi da "per nome"

se faccio ? aidx[2]
mi da "per cognome"

ma se faccio ? aidx
mi da

parentesigraffa aperta tre puntini parentesigraffa chiusa

secondo te si puo' fare qualcosa ?
Best Regards, Saludos

Falconi Silvio
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Trovato! Fai così:

Code: Select all

#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL oDlg

    LOCAL oTabs

    LOCAL aIdx := { "Per nome", "Per cognome" }

    DEFINE DIALOG oDlg

    @ 0, 0 BUTTON "Change";
           ACTION ( oTabs:aPrompts[ 2 ] := "Changed",;
                    oTabs:Refresh() )

    @ 2, 0 TABS oTabs;
           OPTION 2

    oTabs:aPrompts = aIdx

    ACTIVATE DIALOG oDlg;
             CENTER

    RETURN NIL
EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

si funziona l'esempietto solo che io non so quanti indici ha un archivio
cioè io uso un archivio di systema con questi campi
tabella = nome dell'archio per esempio clienti.dbf
index = nome del tag cdx per esempio clinum.cdx
chiave = nome della chiave sul quale indicizzare l'archivio per esempio numcli
filename = informazioni dell'archivio per esempio anagrafica clienti
commento = testo dell'indice per esempio "per numero"

per ogni archivio dbf io inserisco in questo archivio di sistema tante linee quanti sono gli indici

nella funzione Apri_dbf io mi apro il file in rete gli assegno un alias e vado a indicizzare l'archivio per tutti gli indici e setto nell'array aidx il commento relativo agli indici creati per quell'archivio
in sostanza per aprire un file faccio :

Code: Select all

  oDCli:=Apri_dbf("Soci",.T.,.T.,aIdx)
   (oDCli)->(OrdSetFocus(2))
   (oDCli)->(DbGoTop())
   cVar:=aIdx[2]

la quarta linea non vuol dire che di indici ce ne sono due ma setto la variabile cvar al secondo index

Tutto questo per farti capire che io in realtà non conosco il numero degli indici glielo faccio calcolare in automatico con la funzione apri_dbf facendogli un loop nell'archivio di sistema detto sopra per cui lui apre l'archivio , caricagli indici e i commenti in aIdx , fa il focus nel secondo indice , va all'inizio del file, e assegna la variabile cvar
la variabile cvar mi serviva nel combobox
io uso questa tecnica per usare tanti archivi in un programma senza incappare nel famoso errore "alias don't exist" specialmente quando uso diverse finestre in mdi con gli stessi archivi , asegnando loro diversi alias
questa tecnica funzionante l'ho trovata in un vecchio programma di contabilità in clipper , e non mi ha dato mai problemi

se vuoi ti invio in privato le funzioni
apri_dbf/chiudi_dbf/verify_dbf/occupato
Best Regards, Saludos

Falconi Silvio
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Post by Enrico Maria Giordano »

Silvio wrote:si funziona l'esempietto solo che io non so quanti indici ha un archivio
Non ha importanza quanti elementi abbia aIdx. Riempilo e poi assegnalo ad aPrompts come ti ho fatto vedere e vedrai che funziona.

EMG
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

scusa mi ero perso a comprarmi un palmare . qtek 9600

ho provato ....
grazie funziona bene !!!!!!!!!!!!!!!!!!
Best Regards, Saludos

Falconi Silvio
User avatar
Ugo
Posts: 283
Joined: Sat Oct 15, 2005 6:40 am
Location: Turin, Italy

Post by Ugo »

Silvio,
puoi postare un preview dei tabs finiti?
o inviamelo alla mia casella privata.
Ciao, best regards,
Ugo
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

le tue caselle danno errore
Best Regards, Saludos

Falconi Silvio
User avatar
Ugo
Posts: 283
Joined: Sat Oct 15, 2005 6:40 am
Location: Turin, Italy

Post by Ugo »

Non mi risulta di avere le caselle che non funzionano...
Di spam ne ricevo a carrettate :cry:
Puoi riprovare?
Ciao, best regards,
Ugo
User avatar
Silvio
Posts: 3107
Joined: Fri Oct 07, 2005 6:28 pm
Location: Teramo,Italy

Post by Silvio »

Ancora non è finito ma sta uscendo qualcosa .....
Image
Best Regards, Saludos

Falconi Silvio
Post Reply