Adicionar um controle depois que o form foi carregado

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Adicionar um controle depois que o form foi carregado

Mensagem 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
"Eu e minha casa servimos ao Senhor e você ???"
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

Adicionar um controle depois que o form foi carregado

Mensagem 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
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Adicionar um controle depois que o form foi carregado

Mensagem 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
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionar um controle depois que o form foi carregado

Mensagem por asimoes »

Rubens,

Estou interessado também nisso, estou pesquisando se eu achar algo compartilho aqui.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionar um controle depois que o form foi carregado

Mensagem 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 )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionar um controle depois que o form foi carregado

Mensagem 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 ) ) )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionar um controle depois que o form foi carregado

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Adicionar um controle depois que o form foi carregado

Mensagem 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,
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionar um controle depois que o form foi carregado

Mensagem por asimoes »

Toledo,

Só pode usar Of ou Parent, os dois juntos dá erro
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionar um controle depois que o form foi carregado

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionar um controle depois que o form foi carregado

Mensagem 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)
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Adicionar um controle depois que o form foi carregado

Mensagem 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,
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
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Adicionar um controle depois que o form foi carregado

Mensagem 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
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionar um controle depois que o form foi carregado

Mensagem 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)
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Adicionar um controle depois que o form foi carregado

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder