Clipper On Line • Ver Tópico - Carregar form com linha e coluna relativo ao form chamador
Mudar para estilo Clássico
Projeto MiniGui - Biblioteca visual para Harbour/xHarbour
Postar uma resposta

Carregar form com linha e coluna relativo ao form chamador

12 Jun 2019 00:50

Boa noite..
Preciso carregar o form2 com linha e coluna relativa ao form1.
Código:
//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

Carregar form com linha e coluna relativo ao form chamador

12 Jun 2019 02:46

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.

Carregar form com linha e coluna relativo ao form chamador

12 Jun 2019 10:44

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:
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

Carregar form com linha e coluna relativo ao form chamador

12 Jun 2019 16:25

Boa tarde..
José já está sendo feito assim..
Código:
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:
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:
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

Carregar form com linha e coluna relativo ao form chamador

12 Jun 2019 19:01

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.
Postar uma resposta