Pesquisar em uma Grid (MiniGui)

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Pesquisar em uma Grid (MiniGui)

Mensagem por Pablo César »

guanabara escreveu:criei o botão conforme voce me ensinou e com uma function no Action do mesmo (Segue abaixo), funcionou certinho, nem acredito que foi eu mesmo (com sua ajuda) quem fez.
Fico muito satisfeito de ver o seu contentamento !
Esse método que me ensinou a programar de criar o código no FORMS, copiar o código e colar no MODULES (PRG), fica muito mais fácil de trabalhar, vi em um antigo post seu que o seu método de trabalho no HMG é este.
Sim, é muito bom mesmo. Eu até gostaria de desenvolver uma ferramenta que leia os arquivos FMGs e ainda poder melhorar a IDE para que os controles tenham maiores recursos no posicionamento durante a confeção dos forms. Mas isso está aind apra ver...
Agora as novas dúvidas que tenho criarei novos posts a parte deste
Sim eu vi o seu outro tópico, tmabém fiz algumas observações.
o MINIGUI ainda não é pra mim, quem sabe mais pra frente, os códigos modelos de lá são muito complexos e não dei conta.
Que nada, aprenda também. Só que para MiniGui eu não utilizo a IDE, eu compilo através das BATs que a Minigui tem. Ahhh o HMG também possui essa outra forma de compilar. Mas estudo também a Minigui, pois muita coisa que não tem no HMG lá com Minigui, você encontra.
Outra coisa, to tentando que só iniciar o programa com a grid vazia, passei o código da COLUMNFIELDS que tava apontando para o banco para variaveis, aparece vazio, sem texto, mais os registros estão lá, da pra navegar por eles
Você ão sabe a alegria que me dá saber que HMG está sendo útil e que está pegando fácil. Por isso espero de você que dê o primeiro passo. Transcreva sempre o seu código nas suas postagens, assim fica mais fácil te ajudar. E vejo que você está se esforçando. Com respeito ao grid vazio (nova moda sua... rs), pois devia ter dito desde um começo. Mas esse grid é composto de forma diferente. Essa sua tentativa, justamente ocorreu comigo ontem, pois tem coisas que eu ainda não domino. Eu sempre preferi utilizar Browse para acessar dbf e o Grid tem diversas formas de carregar os registros. Mas nesse seu novo caso (grid vazio), você não vai utilizar o COLUMNFIELDS, pois ai você estaria colocando os nomes dos campos do DBF. Ao invés disso, coloque COLUMNFIELDS NIL e passe a utilizar ITEMS que só carregará uma matriz ao invés do DBF todo. Então a essa grid vazia você irá adicionar os registros que atendam a condição do filtro. Quando digo filtro, não refiro-me apenas ao SET FILTER TO em si (no seu programa, "Filtrar dados"), senão também aos registros que atendam: o inicio do que foi digitado (no seu programa, como "Busca rápida") e os registros que atendam os LOCATEs (no seu programa, "Busca parcial"). O comando para adicionar registros (já tendo os dados em vetor) para o grid vazio, você irá utilizar o <Form_name>.<Grid_name>.AddItem(aVetor_linha) e para remover todos <Form_name>.Grid_name>DeleteAllItems. Veja estes exemplos:

C:\hmg.3.1.1\SAMPLES\GRID.21\demo.prg
C:\hmg.3.1.1\SAMPLES\GRID.23\demo.prg

Quando você utilizar o item "AddItem", observe no final do grid.

Este ultimo exemplo, trabalha com registros do DBF:
C:\hmg.3.1.1\SAMPLES\CONTACTOS\TiposAdmin.Prg
esse restinho de ano que falta pra acabar eu consigo..hehehehe...
Que nada ! Ao passo que você está indo, com certeza até o final do ano, você dominará bastante coisa. Tudo depende do tempo que você aplica para aprender HMG/MINIGUI. Continue postando as suas dúvidas, isto irá servir para outros colegas também. :)Pos

Obs.: Não lembro de você ter me dito a versão do HMG que instalou. Aqui eu tenho 3 versões instalada: 3.0.35 que basicamente utilizo para modo console, a 3.0.46 quando trabalho em ANSI code e 3.1.1 (a versão mais recente, até o momento) que utiliza padrão UNICODE (UTRF-8). Este ultimo precisará deixar o seu texto com esse formato, pois esta é a versão multilingue (faz caracteres arábicos, japonês, chinês, indonésio e outras). Para você não se bater tanto no começo, aconselho utilizar 3.0.46 para GUI e 3.0.35 para modo console.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Pesquisar em uma Grid (MiniGui)

Mensagem por Nascimento »

amigos tentei compilar este codigo usando a minigui extended mais da uns erros na linha 228 e 229
procurei alguns comandos nao tem na extended e é justo o que estou precisando

nestas linhas aqui
ROWSOURCE "dbf"
COLUMNFIELDS grid_data_columnfields()
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Pesquisar em uma Grid (MiniGui)

Mensagem por Toledo »

Amigo, no caso de usar DBF, o melhor seria trocar a GRID por TBROWSE.

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
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Pesquisar em uma Grid (MiniGui)

Mensagem por Nascimento »

amigo procurei um exemplo pelo menos parecido com tbrowser no forum e nao achei nao , e sim é pra usar bancos de dados
o que procuro é um exemplo exatamente neste estilo ai..
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Pesquisar em uma Grid (MiniGui)

Mensagem por Toledo »

Nascimento escreveu:o que procuro é um exemplo exatamente neste estilo ai..
Bom, se for para fazer filtros e pesquisa, então o melhor seria usar mesmo uma Grid... veja este exemplo:

Consulta CDX

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
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Pesquisar em uma Grid (MiniGui)

Mensagem por Nascimento »

Amigo Toledo vi que realmente com browser fica bem melhor com eu faria esse exemplo que esta ai em cima trocando grid por browser
procurei nos samples da minigui nao achei um exemplo nesta forma ai apresentada
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Pesquisar em uma Grid (MiniGui)

Mensagem por Toledo »

Amigo, veja este exemplo na pasta SAMPLES da MiniGui Extended:

C:\MiniGUI\SAMPLES\Advanced\Tsb_filter

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
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Pesquisar em uma Grid (MiniGui)

Mensagem por microvolution »

Prezados boa noite!
Baixei o exemplo do professor Pablo César, (o 2º da 1ª página).
Tentei adaptá-lo ao meu sistema, pois o objeto BROWSE que tenho não funciona na HMG.
- Além dos erros que aconteceram durante a compilação, quero uma forma onde eu mande para a função os dados dos arquivos, pois já estão abertos no momento da pesquisa.
- No lugar de ser um MAIN.PRG criei-o com o nome de ROTINAS6.PRG. Por favor, vejam como ficou:

Código: Selecionar todos

#include <hmg.ch>
FUNCTION CRIABROWSE_GRID(VARIAVEL,NOME_PROGRAMA,NOME_ARQUIVO,CAB_CAMPOS,TAM_CAMPOS,MASC_CAMPOS,NOME_ARQ)
Private bBackColor:={ || IF( THIS.CELLROWINDEX/2==INT(THIS.CELLROWINDEX/2),;
                         { 234,244,255 },{ 255,255,255 } ) }, v_getpesqnome
