Achoice() com + de 80 colunas

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

SandraD
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 11 Jul 2004 19:34

Achoice() com + de 80 colunas

Mensagem 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?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Achoice() com + de 80 colunas

Mensagem 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
SandraD
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 11 Jul 2004 19:34

Mensagem 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.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem 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,
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
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem 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,
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
SandraD
Usuário Nível 1
Usuário Nível 1
Mensagens: 5
Registrado em: 11 Jul 2004 19:34

Obrigada.

Mensagem por SandraD »

Vou tentar as outras funcoes e também a sua machoice.

Muito obrigada.
Responder