Carregar form com linha e coluna relativo ao form chamador

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

Carregar form com linha e coluna relativo ao form chamador

Mensagem por rubens »

Boa noite..
Preciso carregar o form2 com linha e coluna relativa ao form1.

Código: Selecionar todos

//pego linha e coluna do form1
// Text_8 - Textbox do vendedor
Local nRow := GetProperty('Orca','Text_8','Row')+ GetProperty('Orca','Text_8','Height')+10
Local nCol := GetProperty('Orca','Text_8','Col') 
//Carrego o form2 e seto linha e coluna
Load Window Forms\Consulta as Consulta
SetProperty('Consulta','Row', nRow )
SetProperty('Consulta','Col', nCol )
On Key Escape Of Consulta Action ThisWindow.Release
Consulta.Activate
Só que quando ativa o form2 ele fica relativo ao desktop como na figura abaixo
ErroOrcame.png
queria que ficasse assim:
Certo.png
Obg
Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Carregar form com linha e coluna relativo ao form chamador

Mensagem por JoséQuintas »

Se fosse Visual Basic 6 eu diria pra carregar o formulário, ajustar a posição e só depois mostrar.
Se existir essa opção na minigui....

Algo mais ou menos assim:

load form2
form2.top = me.top + Int( ( me.height - form2.height ) / 2 )
form2.left = me.left + Int( ( me.width - form2.width ) / 2 )
form2.show

ou talvez carregar como visible = false, e fazer a mesma coisa.

Veja se existe a possibilidade na minigui, já que é baseada no VB5.

Nota:
row/col ou x/y, a métrica é diferente, mas os cálculos são no mesmo estilo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Carregar form com linha e coluna relativo ao form chamador

Mensagem por asimoes »

Um exemplo de um sistema meu:
nLarguraWindow seria a largura da sua janela de trás.

nLarguraWindow:=Form_Main.Width ou o width do form de trás

125 é a posição vertical, que pode ser:

nheight := ( Form_Main.Height - o tamanho vertical da janela que você quer centralizar ) / 2

AT nheight , (nLarguraWindow - o tamanho horizontal da janela que você quer centralizar) / 2 ;

Código: Selecionar todos

DEFINE WINDOW fInformaBoleto ;
   AT 125, (nLarguraWindow - 540) / 2 ;
   WIDTH 540 ;
   HEIGHT 475 ;
   TITLE 'Informações sobre o boleto ('+AllTrim(cNossoNumero)+') apartamento: '+cApto ;
   ICON "ICON_SOBRE" ;
   MODAL ;
   NOSIZE ;
   ON INIT (hWnd:=GetActiveWindow())
Nota: Você tem que pegar as dimensões de largura ( width ) e altura (height ) da janela de trás, e usar no AT

No AT seria

nWidth := ( janelaAnt.With - JanelaPos.Width ) / 2
nHeight := (JanelaAnt.Height - JanelaPos.Height ) / 2

Assim deve centratalizar proporcionalmente a janela de trás.

Na janelaPos

AT nWidth, nHeight
►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
rubens
Colaborador
Colaborador
Mensagens: 1520
Registrado em: 16 Ago 2003 09:05
Localização: Nova Xavantina - MT

Carregar form com linha e coluna relativo ao form chamador

Mensagem por rubens »

Boa tarde..
José já está sendo feito assim..

Código: Selecionar todos

load form2
form2.top = me.top + Int( ( me.height - form2.height ) / 2 )
form2.left = me.left + Int( ( me.width - form2.width ) / 2 )
form2.show
Aqui calcula a linha e a coluna

Código: Selecionar todos

Local nRow := GetProperty('Orca','Text_8','Row')+ GetProperty('Orca','Text_8','Height')+10
Local nCol := GetProperty('Orca','Text_8','Col')
Carrega o formulario, seta propriedade Row e Col e só depois que manda ativar..

Código: Selecionar todos

Load Window Forms\Consulta as Consulta
SetProperty('Consulta','Row', nRow )
SetProperty('Consulta','Col', nCol )
On Key Escape Of Consulta Action ThisWindow.Release
Consulta.Activate
Asimoes desse jeito aí acho que funciona porque ainda posso colocar um PARENT, mas eu tô carregando o formulário.. daí não encontrei opção de linkar o form2 ao form1.

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Carregar form com linha e coluna relativo ao form chamador

Mensagem por JoséQuintas »

Minhas HMGs estão inoperantes.
Pra atualizar, e não ter que ficar confirmando 2.000 vezes, jogo tudo no lixo, e tenho que alterar tudo de novo.
E como não uso no dia a dia... vai ficando pra depois.
Senão faria alguns testes sobre isso.

Aliás... é capaz que antes de alterar já sai versão nova... e lá se vai tudo de novo... kkkk
Prefiro isso do que usar do jeito que vém original, nem sei como suportam aquilo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder