Será que alguém pode me ajudar?
Achoice() com + de 80 colunas
Moderador: Moderadores
Achoice() com + de 80 colunas
Uso Clipper 5.2 e preciso visualizar um array com mais de 80 colunas. Como eu faço isso?
Será que alguém pode me ajudar?
Será que alguém pode me ajudar?
Re: Achoice() com + de 80 colunas
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.SandraD escreveu:Uso Clipper 5.2 e preciso visualizar um array com mais de 80 colunas. Como eu faço isso?
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
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.
Agradeço se puder me ajudar.
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.
Agradeço se puder me ajudar.
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
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,
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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Sandra,
Segue abaixo um exemplo do que você pode fazer utilizando achoice():
No lugar de:
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,
Segue abaixo um exemplo do que você pode fazer utilizando achoice():
No lugar de:
Troque por:OP=achoice(04,01,24,79,VETX)
Coloque a função abaixo junto com as suas rotinas:OP=machoice(04,01,24,79,VETX)
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)
Lembrando: com achoice() você só vai consegui mostrar 4096 registros do DBF, que é o número máximo de elementos por matriz.
Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao

