Página 1 de 3
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 10:27
por rubens
Olá...
Tenho um Form
Código: Selecionar todos
*HMGS-MINIGUI-IDE Two-Way Form Designer Generated Code
*OPEN SOURCE PROJECT 2005-2015 Walter Formigoni http://sourceforge.net/projects/hmgs-minigui/
DEFINE WINDOW TEMPLATE AT 152 , 239 WIDTH 1088 HEIGHT 550
END WINDOW
Carrego ele pelo arquivo
Código: Selecionar todos
LOAD WINDOW FORMS\FORM_VENDA AS FORM_VENDA
DoMethod('FORM_VENDA','MAXIMIZE')
DoMethod('FORM_VENDA','ACTIVATE')
Como faço para definir um controle tipo um status bar nele depois de carregado com o LOAD? preciso inserir o STATUSBAR seguinte:
Código: Selecionar todos
DEFINE STATUSBAR FONT "Courier New" SIZE 14 BOLD OF FORM_VENDA
STATUSITEM "VENDEDOR:" WIDTH 270 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
STATUSITEM "PDV: " WIDTH 80 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
STATUSITEM "SERVIDOR:" WIDTH 300 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
STATUSITEM "F7-ATUALIZA PDV" WIDTH 210 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
STATUSITEM "F9-FECHA VENDA" WIDTH 210 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
DATE WIDTH 150 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
CLOCK WIDTH 150 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
END STATUSBAR
Motivo... a IDE da minigui está com problemas nesse controle, já enviei e-mail informando o problema e estão corrigindo. a IDE coloca as cores entre aspas toda vez que salva o formulário, daí não funciona as cores.
Se alguém souber também como setar as cores de um item do statusbar resolve. Bastaria colocar uma função no oninit.
Tentei setar assim mas deu erro na compilação:
Código: Selecionar todos
FORM_VENDA.STATUSBAR.ITEM(1).FONTCOLOR := {255,255,255}
FORM_VENDA.STATUSBAR.ITEM(1).BACKCOLOR := {0,0,0}
Obrigado
Rubens
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 12:17
por Nascimento
Amigo Achei esse exemplo aqui nao sei se vai se encaixar no que vc quer
Código: Selecionar todos
#include <hmg.ch>
Function Main
define window tabsample at 0,0 width 400 height 300 main
define tab tab1 at 10,10 width 380 height 200
define page 'Page1'
define button ok
row 30
col 30
caption 'Press here to add a acontrol'
width 200
action addnewcontrol()
end button
end page
define page 'Page2'
end page
end tab
end window
tabsample.center
tabsample.activate
Return
function addnewcontrol
if iscontroldefined(text1,tabsample)
tabsample.text1.release
endif
define textbox text1
parent tabsample
row 50
col 10
width 100
end textbox
tabsample.tab1.addcontrol('text1',1,80,50)
return nil
fonte
http://www.hmgforum.com/viewtopic.php?t=1859
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 15:37
por rubens
Nascimento, Obg....
Pelo que vi essa função addcontrol é para o controle TAB.
No manual da Minigui menciona ele mas menciona que é para o TAB
Add a new control to a tab control.
SYNTAX
METHOD
<ParentWindowName>.<ControlName>. AddControl ( ControlName , nPageNumber , nRow , nCol )
Até tentei simular um comando com ele
Código: Selecionar todos
FORM_VENDA.STATUSBAR.ADDCONTROL( 'STATUSITEM','VENDEDOR',270 )
mas dá erro na compilação.
Na pasta C:\MiniGUI\SAMPLES\BASIC\Status\demo4 tem um exemplo de uma função "oculta" (não encontrei documentação em lugar nenhum, mas no demo4 mostra exemplo de funcionamento, faz o que eu preciso, muda a cor do item das STATUSBAR. Mas para isso acontecer na definição da STATUSBAR, tem que definir o STATUSITEM com ou fontcolor ou backcolor e é exatamente isso que tá dando problema na IDE da Minigui Extends. O jeito vai ter que esperar uma correção e ir alterando na unha toda vez que precisar abrir e salvar o form.
Se alguém precisar mudar a cor de um item da STATUSBAR é só ir no exemplo que mencionei acima que tem o exemplo...
Obrigado
Rubens
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 16:14
por asimoes
Rubens,
Estou interessado também nisso, estou pesquisando se eu achar algo compartilho aqui.
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 16:25
por asimoes
Rubens,
Com relação a cor você tentou usar o #command que está no exemplo?
#command SET STATUSITEM <n> ;
OF <Form> ;
FONTCOLOR <acolor> ;
=> ;
_SetStatusItemProperty( <n>, <acolor>, GetFormHandle(<"Form">), STATUS_ITEM_FONTCOLOR )
#command SET STATUSITEM <n> ;
OF <Form> ;
BACKCOLOR <acolor> ;
=> ;
_SetStatusItemProperty( <n>, <acolor>, GetFormHandle(<"Form">), STATUS_ITEM_BACKCOLOR )
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 16:30
por asimoes
Rubens,
Não sei se ajuda no include i_status.ch
#xcommand STATUSITEM [ <cMsg> ] ;
[ WIDTH <nSize> ] ;
[ ACTION <uAction> ] ;
[ ICON <cBitmap> ] ;
[ STYLE ] [ <style:FLAT,RAISED> ] ;
[ TOOLTIP <cToolTip> ] ;
[ BACKCOLOR <backcolor> ] ;
[ FONTCOLOR <fontcolor> [ <c: CENTERALIGN> ] [ <r: RIGHTALIGN> ] ] ;
[ <default: DEFAULT> ] ;
=> ;
_DefineItemMessage( "STATUSITEM", , 0, 0, <cMsg>, <{uAction}>, <nSize>, 0, <cBitmap>, <"style">, <cToolTip>, <.default.>, <backcolor>, <fontcolor>, iif( <.r.> == .t., 2, iif( <.c.> == .t., 1, 0 ) ) )
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 17:07
por asimoes
Rubens,
Acho que você está querendo talvez não funcione, porque o controle statusbar tem estar dentro de um define window como foi feito o load este controle não pode ser definido logo após.
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 22:23
por Toledo
Amigos, tente o seguinte:
Código: Selecionar todos
DEFINE STATUSBAR PARENT FORM_VENDA FONT "Courier New" SIZE 14 BOLD
STATUSITEM "VENDEDOR:" WIDTH 270 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
STATUSITEM "PDV: " WIDTH 80 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
STATUSITEM "SERVIDOR:" WIDTH 300 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
STATUSITEM "F7-ATUALIZA PDV" WIDTH 210 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
STATUSITEM "F9-FECHA VENDA" WIDTH 210 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
DATE WIDTH 150 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
CLOCK WIDTH 150 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
END STATUSBAR
Abraços,
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 22:31
por asimoes
Toledo,
Só pode usar Of ou Parent, os dois juntos dá erro
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 22:33
por asimoes
Toledo,
Eu tentei isso mas não funfou:
Código: Selecionar todos
LOAD WINDOW FMG\fCadastro AS fCadastro
DEFINE STATUSBAR PARENT "FCADASTRO" FONT "Courier New" SIZE 14 BOLD //OF fCadastro
STATUSITEM "VENDEDOR:" WIDTH 270 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
DATE WIDTH 150 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
CLOCK WIDTH 150 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
END STATUSBAR
CENTER Window fCadastro
ACTIVATE Window fCadastro
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 22:35
por asimoes
O erro é esse:
Código: Selecionar todos
Called from h_status.prg->_BEGINMESSAGEBAR(112)
Called from ->CADASTRO_CONDOMINOS(47)
Called from ->(b)MAIN(40)
Called from h_windows.prg->_DOCONTROLEVENTPROCEDURE(1670)
Called from h_events.prg->EVENTS(1523)
Called from ->DOMESSAGELOOP(0)
Called from h_windows.prg->_ACTIVATEWINDOW(1388)
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 22:35
por Toledo
Alexandre, desculpe... eu copiei o código do post inicial e depois acabei notando isto e fiz a correção na minha mensagem.
Abraços,
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 22:38
por Toledo
Alexandre, tenta sem as aspas no nome do formulário:
Código: Selecionar todos
DEFINE STATUSBAR PARENT FCADASTRO FONT "Courier New" SIZE 14 BOLD
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 22:42
por asimoes
Toledo,
Infelizmente não funciona, seria bem legal ter esse recurso na minigui ou hmg
Código: Selecionar todos
LOAD WINDOW FMG\fCadastro AS fCadastro
DEFINE STATUSBAR PARENT FCADASTRO FONT "Courier New" SIZE 14 BOLD
STATUSITEM "VENDEDOR:" WIDTH 270 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
DATE WIDTH 150 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
CLOCK WIDTH 150 FONTCOLOR {255,255,255} BACKCOLOR {0,0,0}
END STATUSBAR
ACTIVATE Window fCadastro
Código: Selecionar todos
Error BASE/1081 Erro nos parâmetros: +
Called from h_status.prg->_DEFINEITEMMESSAGE(188)
Called from ->CADASTRO_CONDOMINOS(46)
Called from ->(b)MAIN(40)
Called from h_windows.prg->_DOCONTROLEVENTPROCEDURE(1670)
Called from h_events.prg->EVENTS(1523)
Called from ->DOMESSAGELOOP(0)
Called from h_windows.prg->_ACTIVATEWINDOW(1388)
Called from ->MAIN(116)
Adicionar um controle depois que o form foi carregado
Enviado: 06 Mar 2016 22:53
por asimoes
Eu entendo que estes controles tem que estar dentro do define window, que neste caso está no fmg
Eu procurei na minigui se existe alguma função que permita isso mas não achei