Clipper On Line • Ver Tópico - Pesquisa Letra a Letra, Como por cursor no topo do grid?

Pesquisa Letra a Letra, Como por cursor no topo do grid?

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Pesquisa Letra a Letra, Como por cursor no topo do grid?

Mensagempor Paulao » 05 Jul 2012 19:23

Boa noite pessoal, estou usando em meu sistema um grid que vai pesquisando letra a letra, muito interressante de se ver funcionando, o que eu gostaria que quando teclar Enter abrir o primeiro registro do grid. Exemplo Digito Paulo no textbox a rotina vai me mostrar todos os Paulos do arquivo, se eu teclar enter ele abre o formulario de clientes no primeiro paulo do grid. A rotina que utilizo e esta:

  @ 440,125 textbox txt_pesquisa;
              width 495;
              tooltip 'Digite o começo do nome que deseja encontrar';
              size 10;
              fontcolor BLACK;
              maxlength 40;
              uppercase;
              on change {|| Pesq_Cli()}

@ 070,010 grid grid_cli;
                 of form_cli;
                 width 770;
                 height 348;
                 HEADERS {'Razão Social','Nome Fantasia','Telefone','Fax','C.N.P.J.','C.N.P.F','|'} ;
                 WIDTHS {300,140,140,100,100,100,0};
                 backcolor _AMARELO ;
                 on dblclick Altera_Cliente()

*________________________________________________________________________________________________
function Pesq_Cli()

local cPesq                      := upper(alltrim(form_cli.txt_pesquisa.value))
local nTamanhoNomeParaPesquisa   := len(cPesq)
local nQuantRegistrosProcessados := 0

dbselectarea('clinomad')
ordsetfocus('NOME_CLI')
dbseek(cPesq)

if lGridFreeze
   form_cli.grid_cli.disableupdate
endif

delete item all from grid_cli of form_cli

while .not. eof()
      if substr(field->NOME_CLI,1,nTamanhoNomeParaPesquisa) == cPesq
         nQuantRegistrosProcessados += 1
         add item {clinomad->nome_cli,clinomad->fant_cli,clinomad->tele_cli,clinomad->faxx_cli,clinomad->cnpj_cli,clinomad->cnpf_cli,clinomad->flag_cli} to grid_cli of form_cli
      elseif substr(field->NOME_CLI,1,nTamanhoNomeParaPesquisa) > cPesq
         exit
      endif
      dbskip()
end

if lGridFreeze
   form_cli.grid_cli.enableupdate
endif
return(nil)

*________________________________________________________________________________________________



Obrigado a todos do forum, comecei a migrar meus sistemas de clipper 5.2 para Harbour Minigui e estou gostando muito do resultado. Tenho apanhado muito mas a coisa ta indo pra frente
Paulao
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 183
Data de registro: 09 Jul 2004 11:03
Cidade/Estado: Franca
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Pesquisa Letra a Letra, Como por cursor no topo do grid?

Mensagempor Imatech » 05 Jul 2012 19:32

EVENTO: ON ENTER


@ 440,125 textbox txt_pesquisa;
       width 495;
       tooltip 'Digite o começo do nome que deseja encontrar';
       size 10;
       fontcolor BLACK;
       maxlength 40;
       uppercase;
       on change {|| Pesq_Cli()} ;
       ON ENTER { || Seleciona_Linha_do_Grid_com_Sua_Funcao() }



ComboSearchBox: Componente interessante para seu app
http://www.hmgforum.com/viewtopic.php?f=9&t=1422&hilit=combosearchbox
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar de usuário

Imatech
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 350
Data de registro: 24 Ago 2010 23:48
Cidade/Estado: Goiânia-GO
Curtiu: 4 vezes
Mens.Curtidas: 27 vezes

Pesquisa Letra a Letra, Como por cursor no topo do grid?

Mensagempor luiz antonio da silva » 05 Jul 2012 19:44

Olá Paulao !

para por o cursor no primeiro registro do grid coloque logo apos terminar o while:

form_cli.grid_cli.value:=1
form_cli.grid_cli.refresh

isso acredito que reolva seu problema.

Luiz.
HMG 3.4.4 - SQL SERVER - ORACLE
luiz antonio da silva
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 161
Data de registro: 21 Nov 2006 21:12
Cidade/Estado: serrana-sp
Curtiu: 13 vezes
Mens.Curtidas: 10 vezes

Pesquisa Letra a Letra, Como por cursor no topo do grid?

Mensagempor Paulao » 05 Jul 2012 19:59

Antonio matou a pau, resolvi o problema, obrigado pela ajuda.

Ronaldo eu ja estou usando o combosearchbox no meu sistema, vc saberia ne dizer como criar o arquivo LST eu criei uma rotina que vai colcando os valores linha a linha num arquivo e depois salvo ele com a extensão .LST.

Obrigado aos amigos Antonio e Ronaldo
Paulao
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 183
Data de registro: 09 Jul 2004 11:03
Cidade/Estado: Franca
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Pesquisa Letra a Letra, Como por cursor no topo do grid?

Mensagempor luiz antonio da silva » 05 Jul 2012 20:08

Olá novamente...rs

criar arquivo LST.

arq:=fcreate("arquivo.lst")
for x=1 to form_cli.grid_cli.itemcount
     fwrite(arq, form_cli.grid_cli.cell(x,1)+chr(10))
next x
fclose(arq)


acho que é isso.

Luiz.
Nota de Moderação:
Pablo César: Mensagem editada para colocar a tag [ code ]
Veja como utilizar esta tag: Clique aqui
HMG 3.4.4 - SQL SERVER - ORACLE
luiz antonio da silva
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 161
Data de registro: 21 Nov 2006 21:12
Cidade/Estado: serrana-sp
Curtiu: 13 vezes
Mens.Curtidas: 10 vezes

Pesquisa Letra a Letra, Como por cursor no topo do grid?

Mensagempor Imatech » 05 Jul 2012 20:13

Olá !

Os arquivos .LST são totalmente desnecessários (exceto para os exemplos que voce deve estar se baseando)...

O importante é o array/vetor que deve ser informado na propriedde "items" dos ComboSearchBox


* Array / Vetor
Local aSearch := {}

* ALIMENTA O ARRAY A PARTIR DE UMA TABELA DBF
TESTDBF->( dbEval( { || AADD( aSearch, TRIM( TESTDBF->QQUERCAMPO ) ) } ) )

* ComboSearchBox
DEFINE ComboSearchBox
...
items aSearch
...
END ComboSearchBox

M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar de usuário

Imatech
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 350
Data de registro: 24 Ago 2010 23:48
Cidade/Estado: Goiânia-GO
Curtiu: 4 vezes
Mens.Curtidas: 27 vezes

Pesquisa Letra a Letra, Como por cursor no topo do grid?

Mensagempor Paulao » 05 Jul 2012 20:42

Muito obrigado Antonio e Ronaldo

Ronaldo esta rotina de colocar campos do bdf num array vai ser muito util, estava mesmo procurando por isto

Valeu
Paulao
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 183
Data de registro: 09 Jul 2004 11:03
Cidade/Estado: Franca
Curtiu: 0 vez
Mens.Curtidas: 1 vez




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro