Página 1 de 2

Grid com acesso indireto

Enviado: 26 Out 2011 17:22
por gilsonpaulo
Ola a todos como faço para pegar o valor da linha de um grid e sincronizar com banco de dados dbf. Note que não estou fazendo acesso direto ao dbf.

Código: Selecionar todos

DEFINE GRID grid_fcliente
        ROW    255
        COL    5
        WIDTH  863
        HEIGHT 280
        ITEMS tempcli
        VALUE Nil
        WIDTHS { 55,350,85,85,85 }
        HEADERS {'Codigo','Descricao','Telefone','Fax','Celular'}
        FONTNAME "Arial"
        FONTSIZE 9
        TOOLTIP ""
        ONCHANGE main_grid_fcliente_onchange()
        ONGOTFOCUS Nil
        ONLOSTFOCUS Nil
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        ONDBLCLICK Nil
        ONHEADCLICK Nil
        ONQUERYDATA Nil
        MULTISELECT .F.
        ALLOWEDIT .F.
        VIRTUAL .F.
        DYNAMICBACKCOLOR Nil
        DYNAMICFORECOLOR Nil
        COLUMNWHEN Nil
        COLUMNVALID Nil
        COLUMNCONTROLS Nil
        SHOWHEADERS .T.
        CELLNAVIGATION .F.
        NOLINES .F.
        HELPID Nil
        IMAGE Nil
        JUSTIFY Nil
        ITEMCOUNT Nil
        BACKCOLOR NIL
        FONTCOLOR NIL
        HEADERIMAGES Nil
        ROWSOURCE Nil
        COLUMNFIELDS Nil
        ALLOWAPPEND .F.
        ALLOWDELETE .F.
        BUFFERED .F.
        DYNAMICDISPLAY Nil
        ONSAVE Nil
        LOCKCOLUMNS 0
    END GRID
Preencho a grid assim

Código: Selecionar todos

Function Fcliente_temporario


	select bdcli
	go top
	do while .not. eof()
		add item {alltrim(bdcli->clicod),;
			alltrim(bdcli->clides),;
			alltrim(bdcli->clitel),;
			alltrim(bdcli->clifax),;
			alltrim(bdcli->clicel)} to grid_fcliente of Main
		skip
	enddo
	go top
	
Return
Desde ja agradeço qualquer ajuda.

Grid com acesso indireto

Enviado: 27 Out 2011 13:07
por gilsonpaulo
Ja descobri

Código: Selecionar todos

Local cCliente := PegaValorDaColuna( "grid_fcliente" ,  "Main" , 1 )

Código: Selecionar todos

Function PegaValorDaColuna( xObj, xForm, nCol)

	 Local nPos := GetProperty ( xForm , xObj , 'Value' )
	 Local aRet := GetProperty ( xForm , xObj , 'Item' , nPos )

Return aRet[nCol]

Grid com acesso indireto

Enviado: 27 Out 2011 16:23
por Pablo César
Desculpe Paulo, eu não tinha entendido a sua pergunta e acabei envolvendo-me com outras mensagens, esquecendo-me da sua. Mas é incívelo que o GetProperty e SetProperty podem fazer...

Grid com acesso indireto

Enviado: 27 Out 2011 20:11
por gilsonpaulo
Muitissimo obrigado pelo respaldo Pablo, mas notei que ha varias coisa da hmg para quem esta começando agora, que não estão documentadas, no help da hmg não encontrei nada sobre GetProperty. Mas migrei de grids com array para browse com dbfs temporarios em memoria. Mas ainda vou estudar um pouco mais sobre grids.

PS.: HMG.3.0.39

Grid com acesso indireto

Enviado: 27 Out 2011 21:41
por Pablo César
Bom pode ser que alguma mudanças que foram implementadas com certeza não estão atualizadas no help hmg .chm, mas estas funções GetProperty e SetProperty ja existiam sim. Não sei se você já possui o help chm (tem no arquivo anexo) ? Tem também em Harbour (não sei a versão). Mas espero que ajude, eu uso direto no Notepad++

Grid com acesso indireto

Enviado: 28 Out 2011 19:38
por gilsonpaulo
Mais uma duvida, ascan funciona em grid?

Aqui carrego a array.:

Código: Selecionar todos

Public tempcli:={}

Function Fcliente_temporario

	select bdcli
	go top
	do while .not. eof()
		add item {alltrim(bdcli->clicod),;
			alltrim(bdcli->clides),;
			alltrim(bdcli->clitel),;
			alltrim(bdcli->clifax),;
			alltrim(bdcli->clicel)} to grid_fcliente of Main
		skip
	enddo
	go top

Return
Se pesquiso, só me retorna 0.:

Código: Selecionar todos

ascan(tempcli,{|x|x[1]="003569"})

Grid com acesso indireto

Enviado: 28 Out 2011 21:26
por Pablo César
Neste exemplo faz a busca através de ASCAN, veja: http://hmgforum.com/viewtopic.php?f=15& ... GRID#p1609

Grid com acesso indireto

Enviado: 29 Out 2011 08:57
por gilsonpaulo
Bom dia Pablo.

Veja que no forum que vc me indicou a busca não é diretamente na array da grid:

Código: Selecionar todos

do while !eof()
         aadd(aGrid, {ascan(aItemSource, {|x| x == saledtl->itemcd}), ;
            saledtl->rate, saledtl->qty, saledtl->rate*saledtl->qty})
         continue
      enddo
      form_1.grdSaledtl.DeleteAllItems()
      for i = 1 to len(aGrid)
         form_1.grdSaledtl.additem(aGrid[i])
      next
Fiz assim e funcionou. O bom seria se fosse direto na grid.

Código: Selecionar todos

Function Fcliente_temporario

	select bdcli
	go top
	do while .not. eof()
		aadd(tempcli,{alltrim(bdcli->clicod),;
			alltrim(bdcli->clides),;
			alltrim(bdcli->clitel),;
			alltrim(bdcli->clifax),;
			alltrim(bdcli->clicel)})
		skip
	enddo
	
	for i = 1 to len(tempcli)
         Main.grid_fcliente.additem(tempcli[i])
    next
	
	MsgBox(str(ascan(tempcli,{|x|x[1]="003569"})))

Return
Muitissimo obrigado.

Grid com acesso indireto

Enviado: 29 Out 2011 09:46
por asimoes
Olá,

Pesquisando em um código meu, achei isso veja se ajuda:

Assim você faz acesso direto ao array da grid

[2] Corresponde ao segundo campo da grid

Código: Selecionar todos

FOR I:=1 TO form_1.grdSaledtl.ItemCount
   cColuna:=form_1.grdSaledtl.Item(I)[2]
NEXT

Grid com acesso indireto

Enviado: 29 Out 2011 11:10
por gilsonpaulo
Obrigado asimoes,mas por enquanto vou do modo como o Pablo me passou. Mas vou dar uma estudada nessa sua opcao.

Segue Codigo.:

Código: Selecionar todos

#include <hmg.ch>

Function Main
		
		Public	tempcli:={}

		var_incluir		:=	.f.
		var_alterar		:=	.f.
		
		Set Interactiveclose oFF
		Set Deleted ON
		Set Navigation Extended		
		Set Multiple OFF
*		Set Autopen OFF
		Set Language to Portuguese
		Set Date Format "dd/mm/yyyy" 
		Set Epoch to Year(Date())-50 
		request dbfcdx
		rddsetdefault("dbfcdx")
		Dbsetdriver("dbfcdx")
		
		select 1
		use bdcli shared alias bdcli
		set index to bdcli
		set order to tag clides
		go top
		
		select 2
		use cep2007 shared alias cep2007
		set index to cep2007
		go top
		
        Load Window Main
		Fcliente_temporario()
		Fcliente_dados()
		Fcliente_bloqueia_tela()
		Main.grid_fcliente.Setfocus
		Main.grid_fcliente.Value	:=	1
		Main.Center
        Main.Activate