Private aPesq:={"CODIGO", "PRODUTO", "FORNECEDOR"}
Private cProcura
/*
REQUEST DBFCDX
RDDSETDEFAULT( "DBFCDX" )
If !File("sgf97.dbf")
   Campos:={ {"NB"          ,"C",010,000},;
             {"NOME"        ,"C",040,000},;
             {"NASC"        ,"C",008,000},;
             {"CPF"         ,"C",011,000},;
             {"NIT"         ,"C",011,000},;
             {"ESP"         ,"C",002,000},;
             {"DER"         ,"C",008,000},;
             {"DESP"        ,"C",002,000},;
             {"CONC"        ,"C",008,000},;
             {"IND"         ,"C",008,000},;
             {"MOTIND"      ,"C",003,000},;
             {"MOTINDS"     ,"C",003,000},;
             {"DTIND"       ,"C",008,000},;
             {"END"         ,"C",040,000},;
             {"BAIRRO"      ,"C",017,000},;
             {"CEP"         ,"C",008,000},;
             {"MUN"         ,"C",024,000},;
             {"UF"          ,"C",002,000},;
             {"DDD"         ,"C",004,000},;
             {"TEL"         ,"C",010,000} }
   DbCreate("SGF97.DBF",Campos)
Endif
DBUSEAREA(.T.,,"sgf97.dbf","dbf",,.f.)
If !File("sgf97.cdx")
   dbf->(OrdCreate("sgf97.cdx","Beneficio","dbf->nb",{|| dbf->nb } ))
   dbf->(OrdCreate("sgf97.cdx","Nome","dbf->nome",{|| dbf->nome } ))
   dbf->(OrdCreate("sgf97.cdx","Muncipio","dbf->mun",{|| dbf->mun } ))
Endif
SET INDEX TO "sgf97.cdx"
dbf->( OrdSetFocus(1) )
IF NETERR()
   RETURN nil
ENDIF
*/
	// TITLE "Pesquisa" + NOME_PROGRAMA ICON NIL MAIN; // linha substituída pela 3 linha abaixo 16/3/16w
