Página 1 de 1

Achoice() com + de 80 colunas

Enviado: 11 Jul 2004 19:44
por SandraD
Uso Clipper 5.2 e preciso visualizar um array com mais de 80 colunas. Como eu faço isso? :roll:

Será que alguém pode me ajudar?

Re: Achoice() com + de 80 colunas

Enviado: 11 Jul 2004 22:32
por Maligno
SandraD escreveu:Uso Clipper 5.2 e preciso visualizar um array com mais de 80 colunas. Como eu faço isso?
Imagino que você queira visualizar uma matriz com strings de tamanho superior a 80. É isso? Se for, existem várias maneiras. Fica difícil dar uma opinião certeira sem um descrição mais detalhada. Visualizar onde? Num GET, browser de dados, botão, janela, etc??? Poste o código (ou parte dele) para podermos analisar ou, pelo menos, descreva o problema com mais detalhes.

Mas, a princípio, isso parece ser o caso que se resolve com pouco código auxiliar. Aliás, eu próprio tenho situações semelhantes. Em GET, browser de arquivo, browser de matrizes, janelas, etc. Com/sem quebra de linha, com/sem hifenação, etc. Vai depender muito do seu caso.

[]'s
Maligno
http://www.buzinello.com/prg

Enviado: 11 Jul 2004 23:41
por SandraD
Quero exibir o vetor através de um achoice().

Algo como:


sele FILE
private VETX[0]
go top
do while !eof()
asize(VETX,len(VET)+1)
VETX[len(VETX)]=COD+' ¦ '+NOM+' ¦ '+dtoc(DAT)+' ¦ '+'...'
* Oque resulta em 120 caracteres, por exemplo
skip
enddo

* ...

OP=achoice(04,01,24,79,VETX)
* Como eu posso visualizar os demais caracteres?
return


É isso! Bobo, né, mas eu nunca precisei disto antes. :oops:

Agradeço se puder me ajudar.

Enviado: 12 Jul 2004 07:55
por Toledo
Olá a todos,

Sandra,

Esta rotina que você está querendo montar tem que ser com a ACHOICE()????

Como você está utilizando campos de um arquivo DBF, você poderia utilizar funções específicas para DBF, como DBEDIT(), BROWSE() ou uma TBROWSE.

Se realmente você precisar que seja com a ACHOICE(), com um jeitinho dá para fazer o que você quer. Fica um pouco complicado, mas dá!

Abraços,

Enviado: 12 Jul 2004 10:57
por Toledo
Sandra,

Segue abaixo um exemplo do que você pode fazer utilizando achoice():

No lugar de:
OP=achoice(04,01,24,79,VETX)
Troque por:
OP=machoice(04,01,24,79,VETX)
Coloque a função abaixo junto com as suas rotinas:

Código: Selecionar todos

PROC MACHOICE(vx_ls,vx_cs,vx_li,vx_ci,vx_matriz)
LOCAL vx_ret, vx_tam, vx_op, vx_colmax
vx_col:=1
@ vx_ls,vx_cs TO vx_li,vx_ci 
vx_tam:=LEN(vx_matriz[1])
vx_larg:=(vx_ci-vx_cs)-1
vx_colmax:=vx_tam-(vx_larg-1)
PRIV vx_mat[LEN(vx_matriz)]
vx_elem=1
vx_posi=1
DO WHILE .T.
 FOR i=1 TO LEN(vx_matriz)
  vx_mat[i]=SUBS(vx_matriz[i],vx_col,vx_larg)
 NEXT
 vx_op:=achoice(vx_ls+1,vx_cs+1,vx_li-1,;
 vx_ci-1,vx_mat,.T.,"AFUNC",vx_elem,vx_posi)
 DO CASE
   CASE LASTKEY()=27
    vx_ret:=0
    EXIT
   CASE LASTKEY()=13
    vx_ret:=vx_op
    EXIT
   CASE LASTKEY()=4
    vx_col+=1
    IF vx_col>vx_colmax
      vx_col:=vx_colmax
    ENDIF
   CASE LASTKEY()=19
    vx_col-=1
    IF vx_col<1
     vx_col:=1
    ENDIF
 ENDCASE
ENDDO
RETU (vx_ret)

FUNC AFUNC
PARAMETERS modo, elem, posi
vx_elem:=elem
vx_posi:=posi
IF modo=3
 IF LASTKEY()=27
  RETU (0)
 ELSEIF LASTKEY()=13
  RETU (1)
 ELSEIF LASTKEY()=4 .OR. LASTKEY()=19
  RETU (0)
 ENDIF
ENDIF
RETU (2)
Espero que seja isto que você queria!

Lembrando: com achoice() você só vai consegui mostrar 4096 registros do DBF, que é o número máximo de elementos por matriz.

Abraços,

Obrigada.

Enviado: 12 Jul 2004 12:33
por SandraD
Vou tentar as outras funcoes e também a sua machoice.

Muito obrigada.