Return

Function Fcliente_temporario

	tempcli:={}
	select bdcli
	go top
	do while .not. eof()
		aadd(tempcli,{alltrim(bdcli->clicod),;
			alltrim(bdcli->clides),;
			alltrim(bdcli->clitel),;
			alltrim(bdcli->clifax),;
			alltrim(bdcli->clicel),;
			alltrim(bdcli->clicont)})
		skip
	enddo
	for i = 1 to len(tempcli)
         Main.grid_fcliente.additem(tempcli[i])
    next
	go top

Return

	
Function Fcliente_dados

	Main.txt_fcliente_codigo.Value    		:=  bdcli->clicod
	Main.txt_fcliente_descricao.Value		:=  bdcli->clides
	Main.txt_fcliente_cep.Value       		:=  transform(bdcli->clicep, '@R 99999-999')
	Main.txt_fcliente_endereco.Value  		:=  bdcli->cliend
	Main.txt_fcliente_numero.Value    		:=  bdcli->clinum
	Main.txt_fcliente_bairro.Value    		:=  bdcli->clibai
	Main.txt_fcliente_cidade.Value    		:=  bdcli->clicid
	Main.txt_fcliente_uf.Value        		:=  bdcli->cliuf
	if len(alltrim(bdcli->clicpf)) = 14
		Main.txt_fcliente_cnpj_cpf.Value  	:=  transform(bdcli->clicpf, '@R 99.999.999/9999-99')
	else
		Main.txt_fcliente_cnpj_cpf.Value  	:=  transform(bdcli->clicpf, '@R 999.999.999-99')
	endif
	Main.txt_fcliente_insc_rg.Value   		:=  bdcli->clirg
	Main.txt_fcliente_telefone.Value  		:=  transform(bdcli->clitel, '@R (99)9999-9999')
	Main.txt_fcliente_fax.Value       		:=  transform(bdcli->clifax, '@R (99)9999-9999')
	Main.txt_fcliente_celular.Value   		:=  transform(bdcli->clicel, '@R (99)9999-9999')
	Main.txt_fcliente_contato.Value   		:=  bdcli->clicont
	Main.txt_fcliente_email.Value   		:=  bdcli->climail
	Main.txt_fcliente_web.Value   			:=  bdcli->cliweb
	
Return

Function Fcliente_bloqueia_tela

	Main.txt_fcliente_codigo.Enabled    	:=  .f.
	Main.txt_fcliente_descricao.Enabled 	:=  .f.
	Main.txt_fcliente_cep.Enabled       	:=  .f.
	Main.txt_fcliente_endereco.Enabled  	:=  .f.
	Main.txt_fcliente_numero.Enabled    	:=  .f.
	Main.txt_fcliente_bairro.Enabled    	:=  .f.
	Main.txt_fcliente_cidade.Enabled    	:=  .f.
	Main.txt_fcliente_uf.Enabled        	:=  .f.
	Main.txt_fcliente_cnpj_cpf.Enabled  	:=  .f.
	Main.txt_fcliente_insc_rg.Enabled   	:=  .f.
	Main.txt_fcliente_telefone.Enabled  	:=  .f.
	Main.txt_fcliente_fax.Enabled       	:=  .f.
	Main.txt_fcliente_celular.Enabled   	:=  .f.
	Main.txt_fcliente_contato.Enabled 	  	:=  .f.
	Main.txt_fcliente_email.Enabled   		:=  .f.
	Main.txt_fcliente_web.Enabled   		:=  .f.
	Main.btn_fcliente_gravar.Enabled		:=	.f.
	Main.btn_fcliente_cancelar.Enabled		:=	.f.
	Main.btn_fcliente_procurar.Enabled		:=	.t.
	Main.txt_fcliente_pesquisar.Enabled		:=	.t.
	Main.grid_fcliente.SetFocus

Return

Function fcliente_btn_fcliente_incluir_action()
	
	var_incluir 		:=	.t.
		
	Main.btn_fcliente_alterar.Enabled		:=	.f.
	Main.btn_fcliente_excluir.Enabled		:=	.f.
	Main.btn_fcliente_sair.Enabled			:=	.f.
	Main.btn_fcliente_incluir.Enabled		:=	.f.
	Main.btn_fcliente_gravar.Enabled		:=	.t.
	Main.btn_fcliente_cancelar.Enabled		:=	.t.
	Main.btn_fcliente_procurar.Enabled		:=	.f.
	Main.txt_fcliente_pesquisar.Enabled		:=	.f.
	
	Main.txt_fcliente_descricao.Enabled 	:=  .t.
	Main.txt_fcliente_cep.Enabled       	:=  .t.
	Main.txt_fcliente_endereco.Enabled  	:=  .t.
	Main.txt_fcliente_numero.Enabled    	:=  .t.
	Main.txt_fcliente_bairro.Enabled    	:=  .t.
	Main.txt_fcliente_cidade.Enabled    	:=  .t.
	Main.txt_fcliente_uf.Enabled        	:=  .t.
	Main.txt_fcliente_cnpj_cpf.Enabled  	:=  .t.
	Main.txt_fcliente_insc_rg.Enabled   	:=  .t.
	Main.txt_fcliente_telefone.Enabled  	:=  .t.
	Main.txt_fcliente_fax.Enabled       	:=  .t.
	Main.txt_fcliente_celular.Enabled   	:=  .t.
	Main.txt_fcliente_contato.Enabled 	  	:=  .t.
	Main.txt_fcliente_email.Enabled   		:=  .t.
	Main.txt_fcliente_web.Enabled   		:=  .t.
	Main.btn_fcliente_gravar.Enabled		:=	.t.
	Main.btn_fcliente_cancelar.Enabled		:=	.t.

	Main.txt_fcliente_codigo.Value    		:=  ''
	Main.txt_fcliente_descricao.Value		:=  ''
	Main.txt_fcliente_cep.Value       		:=  ''
	Main.txt_fcliente_endereco.Value  		:=  ''
	Main.txt_fcliente_numero.Value    		:=  ''
	Main.txt_fcliente_bairro.Value    		:=  ''
	Main.txt_fcliente_cidade.Value    		:=  ''
	Main.txt_fcliente_uf.Value        		:=  ''
	Main.txt_fcliente_cnpj_cpf.Value  		:=  ''
	Main.txt_fcliente_insc_rg.Value   		:=  ''
	Main.txt_fcliente_telefone.Value  		:=  ''
	Main.txt_fcliente_fax.Value       		:=  ''
	Main.txt_fcliente_celular.Value   		:=  ''
	Main.txt_fcliente_contato.Value   		:=  ''
	Main.txt_fcliente_email.Value   		:=  ''
	Main.txt_fcliente_web.Value   			:=  ''
	
	Main.txt_fcliente_descricao.Setfocus
	
Return	

Function fcliente_btn_fcliente_cancelar_action

	Fcliente_bloqueia_tela()
	Main_grid_fcliente_onchange()
	Main.btn_fcliente_alterar.Enabled		:=	.t.
	Main.btn_fcliente_excluir.Enabled		:=	.t.
	Main.btn_fcliente_sair.Enabled			:=	.t.
	Main.btn_fcliente_incluir.Enabled		:=	.t.
	Main.btn_fcliente_gravar.Enabled		:=	.f.
	Main.btn_fcliente_cancelar.Enabled		:=	.f.
	
	var_bloqueio	:=	.f.
	var_incluir		:=	.f.
	var_alterar		:=	.f.
	
Return