DEFINE WINDOW Frm_BROWSE_GRID AT GetDesktopRealTop(),GetDesktopRealLeft() ;
	WIDTH GetDesktopRealWidth() HEIGHT GetDesktopRealHeight() ;
	TITLE NOME_PROGRAMA ICON NIL MODAL; 
	ON INIT Frm_BROWSE_GRID_form_oninit() ON RELEASE Nil ;
	ON INTERACTIVECLOSE Frm_BROWSE_GRID_form_oninteractiveclose();
	ON MOUSECLICK Nil ON MOUSEDRAG Nil ON MOUSEMOVE Nil ;
	ON SIZE Nil ON MAXIMIZE Nil ON MINIMIZE Nil ON PAINT Nil ;
	BACKCOLOR Nil ON GOTFOCUS Nil ON LOSTFOCUS Nil
	
	ON KEY ESCAPE ACTION Thiswindow.Release()

    DEFINE FRAME FramePesq
        ROW    10
        COL    10
        WIDTH  678
        HEIGHT 53
        FONTNAME "Arial"
        FONTSIZE 9
        FONTBOLD .T.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        CAPTION "Pesquisar por:"
        BACKCOLOR NIL
        FONTCOLOR NIL
        OPAQUE .T.
    END FRAME

    DEFINE TEXTBOX GetPesq
        ROW    30
        COL    190
        WIDTH  380
        HEIGHT 24
        FONTNAME "Arial"
        FONTSIZE 9
        TOOLTIP ""
        ONCHANGE Nil
        ONGOTFOCUS Nil
        ONLOSTFOCUS Nil
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        ONENTER (If(Frm_BROWSE_GRID.BotaoPesq.Enabled,Frm_BROWSE_GRID_botaopesq(),))
        HELPID Nil
        TABSTOP .T.
        VISIBLE .T.
        READONLY .F.
        RIGHTALIGN .F.
        DISABLEDBACKCOLOR Nil
        DISABLEDFONTCOLOR Nil
        CASECONVERT NONE
        MAXLENGTH 30
        BACKCOLOR NIL
        FONTCOLOR NIL
        INPUTMASK Replicate("!",40)
        FORMAT NIL
        VALUE ""
    END TEXTBOX

    DEFINE COMBOBOX ComboPesq
        ROW    30
        COL    20
        WIDTH  160
        HEIGHT 100
        ITEMS aPesq
        VALUE 0
        FONTNAME "Arial"
        FONTSIZE 9
        TOOLTIP ""
        ONCHANGE Muda_Chave(This.Value)
        ONGOTFOCUS Nil
        ONLOSTFOCUS Nil
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        HELPID Nil
        TABSTOP .T.
        VISIBLE .T.
        SORT .F.
        ONENTER Nil
        ONDISPLAYCHANGE Nil
        DISPLAYEDIT .F.
        IMAGE Nil
        DROPPEDWIDTH 0
        ONDROPDOWN Nil
        ONCLOSEUP Nil
    END COMBOBOX

    DEFINE BUTTON BotaoPesq
        ROW    20
        COL    700
        WIDTH  120
        HEIGHT 40
        ACTION Frm_BROWSE_GRID_botaopesq()
        CAPTION "Pesquisa"
        FONTNAME "Arial"
        FONTSIZE 9
        TOOLTIP ""
        FONTBOLD .T.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        ONGOTFOCUS Nil
        ONLOSTFOCUS Nil
        HELPID Nil
        FLAT .F.
        TABSTOP .T.
        VISIBLE .T.
        TRANSPARENT .F.
        MULTILINE .F.
        PICTURE Nil
        PICTALIGNMENT TOP
    END BUTTON
	
	DEFINE CHECKBOX Check_1
        ROW    30
        COL    585
        WIDTH  100
        HEIGHT 28
        CAPTION "Busca Parcial"
        VALUE .F.
        FONTNAME "Arial"
        FONTSIZE 9
        TOOLTIP ""
        ONCHANGE cProcura:=""
        ONGOTFOCUS Nil
        ONLOSTFOCUS Nil
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        BACKCOLOR Nil
        HELPID Nil
        TABSTOP .T.
        VISIBLE .T.
        TRANSPARENT .F.
    END CHECKBOX

    DEFINE GRID Grid_Data
        ROW    70
        COL    10
        WIDTH  GetDesktopRealWidth()-30
        HEIGHT GetDesktopRealHeight()-116
        ITEMS Nil
        VALUE Nil
        WIDTHS grid_data_widths()
        HEADERS grid_data_headers()
        FONTNAME "Courier"
        FONTSIZE 9
        TOOLTIP ""
        ONCHANGE Nil
        ONGOTFOCUS Nil
        ONLOSTFOCUS Nil
        FONTBOLD .F.
        FONTITALIC .F.
        FONTUNDERLINE .F.
        FONTSTRIKEOUT .F.
        ONDBLCLICK Nil
        ONHEADCLICK Nil
        ONQUERYDATA Nil
        MULTISELECT .F.
        ALLOWEDIT .T.
        VIRTUAL .F.
        DYNAMICBACKCOLOR grid_data_dynamicbackcolor()
        DYNAMICFORECOLOR Nil
        COLUMNWHEN Nil
        COLUMNVALID Nil
        COLUMNCONTROLS grid_data_columncontrols()
        SHOWHEADERS .T.
        CELLNAVIGATION .F.
        NOLINES .F.
        HELPID Nil
        IMAGE Nil
        JUSTIFY grid_data_justify()
        ITEMCOUNT Nil
        BACKCOLOR NIL
        FONTCOLOR NIL
        HEADERIMAGES Nil
        ROWSOURCE "dbf"
        COLUMNFIELDS grid_data_columnfields()
        ALLOWAPPEND .T.
        ALLOWDELETE .T.
        BUFFERED .F.
        DYNAMICDISPLAY Nil
        ONSAVE Nil
        LOCKCOLUMNS 0
    END GRID

END WINDOW
Frm_BROWSE_GRID.BotaoPesq.Enabled:=.F.
Frm_BROWSE_GRID.Center
Frm_BROWSE_GRID.Activate
RETURN nil

