Ajuda com Browse ou DbEdit()...
Enviado: 14 Jun 2010 22:14
Boa noite, colegas!
Tenho o seguinte caso: Gostaria de uma funçäo onde, em um browse, ao teclar uma letra a barra se desloque até o primeiro ítem da letra, por exemplo, ao teclar "P" a barra vá até o primeiro ítem começando com a letra "P", mais expecíficamente:
Montei um programa para gerenciar minhas músicas de videokê e o arquivo "lista.dbf" tem a sequinte estrututra:
numero C 4
musica C 50
na janela browse, lista-se o código da música (cantor - musica). Está indexado por cantor, entäo, ao se teclar "D", por exemplo, gostaria que fosse até o primeiro ítem da música começando com"D". Já fiz isso com vetores, mas faz tanto tempo que já nem me lembro mais...hehe
Como queria um visual mais legal, fiz em FoxPro, versão For Windows 2.6, já que aceita os mesmos comandos do clipper (programava em Summer'87).
Para vocês que são fera, deve ser moleza... entäo, se puderem ajudar o véio esquecido aqui, agradeço!!!
Abraços!
Bom dia a todos!
ontem, "fuçando" os arquivos de ajuda do FoxPro, montei essa procedure para busca, mas tá acontecendo o seguinte:
quando o resultado do "set filter" resulta entre 1 e 3 (Acha só uma ou duas ou três músicas)dá a mensagem da procedure errhand, e logo em seguida lista os resultados normalmente. Resultados com mais de quatro músicas, roda normal. Achei que era erro na estrutura, como falta de endif ou outros, então usei o DFlow, que não achou erros...
Antecipadamente, agradeço a quem puder dar uma olhada.
Abraços!
Tenho o seguinte caso: Gostaria de uma funçäo onde, em um browse, ao teclar uma letra a barra se desloque até o primeiro ítem da letra, por exemplo, ao teclar "P" a barra vá até o primeiro ítem começando com a letra "P", mais expecíficamente:
Montei um programa para gerenciar minhas músicas de videokê e o arquivo "lista.dbf" tem a sequinte estrututra:
numero C 4
musica C 50
na janela browse, lista-se o código da música (cantor - musica). Está indexado por cantor, entäo, ao se teclar "D", por exemplo, gostaria que fosse até o primeiro ítem da música começando com"D". Já fiz isso com vetores, mas faz tanto tempo que já nem me lembro mais...hehe
Como queria um visual mais legal, fiz em FoxPro, versão For Windows 2.6, já que aceita os mesmos comandos do clipper (programava em Summer'87).
Para vocês que são fera, deve ser moleza... entäo, se puderem ajudar o véio esquecido aqui, agradeço!!!
Abraços!
Bom dia a todos!
ontem, "fuçando" os arquivos de ajuda do FoxPro, montei essa procedure para busca, mas tá acontecendo o seguinte:
quando o resultado do "set filter" resulta entre 1 e 3 (Acha só uma ou duas ou três músicas)dá a mensagem da procedure errhand, e logo em seguida lista os resultados normalmente. Resultados com mais de quatro músicas, roda normal. Achei que era erro na estrutura, como falta de endif ou outros, então usei o DFlow, que não achou erros...
Antecipadamente, agradeço a quem puder dar uma olhada.
Abraços!
Código: Selecionar todos
procedure busca
clear
use lista
set safety off
index on musica to musica
set index to musica
buscar=space(30)
@ 1,2 say "Buscar :" font "arial",18 get buscar pict "@!" font "arial",18
read
buscar=alltrim(buscar)
if lastkey()=27 .or. lastkey()=13 .and. empty(buscar)
return
endif
set exact off
set filter to buscar$musica
COUNT TO m.count
if m.count=0
waint window "Nao achei nada contendo &buscar ... Desculpe..." timeout 2
return
endif
DIMENSION musicas[m.count,1]
COPY TO ARRAY musicas FIELD musica
= ASORT(musicas, AELEMENT(musicas,4))
WAIT WINDOW 'Listando todos com conteudo &buscar . Escolha a Musica e tecle ENTER' NOWAIT
@ 0,0 GET m.choice FROM musicas RANGE 1 SIZE 22,95 DEFAULT 1 font "arial",20
READ
clear
xmusica=alltrim(musicas[m.choice])
loca all for alltrim(musica)==alltrim(xmusica)
if eof()
wait window "Musica nao encontrada..." timeout 5
else
@ 2,3 say musica font "arial",20
@ 3,3 say numero font "arial",20
@ 5,3 say 'Tocar essa musica ? ENTER - Toca ESC - Cancela' font "arial",20
toca='S'
read
if lastkey()=27
return
endif
if lastkey()==13
wcod=numero
xcod=wcod+"M"
wcod=wcod+".dat"
if .not. file(wcod)
wcod=xcod+".dat"
endif
if .not. file(wcod)
wait window "Musica nao encontrada..." timeout 2
return
endif
set filter to
set exact on
if len(wcod)<=8
! /N mplayer.exe -stereo 0 -fs -quiet -msglevel all=-1 &wcod
else
! /N mplayer.exe -af channels=1 -fs -quiet -msglevel all=-1 &wcod
endif
endif
endif
PROCEDURE errhand
PARAMETER merror, mess, mess1, mprog, mlineno
WAIT WINDOW "Nao achei nada com esse texto..." timeout 2