Function fcliente_btn_fcliente_alterar_action

	var_alterar := .t.
	Main.btn_fcliente_alterar.Enabled		:=	.f.
	Main.btn_fcliente_excluir.Enabled		:=	.f.
	Main.btn_fcliente_sair.Enabled			:=	.f.
	Main.btn_fcliente_incluir.Enabled		:=	.f.
	Main.btn_fcliente_gravar.Enabled		:=	.t.
	Main.btn_fcliente_cancelar.Enabled		:=	.t.
	Main.txt_fcliente_descricao.Enabled 	:=  .t.
	Main.txt_fcliente_cep.Enabled       	:=  .t.
	Main.txt_fcliente_endereco.Enabled  	:=  .t.
	Main.txt_fcliente_numero.Enabled    	:=  .t.
	Main.txt_fcliente_bairro.Enabled    	:=  .t.
	Main.txt_fcliente_cidade.Enabled    	:=  .t.
	Main.txt_fcliente_uf.Enabled        	:=  .t.
	Main.txt_fcliente_cnpj_cpf.Enabled  	:=  .t.
	Main.txt_fcliente_insc_rg.Enabled   	:=  .t.
	Main.txt_fcliente_telefone.Enabled  	:=  .t.
	Main.txt_fcliente_fax.Enabled       	:=  .t.
	Main.txt_fcliente_celular.Enabled   	:=  .t.
	Main.txt_fcliente_contato.Enabled 	  	:=  .t.
	Main.txt_fcliente_email.Enabled   		:=  .t.
	Main.txt_fcliente_web.Enabled   		:=  .t.
	Main.btn_fcliente_procurar.Enabled		:=	.f.
	Main.txt_fcliente_pesquisar.Enabled		:=	.f.
	Main.txt_fcliente_descricao.Setfocus

Return

Function fcliente_btn_fcliente_gravar_action

if var_incluir = .t.
	
	select bdcli
	set order to tag clicod
	bus = 0
	do while .t.
		bus++
		go top
		seek strzero(bus,6,0)
		if .not. found()
			iniaux = bus
			exit
		endif
	enddo
		
	append blank
	if rlock()
		replace bdcli->clicod	with	strzero(iniaux,6,0)
		replace bdcli->clides	with	Main.txt_fcliente_descricao.Value
		replace bdcli->clicep	with	strtran(Main.txt_fcliente_cep.Value,"-")
		replace bdcli->cliend	with	Main.txt_fcliente_endereco.Value
		replace bdcli->clinum	with	Main.txt_fcliente_numero.Value
		replace	bdcli->clibai	with	Main.txt_fcliente_bairro.Value
		replace bdcli->clicid	with	Main.txt_fcliente_cidade.Value
		replace bdcli->cliuf	with	Main.txt_fcliente_uf.Value
		replace	bdcli->clicpf	with	Main.txt_fcliente_cnpj_cpf.Value
		replace bdcli->clirg	with	Main.txt_fcliente_insc_rg.Value
		replace bdcli->clitel	with	strtran(strtran(strtran(Main.txt_fcliente_telefone.Value,"("),")"),"-")
		replace bdcli->clifax	with	strtran(strtran(strtran(Main.txt_fcliente_fax.Value,"("),")"),"-")
		replace bdcli->clicel	with	strtran(strtran(strtran(Main.txt_fcliente_celular.Value,"("),")"),"-")
		replace bdcli->clicont	with	Main.txt_fcliente_contato.Value
		replace bdcli->climail	with	Main.txt_fcliente_email.Value
		replace bdcli->cliweb	with	Main.txt_fcliente_web.Value
		commit
		unlock
	endif
	set order to tag clides
	var_incluir := .f.
	Main.grid_fcliente.deleteallitems
	Fcliente_temporario()
	Main.grid_fcliente.Value	:=	ascan(tempcli,{|x|x[1]=strzero(iniaux,6,0)})
	main_grid_fcliente_onchange()
	Fcliente_bloqueia_tela()
	Main.grid_fcliente.Refresh
	Main.grid_fcliente.SetFocus