FUNCTION grid_data_columnwhen()
LOCAL aColumnWhen

    // { || .T. } PERMITE A EDICAO
    // { || .F. } NAO PERMITE A EDICAO

   aColumnWhen := { { || .F. },;
   { || .F. },;
   { || .F. },;
   { || .F. },;
   { || .F. },;
   { || .F. },;
   { || .F. },;
   { || .F. },;
   { || .F. },;
   { || .F. },;
   { || .F. } }
                   

RETURN aColumnWhen

FUNCTION grid_data_columncontrols()
LOCAL aColumnControls

   aColumnControls := { { "TEXTBOX","CHARACTER" },;
                        { "TEXTBOX","CHARACTER" },;
                        { "TEXTBOX","CHARACTER" },;
                        { "TEXTBOX","CHARACTER" },;
                        { "TEXTBOX","CHARACTER" },;
                        { "TEXTBOX","CHARACTER" },;
                        { "TEXTBOX","CHARACTER" },;
                        { "TEXTBOX","CHARACTER" },;
                        { "TEXTBOX","CHARACTER" },;
                        { "TEXTBOX","CHARACTER" },;
                        { "TEXTBOX","CHARACTER" } }
                        

RETURN aColumnControls 

FUNCTION grid_data_columnfields()
LOCAL aColumnFields

    aColumnFields :=   {'&NOME_ARQ.->CDPRODUTO',;
                        '&NOME_ARQ.->DSPRODUTO',;
                        '&NOME_ARQ.->DSUNIDADE',;
                        '&NOME_ARQ.->CDFORNECE',;
                        '&NOME_ARQ.->CD_SECAO' ,;
                        '&NOME_ARQ.->CDGRUPO'  ,;
                        '&NOME_ARQ.->VR_UNITAR',; // no original era "9,2" 20/2/16w
                        '&NOME_ARQ.->VR_PRECUS',; // no original era "9,2" 20/2/16w
                        '&NOME_ARQ.->VP_MARLUC',;
                        '&NOME_ARQ.->VR_PREVEN',;
                        '&NOME_ARQ.->DT_ULTCOM',;
                        '&NOME_ARQ.->DT_ULTVEN',;
                        '&NOME_ARQ.->QT_ESTMIN',;
                        '&NOME_ARQ.->QT_ESTMAX',;
                        '&NOME_ARQ.->QT_ESTTOT'}

/*   aColumnFields := { "dbf->nb",;
                     "dbf->nome",;
                     "dbf->mun",;
                     "dbf->cpf",;
                     "dbf->nasc",;
                     "dbf->nit",;
                     "dbf->esp",;
                     "dbf->der",;
                     "dbf->desp",;
                     "dbf->conc",;
                     "dbf->tel"}
*/
                    

RETURN aColumnFields 

FUNCTION grid_data_headers()
LOCAL aheaders

   aheaders := CAB_CAMPOS

/*
   aheaders := { "Beneficio",;
                 "Nome",;
                 "Municipio",;
                 "CPF",;
                 "Nascimento",;
                 "NIT",;
                 "Esp",;
                 "Der",;
                 "Desp",;
                 "Conc",;
                 "Tel"}
*/              

RETURN aheaders

FUNCTION grid_data_widths()
LOCAL awidths := {}

   awidths := { 85, 280, 180, 100, 100, 100,  50, 100, 50, 100, 100  }

RETURN awidths

FUNCTION grid_data_justify()
LOCAL ajustify := {}

   ajustify := { GRID_JTFY_CENTER,;
                 GRID_JTFY_LEFT,;
                 GRID_JTFY_LEFT,;
                 GRID_JTFY_CENTER,;
                 GRID_JTFY_CENTER,;
                 GRID_JTFY_CENTER,;
                 GRID_JTFY_CENTER,;
                 GRID_JTFY_CENTER,;
                 GRID_JTFY_CENTER,;
                 GRID_JTFY_CENTER,;
                 GRID_JTFY_CENTER }
                

RETURN ajustify

