Define window
Moderador: Moderadores
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Define window
Amigo, como você chama esta tela de login?
Na mensagem abaixo tem um demo com tela de Login que pode servir de exemplo:
Menu com nível
Abraços,
Na mensagem abaixo tem um demo com tela de Login que pode servir de exemplo:
Menu com nível
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
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

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Define window
OLÁ PESSOAL boa noite!
Depois de 8 meses estou de volta aqui, para tentar entender melhor o conceito de formulários window (janelas) da MiniGUI HMG.
Bom, tenho um aplicativo que faz um combo entre GTWVG (gráfica) com formulários da HMG.
Para isso funcionar, aciono primeiramente um form WINDOW MAIN sem nada e o minimizo no ON INIT.
Bom, a partir daí tudo é da GTWVG.
Mas, num determinado momento, o usuário ao abrir um módulo de vendas (tudo isso dentro do mesmo .EXE). chamo um formulário MODAL, que é o seguinte bloco de código:
Mas, apesar de estar funcionando, o único local para digitação do usuário (que já fica em foco) é no primeiro TEXTBOX que libera o segundo ao passar pela cláusula ON ENTER.
Caso o produto não seja digitado corretamente, o usuário clica em ON KEY (F4) para chamar outro formulário, de pesquisas através do GRID.
Aí que está o problema. Vejam o código, por favor:
Então, o usuário ao acionar o formulário acima, uma bateria de erros acontecem. Vejam, por favor:
Nota de Moderação:
por Toledo: POR FAVOR, evite postar a mesma dúvida em dois ou mais tópicos, isto atrapalha o bom andamento do próprio tópico.
Leia as Regras do Fórum:
14 - Evite postar a mesma mensagem mais de uma vez, isto atrapalha e congestiona o fórum. As mensagens duplicadas terão as cópias excluídas, e o participante poderá ser punido caso o ato tenha sido intencional.
Esta mesma mensagem você postou neste tópico:
https://pctoledo.org/forum/viewto ... 63#p104863
Depois de 8 meses estou de volta aqui, para tentar entender melhor o conceito de formulários window (janelas) da MiniGUI HMG.
Bom, tenho um aplicativo que faz um combo entre GTWVG (gráfica) com formulários da HMG.
Para isso funcionar, aciono primeiramente um form WINDOW MAIN sem nada e o minimizo no ON INIT.
Bom, a partir daí tudo é da GTWVG.
Mas, num determinado momento, o usuário ao abrir um módulo de vendas (tudo isso dentro do mesmo .EXE). chamo um formulário MODAL, que é o seguinte bloco de código:
Código: Selecionar todos
static function TELA_ENTRADA_GUI ()
**********************************************************************************************
******** FORMULÁRIO PADRÃO DO WINDOWS PARA HARBOUR 5/3/15W APENAS PARA EFEITO DIDÁTICO *******
mCD_VENDED := mCDOPERADO // o vendedor automaticamente passa a ser o operador, pra diminuir ainda mais a digitação 2/3/16w.
DEFINE WINDOW Frm_TELA_ENTRADA ;
AT GetDesktopRealTop(),GetDesktopRealLeft() ;
WIDTH GetDesktopRealWidth() HEIGHT GetDesktopRealHeight() ;
TITLE 'Orçamento FDL GUI' ;
MODAL
@ 410 , 20 LABEL Label_0 ;
VALUE 'SUBTOTAL' ;
AUTOSIZE // ;
@ 495 , 100 LABEL Label_0A ;
VALUE 'Informe o Produto...' ;
FONTCOLOR { 255, 0, 0 } ;
FONT "Arial" SIZE 24 BOLD ;
AUTOSIZE // ;
@ 250 , 460 LABEL Label_0B ;
VALUE 'MVinfo Sistemas' ;
FONTCOLOR { 255, 0, 0 } ;
FONT "Arial" SIZE 24 BOLD ;
AUTOSIZE // ;
@ 290 , 460 LABEL Label_0C ;
VALUE 'Fone(31) 3824-1556' ;
AUTOSIZE // ;
@ 310 , 460 LABEL Label_0D ;
VALUE 'www.mvinfo.wmx.net.br' ;
AUTOSIZE // ;
@ 10 , 10 LABEL Label_1 ;
VALUE 'Operador : ' + transform ( mCDOPERADO , pCDOPERADO ) ;
AUTOSIZE // ;
@ 10 , 150 LABEL Label_2 ;
VALUE 'Vendedor : ' + strzero( mCD_VENDED ) ;
AUTOSIZE // ;
@ 10 , 300 LABEL Label_3 ;
AUTOSIZE ;
VALUE 'Orçamento Anterior : ' + transform ( aNU_VENDA , pNU_VENDA ) // ;
@ 10 , 600 LABEL Label_4 ;
AUTOSIZE ;
VALUE 'Data do Orçamento: ' + transform ( mDT_VENDA , pDT_VENDA ) // ;
@ 360 , 470 TEXTBOX txtCDPRODUTO PARENT Frm_TELA_ENTRADA WIDTH 150 HEIGHT 30 FONTCOLOR BLUE BOLD NUMERIC MAXLENGTH 13 FONT "Arial" SIZE 14 ON ENTER { || fCDPRODUTO_GUI () } // MAXLENGTH 13 INPUTMASK '9999999999999' FORMAT 'E'
@ 360 , 650 TEXTBOX txtQT_VENDA PARENT Frm_TELA_ENTRADA WIDTH 50 HEIGHT 30 FONTCOLOR BLUE BOLD NUMERIC MAXLENGTH 06 FONT "Arial" SIZE 18 ON ENTER { || fQT_VENDA_GUI () } // INPUTMASK pQT_VENDA FORMAT 'E'
DEFINE STATUSBAR PARENT Frm_TELA_ENTRADA
STATUSITEM " MVinfo Sistemas e Automação - www.mvinfo.wmx.net.br | microvolution@hotmail.com | (31) 3824.1556 "
STATUSITEM "clock"
END STATUSBAR
DEFINE TIMER tempo PARENT Frm_TELA_ENTRADA ;
INTERVAL 1000 ;
ACTION ShowTime()
CENTER WINDOW Frm_TELA_ENTRADA
ACTIVATE WINDOW Frm_TELA_ENTRADA
******** FORMULÁRIO PADRÃO DO WINDOWS PARA HARBOUR 5/3/15W ***********************************
**********************************************************************************************
return Caso o produto não seja digitado corretamente, o usuário clica em ON KEY (F4) para chamar outro formulário, de pesquisas através do GRID.
Aí que está o problema. Vejam o código, por favor:
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", "GRUPO+PRODUTO", "FORNECEDOR+GRUPO+PRODUTO"}
Private cProcura
// 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 "GRID BROWSE" 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 "NOME_ARQ"
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
Center WINDOW Frm_BROWSE_GRID
Activate WINDOW Frm_BROWSE_GRID
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'}
RETURN aColumnFields
FUNCTION grid_data_headers()
LOCAL aheaders
aheaders := CAB_CAMPOS
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:=&NOME_ARQ.->( Recno() )
Local lContinua:=.F.
cNewProcura:=AllTrim(GetProperty("Frm_BROWSE_GRID","GetPesq","Value"))
If cNewProcura==cProcura
lContinua:=.T.
Else
cProcura:=cNewProcura
Endif
&NOME_ARQ.->( 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
&NOME_ARQ.->(DBSeek( cProcura ))
Endif
If !Found()
MsgStop(Chr(34)+cProcura+Chr(34)+Chr(13)+Chr(10)+"não encontrado em "+aPesq[nVal]+" !")
&NOME_ARQ.->( OrdSetFocus( 0 ) )
Goto nRec
Frm_BROWSE_GRID.Grid_Data.Refresh
Else
NOME_ARQ->( OrdSetFocus( 0 ) )
&NOME_ARQ.->( OrdSetFocus( 0 ) )
Frm_BROWSE_GRID.Grid_Data.Value := {NOME_ARQ->(Recno()),nVal}
Frm_BROWSE_GRID.Grid_Data.Value := {&NOME_ARQ.->(Recno()),nVal}
Endif
Frm_BROWSE_GRID.Grid_Data.SetFocus
Return NilVejam, que o primeiro erro já começa com a criação da janela WINDOW. Bom, já mudei para CHILD, SPLITCHILD, e, infelizmente não sei resolver o primeiro erro, nem muito menos os demais.Harbour 3.2.0dev (r1509031202)
Copyright (c) 1999-2015, http://harbour-project.org/
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(64) Error E0030 Syntax error "syntax error at 'WINDOW'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(100) Error E0030 Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(248) Error E0030 Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(249) Error E0030 Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(250) Error E0030 Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(396) Error E0030 Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(397) Error E0030 Syntax error "syntax error at '.'"
C:\MVinfo\MIGRAR\SiCCA\SiCCA3603hmg\sci10000\rotinas6.prg(398) Error E0030 Syntax error "syntax error at '.'"
8 errors
No code generated.
hbmk2[SiCCA3603hmg]: Erro: Executando o compilador Harbour (interno): 1
Alguém pode tentar me ajudar a entender o "porquê" destes erros?
por Toledo: POR FAVOR, evite postar a mesma dúvida em dois ou mais tópicos, isto atrapalha o bom andamento do próprio tópico.
Leia as Regras do Fórum:
14 - Evite postar a mesma mensagem mais de uma vez, isto atrapalha e congestiona o fórum. As mensagens duplicadas terão as cópias excluídas, e o participante poderá ser punido caso o ato tenha sido intencional.
Esta mesma mensagem você postou neste tópico:
https://pctoledo.org/forum/viewto ... 63#p104863
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!
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!
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Define window
Amigo, seu código é bem complexo, cheio de funções, então as vezes fica complicado tentar entender o que cada uma faz. Este seu código é uma cópia de um demo disponibilizado pelo nosso amigo Pablo César em um outro tópico, e como nos arquivos que ele disponibilizou tem o arquivo EXE, então o código dele é compilável e não deve ter erros.
Observei que no seu código você fez várias alterações em relação ao código original, então a melhor coisa a fazer é comparar este seu código com o código original e verificar se tem algum erro.
Um outro detalhe é tentar enxugar este código, isto evita possíveis erros (não estou falando que este seja o problema, mas vai diminuir as possibilidades e fica mais fácil para encontrar onde está o erro), então retire do código os comandos que vem seguidos de NIL e também com .F. (são os default para comandos não incluídos), por exemplo:
Troque este comando:
Por este:
Outro exemplo:
Por este:
Caso não resolva os erros, tente retirar as funções utilizadas no DEFINE WINDOW, por exemplo:
Se não ocorrer mais o erro (rotinas6.prg(64) Error E0030 Syntax error "syntax error at 'WINDOW'"), ai vai voltando, uma a uma, as funções e compile, assim você vai descobrir onde está o erro.
Abraços,
Observei que no seu código você fez várias alterações em relação ao código original, então a melhor coisa a fazer é comparar este seu código com o código original e verificar se tem algum erro.
Um outro detalhe é tentar enxugar este código, isto evita possíveis erros (não estou falando que este seja o problema, mas vai diminuir as possibilidades e fica mais fácil para encontrar onde está o erro), então retire do código os comandos que vem seguidos de NIL e também com .F. (são os default para comandos não incluídos), por exemplo:
Troque este comando:
Código: Selecionar todos
DEFINE WINDOW Frm_BROWSE_GRID AT GetDesktopRealTop(),GetDesktopRealLeft() ;
WIDTH GetDesktopRealWidth() HEIGHT GetDesktopRealHeight() ;
TITLE "GRID BROWSE" 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 NilCódigo: Selecionar todos
DEFINE WINDOW Frm_BROWSE_GRID AT GetDesktopRealTop(),GetDesktopRealLeft() ;
WIDTH GetDesktopRealWidth() HEIGHT GetDesktopRealHeight() ;
TITLE "GRID BROWSE" MODAL ;
ON INIT Frm_BROWSE_GRID_form_oninit() ;
ON INTERACTIVECLOSE Frm_BROWSE_GRID_form_oninteractiveclose()Código: Selecionar todos
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 FRAMECódigo: Selecionar todos
DEFINE FRAME FramePesq
ROW 10
COL 10
WIDTH 678
HEIGHT 53
FONTNAME "Arial"
FONTSIZE 9
FONTBOLD .T.
CAPTION "Pesquisar por:"
END FRAMECódigo: Selecionar todos
DEFINE WINDOW Frm_BROWSE_GRID AT 0, 0 ;
WIDTH 800 HEIGHT 600 ;
TITLE "GRID BROWSE" MODALAbraç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
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

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Define window
Toledo, não é à toa que a empresa que trabalhei por mais tempo (7 anos ao todo) o dono tem seu sobrenome B. A. Toledo (contabilidade e advocacia), pois você matou o quebra-cabeças...
Tudo agora compilou... o erro agora é completamente fora dos contextos, e, agora é na execução (Runtime). Veja(m) por favor:
Tudo agora compilou... o erro agora é completamente fora dos contextos, e, agora é na execução (Runtime). Veja(m) por favor:
O que vem a ser este WorkArea must be open?Date:19/03/2016 Time: 16:26:16
Error: HMG 3.4.2 Stable (32 bits)
Grid: 'RecordSource' WorkArea must be open at control definition. Program Terminated
Called from _DEFINEGRID(163)
Called from CRIABROWSE_GRID(339)
Called from CONSULTA_ARQUIVO(2410)
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!
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!
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Define window
Amigo, você ainda não entendeu o conceito de macro substituição, veja este seu código:
Troque por:
Abraços,
Código: Selecionar todos
ROWSOURCE "NOME_ARQ"Código: Selecionar todos
ROWSOURCE &NOME_ARQToledo - 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
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

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Define window
Boa madrugada!
troquei o que o Toledo pediu, mas, infelizmente gerou o seguinte erro:
troquei o que o Toledo pediu, mas, infelizmente gerou o seguinte erro:
É muito difícil no harbour entender macroSubstituição e cia limitada!Date:19/03/2016 Time: 21:52:42
Error BASE/1065 Erro nos parƒmetros: &
Called from CRIABROWSE_GRID(335)
Called from CONSULTA_ARQUIVO(2410)
Called from (b)TRATA_CAMPOS_GUI(4513)
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!
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!
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Define window
Amigo, quando ocorre um erro no programa, temos que tentar verificar o que pode estar errado, e pela mensagem de erro, o erro está no parâmetro NOME_ARQ. Então é bom verificar:
- como você está passando NOME_ARQ na chamada da função CRIABROWSE_GRID().
- se for usando uma variável, então passe como está declarando o conteúdo da variável.
Uma dica, é colocar MsgInfo(NOME_ARQ) antes do DEFINE WINDOW que está na função CRIABROWSE_GRID(), assim você poderá ver qual o conteúdo do parâmetro NOME_ARQ.
Abraços,
- como você está passando NOME_ARQ na chamada da função CRIABROWSE_GRID().
- se for usando uma variável, então passe como está declarando o conteúdo da variável.
Uma dica, é colocar MsgInfo(NOME_ARQ) antes do DEFINE WINDOW que está na função CRIABROWSE_GRID(), assim você poderá ver qual o conteúdo do parâmetro NOME_ARQ.
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
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

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Define window
Sinceramente não estou entendendo mais nada... acaso é pra publicar neste tópico ou voltar lá pro tópico do GRID e responder sobre o GRID lá ou sei lá... honestamente não entendi desta vez ...Toledo escreveu: ATENÇÃO: amigo, mesmo depois do aviso em minha mensagem anterior, você continua sem ler suas MP, então POR FAVOR leia suas MP, para não prejudicar a sua participação aqui no fórum.
Estive revisando e comparando com o código original do Pablo e vi que esse meu NOME_ARQ é a transferência da área selecionada lá na chamada a esta função, ou seja o select() atual que é "1", e pelo que o Pablo fez é o ALIAS (nome real do arquivo).Toledo escreveu:Uma dica, é colocar MsgInfo(NOME_ARQ) antes do DEFINE WINDOW que está na função CRIABROWSE_GRID(), assim você poderá ver qual o conteúdo do parâmetro NOME_ARQ.
Então, mudei a variável de NOME_ARQ para ALIAS_ARQ e acrescentei outra com o nome ao receber de ALIAS_ARQ e fiz as mudanças necessárias.
Aí ficou assim a chamada da função:
Código: Selecionar todos
CRIABROWSE_GRID (VARIAVEL,'PCI10011',NOME_ARQUIVO,CABEC_CAMPOS,TAM_MEMO,MASCARAS,ARQUIVO,"DCI10010")Código: Selecionar todos
FUNCTION CRIABROWSE_GRID(VARIAVEL,NOME_PROGRAMA,NOME_ARQUIVO,CAB_CAMPOS,TAM_CAMPOS,MASC_CAMPOS,AREA_ARQ,ALIAS_ARQ)Código: Selecionar todos
MsgInfo(AREA_ARQ)
MsgInfo(ALIAS_ARQ)Na verdade, não é que eu não saiba sobre MACROSUBSTITUIÇÃO, confesso que isso me morde às vez, mas, é o conceito que é todo diferente.1
DCI10010
Ao mudar, veja os erros que apareceram:
Então, o negócio é a compreensão desses erros, que estão cada vez mais complexos:Date:20/03/2016 Time: 18:36:01
Error: HMG 3.4.2 Stable (32 bits)
Browse/Grid: FIELDS/HEADERS/WIDTHS array size mismatch .Program Terminated
Called from _DEFINEGRID(310)
Called from CRIABROWSE_GRID(341)
Called from CONSULTA_ARQUIVO(2410)
sei lá o que quer dizer:
Browse/Grid: FIELDS/HEADERS/WIDTHS array size mismatch .Program Terminated
valeu gente!
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!
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!
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Define window
Amigo, como disse na MP, evite postar a mesma mensagem em tópicos diferentes, veja os links que relacionei sobre as mensagens suas que estão duplicadas.microvolution escreveu:honestamente não entendi desta vez
Se não domina o inglês, o jeito é pedir ajuda para um tradutor:microvolution escreveu:sei lá o que quer dizer:
Browse/Grid: FIELDS/HEADERS/WIDTHS array size mismatch .Program Terminated
Então o número de campos que você vai mostrar na GRID (COLUMNFIELDS grid_data_columnfields()), tem que ser igual aos parâmetros:Google Tradutor escreveu:CAMPOS / headers / larguras tamanho da matriz incompatibilidade
Várias funções que provavelmente devem retornar uma array para cada opção acima, então se na GRID será mostrado 15 campos, as funções acima também terão que retornar uma array com 15 posições. E pela mensagem de erro, isto não está ocorrendo.WIDTHS grid_data_widths()
HEADERS grid_data_headers()
DYNAMICBACKCOLOR grid_data_dynamicbackcolor()
COLUMNCONTROLS grid_data_columncontrols()
JUSTIFY grid_data_justify()
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
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

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Define window
bom dia!
"captei a vossa mensagem o digníssimo professor..."
comecei a entender melhor esta questão e fiz uma varredura em todas as variáveis/arrays que são passados, usando um laço for/next (para os arrays) e o MSGINFO() para imprimir na tela o seu conteúdo.
Então, recapitulando:
1 - on key (era set key) não passa nenhum argumento para a função CONSULTA_ARQUIVO():
2 - esta função recebe 3 argumentos (não lembro o porque que fiz assim [chama se argumento e recebe argumento]. veja(m):
3 - dentro do textbox (antigo get) pressiono o F4, no caso nesta linha:
4 - Depois que o professor me ensinou, acredito que o problema começa aqui acima, pois ao pressionar F4 ou o código do produto for diferente, é acionada a função FCDPRODUTO_GUI(), que é a seguinte:
Então, observamos que no caso de um ENTER a função CONSULTA_ARQUIVO envia a variável do campo (antigo get) que chama-se MCDPRODUTO.
Ao ser pressionada F4 isso não acontece, pois, ela (a tecla de função) pode ser acionada de qualquer lugar do formulário.
5 - Então, não está sendo passado o arqumento contendo o nome da variável... aí a função lá na frente que abre o GRID/BROWSE como não recebe o nome dessa variável, então está abrindo um conteúdo de 15 campos e está recebendo um conteúdo de 16 campos de arquivo. Com isso gera aquele erro que mencionei na última postagem.
Bom, no clipper ao usar o SET KEY, em qualquer campo (@get) que estiver ele envia automaticamente o nome da variável, mesmo não passando nenhum argumento.
"captei a vossa mensagem o digníssimo professor..."
comecei a entender melhor esta questão e fiz uma varredura em todas as variáveis/arrays que são passados, usando um laço for/next (para os arrays) e o MSGINFO() para imprimir na tela o seu conteúdo.
Então, recapitulando:
1 - on key (era set key) não passa nenhum argumento para a função CONSULTA_ARQUIVO():
Código: Selecionar todos
ON KEY F4 OF Frm_TELA_ENTRADA ACTION CONSULTA_ARQUIVO()Código: Selecionar todos
static function CONSULTA_ARQUIVO (PROGRAMA,LINHA,VARIAVEL)Código: Selecionar todos
@ 360 , 470 TEXTBOX txtCDPRODUTO PARENT Frm_TELA_ENTRADA WIDTH 150 HEIGHT 30 FONTCOLOR BLUE BOLD NUMERIC MAXLENGTH 13 FONT "Arial" SIZE 14 ON ENTER { || fCDPRODUTO_GUI () } // MAXLENGTH 13 INPUTMASK '9999999999999' FORMAT 'E'Código: Selecionar todos
select ('DCI10010')
if .not. EXISTE (str (mCDPRODUTO,13))
MsgExclamation ('Código do Produto não cadastrado','Orçamento FDL GUI - SiCCA v3.6.03')
// MENSAGEM ('Código do Produto não cadastrado(a)')
CONSULTA_ARQUIVO ('','','MCDPRODUTO')
select (ARQUIVO)
return (.f.)
endifAo ser pressionada F4 isso não acontece, pois, ela (a tecla de função) pode ser acionada de qualquer lugar do formulário.
5 - Então, não está sendo passado o arqumento contendo o nome da variável... aí a função lá na frente que abre o GRID/BROWSE como não recebe o nome dessa variável, então está abrindo um conteúdo de 15 campos e está recebendo um conteúdo de 16 campos de arquivo. Com isso gera aquele erro que mencionei na última postagem.
Bom, no clipper ao usar o SET KEY, em qualquer campo (@get) que estiver ele envia automaticamente o nome da variável, mesmo não passando nenhum argumento.
Portanto, como faço para que funcione do mesmo jeito ou uma solução para o problema da variável do TEXTBOX não estar sendo passada para a função ?
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!
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!
-
microvolution
- Usuário Nível 5

- Mensagens: 1231
- Registrado em: 02 Set 2011 22:17
- Contato:
Define window
bom, só pra ver se compreendo ainda mais as regras do fórum...
pelo que estou percebendo... o assunto está mudando de "define window" para outra coisa q nem sei o que é...
então prezado Toledo e/ou adminstrador(es)/moderador(res) vou postar a dúvida agora no seguinte tópico:
https://pctoledo.org/forum/viewto ... 45#p104845(por se tratar de on key)... caso eu tenha errado novamente, por favor, não considere intempestivo de minha parte e transfira para o devido local correto ou para cá, ok?
Caso, seja novamente, o tema deste tópico "define window" comentarei aqui... e os do browse/grid, postarei lá no outro tópico onde peguei o grid/browse (exemplo) do Pablo César ou aqui mesmo?
pelo que estou percebendo... o assunto está mudando de "define window" para outra coisa q nem sei o que é...
então prezado Toledo e/ou adminstrador(es)/moderador(res) vou postar a dúvida agora no seguinte tópico:
https://pctoledo.org/forum/viewto ... 45#p104845(por se tratar de on key)... caso eu tenha errado novamente, por favor, não considere intempestivo de minha parte e transfira para o devido local correto ou para cá, ok?
Caso, seja novamente, o tema deste tópico "define window" comentarei aqui... e os do browse/grid, postarei lá no outro tópico onde peguei o grid/browse (exemplo) do Pablo César ou aqui mesmo?
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!
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!
- Toledo
- Administrador

- Mensagens: 3133
- Registrado em: 22 Jul 2003 18:39
- Localização: Araçatuba - SP
- Contato:
Define window
Amigo, o melhor a fazer antes de postar uma dúvida é procurar um tópico que o assunto principal é sobre a sua dúvida em questão. O que você tem que evitar é exatamente isto que você fez agora, postou a mesma dúvida sobre a função ON KEY em dois tópicos diferentes.
Você observou que tinha postado sua dúvida sobre ON KEY em um tópico cujo assunto principal era sobre DEFINE WINDOW, então o correto seria excluir (veja obs abaixo) a sua mensagem postada aqui neste tópico e ai postar a mensagem no tópico correto.
Obs.: se a sua mensagem for a última postada em um tópico, você poderá excluir esta sua mensagem. Mensagens que já teve uma resposta, NÃO pode mais ser excluída.
Então evite postar a mesma dúvida em dois (ou mais) tópicos diferentes.
Abraços,
Você observou que tinha postado sua dúvida sobre ON KEY em um tópico cujo assunto principal era sobre DEFINE WINDOW, então o correto seria excluir (veja obs abaixo) a sua mensagem postada aqui neste tópico e ai postar a mensagem no tópico correto.
Obs.: se a sua mensagem for a última postada em um tópico, você poderá excluir esta sua mensagem. Mensagens que já teve uma resposta, NÃO pode mais ser excluída.
Então evite postar a mesma dúvida em dois (ou mais) tópicos diferentes.
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
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