endif

if var_alterar	:=	.t.

	select bdcli
	if rlock()
		replace bdcli->clides	with	Main.txt_fcliente_descricao.Value
		replace bdcli->clicep	with	strtran(Main.txt_fcliente_cep.Value,"-")
		replace bdcli->cliend	with	Main.txt_fcliente_endereco.Value
		replace bdcli->clinum	with	Main.txt_fcliente_numero.Value
		replace	bdcli->clibai	with	Main.txt_fcliente_bairro.Value
		replace bdcli->clicid	with	Main.txt_fcliente_cidade.Value
		replace bdcli->cliuf	with	Main.txt_fcliente_uf.Value
		replace	bdcli->clicpf	with	Main.txt_fcliente_cnpj_cpf.Value
		replace bdcli->clirg	with	Main.txt_fcliente_insc_rg.Value
		replace bdcli->clitel	with	strtran(strtran(strtran(Main.txt_fcliente_telefone.Value,"("),")"),"-")
		replace bdcli->clifax	with	strtran(strtran(strtran(Main.txt_fcliente_fax.Value,"("),")"),"-")
		replace bdcli->clicel	with	strtran(strtran(strtran(Main.txt_fcliente_celular.Value,"("),")"),"-")
		replace bdcli->clicont	with	Main.txt_fcliente_contato.Value
		replace bdcli->climail	with	Main.txt_fcliente_email.Value
		replace bdcli->cliweb	with	Main.txt_fcliente_web.Value
		commit
		unlock
	endif
	set order to tag clides
	var_alterar := .f.
	Main.grid_fcliente.deleteallitems
	Fcliente_temporario()
	a_cCliente:=Main.txt_fcliente_codigo.Value
	Main.grid_fcliente.Value	:=	ascan(tempcli,{|x|x[1]=a_cCliente})
	Main.grid_fcliente.Refresh
	Main.grid_fcliente.SetFocus
	main_grid_fcliente_onchange()
	Fcliente_bloqueia_tela()
endif


fcliente_btn_fcliente_cancelar_action()
	
Return

Function fcliente_txt_fcliente_cep_onenter
	
	select cep2007
	go top
	seek strtran(Main.txt_fcliente_cep.Value,"-")
	if found()
		Main.txt_fcliente_endereco.Value  	:=  alltrim(cep2007->abrev_tipo)+" "+alltrim(cep2007->nome_log)
		Main.txt_fcliente_bairro.Value    	:=  alltrim(cep2007->extenso_ba)
		Main.txt_fcliente_cidade.Value    	:=  alltrim(cep2007->nome_local)
		Main.txt_fcliente_uf.Value        	:=  alltrim(cep2007->uf_log)
	endif
	close cep2007
	select bdcli
Return	

Function main_grid_fcliente_onchange
	
	Local cCliente	:= PegaValorDaColuna( "grid_fcliente" ,  "Main" , 1 )
	select bdcli
	set order to tag clicod
	go top
	seek cCliente
	if found()
		Fcliente_dados()
	endif
	set order to tag clides
		
Return	

Function main_btn_fcliente_procurar_action

	Main.grid_fcliente.deleteallitems
	
	p_cliente:="*"+alltrim(Main.txt_fcliente_pesquisar.Value)+"?"
	select bdcli
	set order to tag clides
	go top
	o_cliente:=OrdWildSeek(p_cliente)
	do while o_cliente
		add item {alltrim(bdcli->clicod),;
		alltrim(bdcli->clides),;
		alltrim(bdcli->clitel),;
		alltrim(bdcli->clifax),;
		alltrim(bdcli->clicel),;
		alltrim(bdcli->clicont)} to grid_fcliente of Main
		o_cliente:=OrdWildSeek(p_cliente,.t.)
	enddo
	Main.txt_fcliente_pesquisar.Value	:=	''
	Main.grid_fcliente.Refresh
	Main.grid_fcliente.Setfocus
	Main.grid_fcliente.Value			:=	1