FUNCTION grid_data_DynamicBackColor()
LOCAL aDynamicBackColor := {}

   aDynamicBackColor := { bBackColor,;
                          bBackColor,;
                          bBackColor,;
                          bBackColor,;
                          bBackColor,;
                          bBackColor,;
                          bBackColor,;
                          bBackColor,;
                          bBackColor,;
                          bBackColor,;
                          bBackColor }
                         

RETURN aDynamicBackColor

Function Muda_Chave(nVal)
cProcura:=""
Frm_BROWSE_GRID.Grid_Data.Refresh
Frm_BROWSE_GRID.BotaoPesq.Enabled:=.T.
Frm_BROWSE_GRID.GetPesq.SetFocus
Return Nil

Function Frm_BROWSE_GRID_form_oninit()
Return Nil

Function Frm_BROWSE_GRID_form_oninteractiveclose()
Return Nil

Function Frm_BROWSE_GRID_botaopesq()
Local nVal:=GetProperty("Frm_BROWSE_GRID","ComboPesq","Value")
Local lVal:=GetProperty("Frm_BROWSE_GRID","Check_1","Value")
Local nRec:=dbf->( Recno() )
Local lContinua:=.F.

cNewProcura:=AllTrim(GetProperty("Frm_BROWSE_GRID","GetPesq","Value"))
If cNewProcura==cProcura
   lContinua:=.T.
Else
   cProcura:=cNewProcura
Endif
dbf->( OrdSetFocus( nVal ) )
If lVal
   Do Case
      Case nVal=1
	       If lContinua
		      Skip
			  If Eof()
			     Goto Top
			  Endif
		      Locate Rest for cProcura $ Nb
		   Else
			  Locate for cProcura $ Nb
		   Endif
	  Case nVal=2
           If lContinua
		      Skip
			  If Eof()
			     Goto Top
			  Endif
		      Locate Rest for cProcura $ Nome
		   Else
		      Locate for cProcura $ Nome
		   Endif
	  Case nVal=3
           If lContinua
		      Skip
			  If Eof()
			     Goto Top
			  Endif
              Locate Rest for cProcura $ Mun
		   Else
		      Locate for cProcura $ Mun
		   Endif
   EndCase
Else
   dbf->(DBSeek( cProcura )) 
Endif
If !Found()
   MsgStop(Chr(34)+cProcura+Chr(34)+Chr(13)+Chr(10)+"não encontrado em "+aPesq[nVal]+" !")
   dbf->( OrdSetFocus( 0 ) )
   Goto nRec
   Frm_BROWSE_GRID.Grid_Data.Refresh
Else
   dbf->( OrdSetFocus( 0 ) )
   Frm_BROWSE_GRID.Grid_Data.Value := {dbf->(Recno()),nVal}
Endif
Frm_BROWSE_GRID.Grid_Data.SetFocus
Return Nil

*********************************************************************************************************
************************** códigos da linguagem C/C++ ***************************************************
#pragma BEGINDUMP

#define HB_OS_WIN_USED
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include "hbapi.h"

HB_FUNC (GETDESKTOPREALTOP) 
{
	RECT rect;
	SystemParametersInfo( SPI_GETWORKAREA, 1, &rect, 0 );

	hb_retni(rect.top);

}
HB_FUNC (GETDESKTOPREALLEFT) 
{
	RECT rect;
	SystemParametersInfo( SPI_GETWORKAREA, 1, &rect, 0 );

	hb_retni(rect.left);

}

HB_FUNC (GETDESKTOPREALWIDTH) 
{
	RECT rect;
	SystemParametersInfo( SPI_GETWORKAREA, 1, &rect, 0 );

	hb_retni(rect.right - rect.left);

}

HB_FUNC (GETDESKTOPREALHEIGHT) 
{
	RECT rect;
	SystemParametersInfo( SPI_GETWORKAREA, 1, &rect, 0 );

	hb_retni(rect.bottom - rect.top);
}

