Page 1 of 1

Problema con tccolumn:New

Posted: Thu Feb 28, 2008 11:54 am
by Marco Turco
Salve,
sto cercando di creare un browse di un array senza utilizzare i comandi ADD COLUMN ma direttamente scrivendo il codice.
Il problema è che creando le colonne così appena eseguo il browse mi appare un errore di array access.

Credo di aver definito male il codice per assegnare le colonne al browser ma non capisco come altro fare. Ho preso spunto da tccolumn.ch.

Qualche idea ?

Questo è un codice di esempio:


aBrwArray:=array(0,2)
aadd(aBrwArray,{"01","Primo"})
aadd(aBrwArray,{"02","Secondo"})

@ 1.5,5 COLUMN BROWSE aObjects[6] OF oWnd SIZE 150, 135
aObjects[6]:SetArray(aBrwArray)

aObjects[6]:AddColumn(TCColumn:New("Num",aObjects[6]:aArray[aObjects[6]:nAt,1],,,,,100))

aObjects[6]:AddColumn(TCColumn:New("Titolo",aObjects[6]:aArray[aObjects[6]:nAt,2],,,,,100))

Re: Problema con tccolumn:New

Posted: Thu Feb 28, 2008 4:15 pm
by Enrico Maria Giordano
Per favore, prepara un microesempio che mostri il problema e che sia compilabile.

EMG

Posted: Thu Feb 28, 2008 6:12 pm
by Marco Turco
Ecco un self-contained che mostra il problema.
www.softwarexp.co.uk/beta/test.zip

il problema è sicuramente sulla sintassi che utilizzo per aggiungere le colonne al browse, però mi sono basato sulla conversione comando->codice di tccolumn.ch (vedi cartella include di FWH).

Che ne pensi ?

Posted: Fri Feb 29, 2008 3:32 pm
by Ugo
Prova così:

Code: Select all | Expand

    @ 1,2 COLUMN BROWSE aObjects[6] OF oWndChild SIZE 250, 195
    aObjects[6]:cAlias := "ARRAY"
    aObjects[6]:nAt    := 1
    aObjects[6]:AddColumn( TCColumn():New("Num",;
                                          {|| aBrwArray[aObjects[6]:nAt, 1] },;
                                          ,;
                                          ,;
                                          ,;
                                          ,;
                                          100 ))
    aObjects[6]:AddColumn( TCColumn():New("Title",;
                                          {|| aBrwArray[aObjects[6]:nAt, 2] },;
                                          ,;
                                          ,;
                                          ,;
                                          ,;
                                          100 ))
    aObjects[6]:SetArray(aBrwArray)
   oWndChild:SetControl( aObjects[6] )

Posted: Fri Feb 29, 2008 5:25 pm
by Marco Turco
Niente da fare. Il browse appare ma vuoto.

Comunque ho risolto con:

aObjects[6]:AddColumn(TCColumn():New("Num",{|x| ;
If(Pcount()>0, aObjects[6]:aArray[aObjects[6]:nAt, 1] :=x, aObjects[6]:aArray[aObjects[6]:nAt, 1])},,,,,100))

anche se mettendo questo codice in un ciclo for per creare tutte le colonne automaticamente mi appare un errore di array access.

In pratica vorrei fare qualcosa tipo

For i:=1 to 2
aObjects[6]:AddColumn(TCColumn():New("Num",{|x| ;
If(Pcount()>0, aObjects[6]:aArray[aObjects[6]:nAt, i] :=x, aObjects[6]:aArray[aObjects[6]:nAt, i])},,,,,100))

next

Posted: Sat Mar 01, 2008 8:25 am
by Marco Turco
Ok. Risolto. Grazie.