Return

Function main_btn_fcliente_excluir_action

	Local eCliente	:= PegaValorDaColuna( "grid_fcliente" ,  "Main" , 1 )
	select bdcli
	set order to tag clicod
	go top
	seek eCliente
	if found()
		if rlock()
			delete
			commit
			unlock
		endif
	else
		MsgBox("CLIENTE NÃO ENCONTRADO")
		Return
	endif
	set order to tag clides
	Main.grid_fcliente.deleteallitems
	Fcliente_temporario()
	Fcliente_dados()
	Main.grid_fcliente.Setfocus
	Main_grid_fcliente_onchange()
	Main.grid_fcliente.Refresh
	Main.grid_fcliente.Value	:=	1


Return
Function fcliente_btn_fcliente_sair_action

	close all
	Main.release

Return

Function PegaValorDaColuna( xObj, xForm, nCol)

	 Local nPos := GetProperty ( xForm , xObj , 'Value' )
	 Local aRet := GetProperty ( xForm , xObj , 'Item' , nPos )

Return aRet[nCol]
Agora a ultima duvida.

Como faço para formatar um telefone no grid.

Ele aparece assim 4136721010, queria inseria uma mascara para que ficasse assim (41)3672-1010

Grid com acesso indireto

Enviado: 29 Out 2011 11:14
por Pablo César
A máscara para telefone parece válido como demostra neste tópico (não testei): http://hmgforum.com/viewtopic.php?f=5&t=1761

Grid com acesso indireto

Enviado: 29 Out 2011 11:22
por Pablo César
Veja o exemplo do Grigory Filatov, eu testei ficou muito bom. É um gênio esse ucraniano !

Grid com acesso indireto

Enviado: 29 Out 2011 11:26
por asimoes
Olá a sua pesquisa pode ficar assim também:
ascan(tempcli,{|x|x[1]="003569"})

Código: Selecionar todos

lOk:=Achar("003569",1)

FUNCTION Achar(cVar,nColuna)
LOCAL lFound:=.F.. I
FOR I:=1 TO form_1.grdSaledtl.ItemCount
   IF  form_1.grdSaledtl.Item(I)[nColuna] == cVar
      lFound:=.T.
   ENDIF
NEXT
RETURN lFound

Grid com acesso indireto

Enviado: 29 Out 2011 11:31
por gilsonpaulo
Testei assim e funfou

Código: Selecionar todos

Function Fcliente_temporario

	tempcli:={}
	select bdcli
	go top
	do while .not. eof()
		aadd(tempcli,{alltrim(bdcli->clicod),;
			alltrim(bdcli->clides),;
			alltrim(transform(bdcli->clitel, '@R (99)9999-9999')),;
			alltrim(transform(bdcli->clifax, '@R (99)9999-9999')),;
			alltrim(transform(bdcli->clicel, '@R (99)9999-9999')),;
			alltrim(bdcli->clicont)})
		skip
	enddo
	for i = 1 to len(tempcli)
         Main.grid_fcliente.additem(tempcli[i])
    next
	go top

Return
Obrigado a todos pelas dicas, devo muito a este forum.

Grid com acesso indireto

Enviado: 29 Out 2011 11:39
por Pablo César
Veja o exemplo do Grigory Filatov, eu testei ficou muito bom. É um gênio esse ucraniano !
Ja viu a função dele ChgOrd() para ordenar o Grid quando clica nos titulos ?
Obrigado a todos pelas dicas, devo muito a este forum.
Que isso Paulo ! Na verdade todos nós devemos muito ao forum e quando falo em fórum não somente a hospedagem do Sr Toledo como a participação de todos e do bom ambiente que há aqui. Realmente parabéns a todos !