#pragma ENDDUMP
************************** códigos da linguagem C/C++ ***************************************************
*********************************************************************************************************
OBS: 1 - No início do meu sistema é criado diversas matrizes com o nome, conteúdo dos campos, indexes de todos os arquivos. No caso aqui, o arquivo é o DCI10010 (produtos), mas, quero mandar para a função também esta matriz.
2 - Estou usando HMG 3.4.2.
3 - A chamada a esta função é:

Código: Selecionar todos

          CRIABROWSE_GRID (VARIAVEL,'PCI10011',NOME_ARQUIVO,CABEC_CAMPOS,TAM_MEMO,MASCARAS,ARQUIVO)
Na sequência, o conteúdo e explicação de cada elemento passado é:
VARIAVEL = variável do antigo GET onde foi pressionado a tecla F4 (ah! esta tecla aciona este CRIABROWSE_GRID);
PCI10011 = nome do módulo que está chamando a função;
NOME_ARQUIVO = nome do arquivo na linguagem do usuário, no exemplo acima: "Produtos";
CABEC_CAMPOS = matriz contendo todos os cabeçalhos (nome dos campos para o usuário interpretar/visualizar);
TAM_MEM = matriz contendo campos memo, caso existam. No exemplo = nil (cada elemento da matriz);
MASCARAS = Picture (do clipper @say/get) para formatação do visual dos campos;
ARQUIVO = conteúdo do select() atual, ou seja, o nome do arquivo aberto.
Vou acrescentar ainda a matriz contendo todos os dados completos do arquivo, mas, ainda não consegui pensar como fazer isso de uma forma geral.
No caso do arquivo de produtos, vejam, por obséquio, o conteúdo da matriz PRODUTOS:

Código: Selecionar todos

private DCI10010 := {{{'PRODUTOS',;
                       'Produtos',;
                       '&DIR\PRODUTOS.DBF'},;
                      {'ICI10010',;
                       'str (CDPRODUTO,13)',;
                       '&DIR\DCI10010.NTX'},;
                      {'ICI10700',;
                       'DSPRODUTO',;
                       '&DIR\ICI10700.NTX'},;
                      {'ICI10701',;
                       'str (CDGRUPO,02) + DSPRODUTO',;
                       '&DIR\ICI10701.NTX'},;
                      {'ICI10702',;
                       'str (CDFORNECE,04) + str (CDGRUPO,02) + DSPRODUTO',;
                       '&DIR\ICI10702.NTX'}},;
                     {'CDPRODUTO'           ,'N', 13,  0},;
                     {'DSPRODUTO'           ,'C', 40,  0},;
                     {'DSUNIDADE'           ,'C',  2,  0},;
                     {'CDFORNECE'           ,'N',  4,  0},;
                     {'CD_SECAO'            ,'N',  1,  0},;
                     {'CDGRUPO'             ,'N',  2,  0},;
                     {'VR_UNITAR'           ,'N', 10,  4},; // no original era "9,2" 20/2/16w
                     {'VR_PRECUS'           ,'N', 10,  4},; // no original era "9,2" 20/2/16w
                     {'VP_MARLUC'           ,'N',  6,  2},;
                     {'VR_PREVEN'           ,'N',  9,  2},;
                     {'DT_ULTCOM'           ,'D',  8,  0},;
                     {'DT_ULTVEN'           ,'D',  8,  0},;
                     {'QT_ESTMIN'           ,'N',  6,  2},;
                     {'QT_ESTMAX'           ,'N',  6,  2},;
                     {'QT_ESTTOT'           ,'N',  8,  3}}
Bom, agora voltando ao exemplo que o professor postou e, que modifiquei para o meu exemplo, mudei algumas coisas para ficar o mais próximo da minha realidade, mas, a mais drástica delas, foi trocar o formulário de MAIN para MODAL, pois já tenho um MAIN em aberto.
Infelizmente, as mensagens de erros foram muitas, vejam por favor:

Código: Selecionar todos

Harbour 3.2.0dev (r1509031202)
Copyright (c) 1999-2015, http://harbour-project.org/
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(54) Error E0030  Syntax error "syntax error at 'WINDOW'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(72) Error E0030  Syntax error "syntax error at '.T.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(90) Error E0030  Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(157) Error E0030  Syntax error "syntax error at '.F.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(184) Error E0030  Syntax error "syntax error at '.F.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(238) Error E0030  Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(239) Error E0030  Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(240) Error E0030  Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(383) Error E0030  Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(384) Error E0030  Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(385) Error E0030  Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(447) Error E0030  Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(450) Error E0030  Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(452) Error E0030  Syntax error "syntax error at '.'"
14 errors
No code generated.
As linhas acima são as seguintes:
54 (linha) - Esta não está só, pois trata-se de uma linha com (;):
DEFINE WINDOW Frm_BROWSE_GRID AT GetDesktopRealTop(),GetDesktopRealLeft() ;
WIDTH GetDesktopRealWidth() HEIGHT GetDesktopRealHeight() ;
TITLE NOME_PROGRAMA ICON NIL MODAL;
ON INIT Frm_BROWSE_GRID_form_oninit() ON RELEASE Nil ;
ON INTERACTIVECLOSE Frm_BROWSE_GRID_form_oninteractiveclose();
ON MOUSECLICK Nil ON MOUSEDRAG Nil ON MOUSEMOVE Nil ;
ON SIZE Nil ON MAXIMIZE Nil ON MINIMIZE Nil ON PAINT Nil ;
BACKCOLOR Nil ON GOTFOCUS Nil ON LOSTFOCUS Nil
As demais linhas dos erros são:
72 - OPAQUE .T.
90 - ONENTER (If(Frm_BROWSE_GRID.BotaoPesq.Enabled,Frm_BROWSE_GRID_botaopesq(),))
157 - 184 TRANSPARENT .F.
238-240
Frm_BROWSE_GRID.BotaoPesq.Enabled:=.F.
Frm_BROWSE_GRID.Center
Frm_BROWSE_GRID.Activate
383 - 385
Frm_BROWSE_GRID.Grid_Data.Refresh
Frm_BROWSE_GRID.BotaoPesq.Enabled:=.T.
Frm_BROWSE_GRID.GetPesq.SetFocus
447 - Frm_BROWSE_GRID.Grid_Data.Refresh
450 - Frm_BROWSE_GRID.Grid_Data.Value := {dbf->(Recno()),nVal}
452 - Frm_BROWSE_GRID.Grid_Data.SetFocus
Bom, acho que a única linha que sei resolver (acho) é a 450, pois troquei o "alias" dbf pelo nome do meu que é NOME_ARQ, mas, é só acho, não tenho certeza.
Um última informação: Meu sistema ainda é DBFNTX, então, a pesquisa será em torno disso. Não me perguntem "como?", pois não sei.
Portanto, se alguns dos professores puderem nos ajudar a clarear a mente, pois esse universo gráfico, já tinha até desistido (temporariamente) de dezembro/2015 até março/2016, usando a GTWVG. Mas, percebi que em alguns casos não tenho como escapar. É no
caso de um Frente de Loja, sem muitas informações gráficas, fica até difícil de se vender um sistema nesse mercado tão competitivo.
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Pesquisar em uma Grid (MiniGui)

Mensagem por Nascimento »

Amigo uso minigui estou aprendendo cada dia mais, e obtendo bons resultados e sei a vontade de voce ver rapidamente seu sistema pronto
mais um conselho pelo menos foi o que eu fiz; vá fazendo exemplos pequenos , entendendo realmente como funciona a lib minigui
voce vai ver que vai ficando mais simples cada vez mais, evite exemplos grandes , e ja foi postado aqui mais nao carece reforçar
uma pagina que me ajudou bastante no inicio foi...
http://www.elektrosoft.it/tutorials/hmg/hmg.asp

e claro a ajuda indispensavel deste maravilhoso forum e seus componentes venho obtendo cada vez mais resultados com a minigui

PS : " caso moderadores achar que é desvio de assunto por favor podem apaga-la ou movela"

Att: Nascimento
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Responder