PROBLEMA SOBREPOSICAO OBJETOS
Alguém sabe porque ao abrir um form (Não MDI Child) como MODAL sobre um outro form, (porém este sendo MDI child) e com um componente MSFlexGrid, ao se fechar o form Modal (unload me) o FlexGrid some ou tem parte dele ocultado, como se o form Modal o tivesse apagado?
Se for um bug e não tiver como evitar isso, será que existe alguma opção para a situação abaixo:
No form MDI ao chamar esse form Modal, eu preciso esperar que o Modal seja fechado para só depois continuar executando o código de onde ocorreu a chamada, isso porque preciso das informações passadas pelo Modal para continuar. Porém não encontrei alternativa para isso se não com um form Modal.
Nota: Tentei usar DoEvents, mas não funcionou.
DoEvents
frmModal.Show
DoEvents
....mais código, porém ele não para até o frmModal ser fechado e continua rodando o código.
Se for um bug e não tiver como evitar isso, será que existe alguma opção para a situação abaixo:
No form MDI ao chamar esse form Modal, eu preciso esperar que o Modal seja fechado para só depois continuar executando o código de onde ocorreu a chamada, isso porque preciso das informações passadas pelo Modal para continuar. Porém não encontrei alternativa para isso se não com um form Modal.
Nota: Tentei usar DoEvents, mas não funcionou.
DoEvents
frmModal.Show
DoEvents
....mais código, porém ele não para até o frmModal ser fechado e continua rodando o código.
tente dar um refresh no flexgrid... e retire os DoEvents...
Bom dia Jean.
Estou ficando louco com isso.
Já tentei:
Refresh no form e no FlexGrid
form.Hide e form.Show
form.Enabled = false e true
grid.Visible = false e true
grid.Setfocus
O estranho é que isso está ocorrendo em 2 forms com estrutura diferente e situações diferentes também.
No primeiro, abro o 2º form MODAL (não MDI) e só ocorre o problema se clicar no botão Fechar (unload me), então o Grid é parcialmente apagado. Agora se clicar no botão consultar desse form, ele é fechado o código do primeiro continua normalmente e é carregado um recordsete e atualizado o grid.
No segundo problema, outro form que usa também esse mesmo form MODAL (só para pegar informações do usuário), tenho no form que chama várias tabs (SSTab) quando chamo estou em uma aba com 2 FlexGrid que acontecia a mesma coisa, então fiz assim:
Ao fechar o form modal a primeira instrução a seguir no form chamador era posicionar na tab seguinte e voltar em seguida para tab atual. Isso resolver o problema nos grids, agora quando clico no grid para selecionar uma linha, automaticamente os dados são passados para a próxima Aba e o foco também, só que mais de 50% dos controles dessa segunda aba também estão sendo apagados.
Não entendo o porquê?
Nota: Tenho 512 Megas de Ram, Pentium 4, Placa de vÃdeo GForce 4 (64Megas) e isso não pode acontecer por causa do Hardware.
A única saÃda que encontrei é deixar o segundo form como MDIChild e não modal, mas isso causa problema na lógica do meu programa, pois o código que chama esse 2º form não para até ele ser fechado, mesmo usando o DoEvents além desse form ir para trás do primeiro se este for clicado pelo usuário, aparentando que fechou mas só ficou por trás.
Alguma ajuda amigo?
Estou ficando louco com isso.
Já tentei:
Refresh no form e no FlexGrid
form.Hide e form.Show
form.Enabled = false e true
grid.Visible = false e true
grid.Setfocus
O estranho é que isso está ocorrendo em 2 forms com estrutura diferente e situações diferentes também.
No primeiro, abro o 2º form MODAL (não MDI) e só ocorre o problema se clicar no botão Fechar (unload me), então o Grid é parcialmente apagado. Agora se clicar no botão consultar desse form, ele é fechado o código do primeiro continua normalmente e é carregado um recordsete e atualizado o grid.
No segundo problema, outro form que usa também esse mesmo form MODAL (só para pegar informações do usuário), tenho no form que chama várias tabs (SSTab) quando chamo estou em uma aba com 2 FlexGrid que acontecia a mesma coisa, então fiz assim:
Ao fechar o form modal a primeira instrução a seguir no form chamador era posicionar na tab seguinte e voltar em seguida para tab atual. Isso resolver o problema nos grids, agora quando clico no grid para selecionar uma linha, automaticamente os dados são passados para a próxima Aba e o foco também, só que mais de 50% dos controles dessa segunda aba também estão sendo apagados.
Não entendo o porquê?
Nota: Tenho 512 Megas de Ram, Pentium 4, Placa de vÃdeo GForce 4 (64Megas) e isso não pode acontecer por causa do Hardware.
A única saÃda que encontrei é deixar o segundo form como MDIChild e não modal, mas isso causa problema na lógica do meu programa, pois o código que chama esse 2º form não para até ele ser fechado, mesmo usando o DoEvents além desse form ir para trás do primeiro se este for clicado pelo usuário, aparentando que fechou mas só ficou por trás.
Alguma ajuda amigo?
Mais ninguém?
Help....
Help....
bem... já escondeu o flex ao mandar mostrar o outro form, fazendo-o aparecer novamente? se não resolver assim... infelizmente... acho que pode ser necessário uma reinstalação do windows e do vb - com todas as atualizações necessárias para ambos. ou então, faça assim: envie para alguém de confiança seu exe e o banco... e peça para testar para ver se ocorre isso. se ocorrer, aà complica... se não ocorrer: formate e reinstale...
Jean sim, até o form tentei ocultar hide e voltar Show, mas continua.
Uso o XP e fiz o teste também no Win98 e o problema ocorre também, então não é caso de formatação.
Ou existe algum bug no FlexGrid ou no MODAL do VB ou então a atualização do Grid deve ser feita da alguma outra forma que não pelo Refresh.
Nota: Se eu clicar em uma das linhas, boa parte do componente é reexibido, só ficando a borda dele e as vezes a barra de rolagem oculta até que clique nela ou passe o mouse sobre essas área.
Uso o XP e fiz o teste também no Win98 e o problema ocorre também, então não é caso de formatação.
Ou existe algum bug no FlexGrid ou no MODAL do VB ou então a atualização do Grid deve ser feita da alguma outra forma que não pelo Refresh.
Nota: Se eu clicar em uma das linhas, boa parte do componente é reexibido, só ficando a borda dele e as vezes a barra de rolagem oculta até que clique nela ou passe o mouse sobre essas área.
poderia me mandar o exe e o banco para que eu teste aqui e ver o erro?
Jean não será possÃvel, pois o projeto tem aproximadamente 10 megas zipado.
Agradeço, mas acabei de conseguir resolver o problema, não como eu queria, mas ficou legal. Tive de usar uma OCX para deixar meu form sempre visÃvel, assim substituindo o MODAL e colocando o form como MDIChild.
Usei uma dica de outro colega para fazer um loop enquanto esse form estive aberto, assim aguardo o fechamento para continuar executando o código. Incluà ainda form.enabled=false na abertura e true ao fechar, assim evito que se clique no form que está em baixo.
Nota: Essa ocx está qui no site mesmo, foi postada se não me engano pelo WCosta. Eu tentei usar um código postado aqui também, no lugar dessa OCX, mas ele não funciona no meu XP. Esse código encontrei pesquisando aqui por "sempre visÃvel"
Obrigado novamente.
Agradeço, mas acabei de conseguir resolver o problema, não como eu queria, mas ficou legal. Tive de usar uma OCX para deixar meu form sempre visÃvel, assim substituindo o MODAL e colocando o form como MDIChild.
Usei uma dica de outro colega para fazer um loop enquanto esse form estive aberto, assim aguardo o fechamento para continuar executando o código. Incluà ainda form.enabled=false na abertura e true ao fechar, assim evito que se clique no form que está em baixo.
Nota: Essa ocx está qui no site mesmo, foi postada se não me engano pelo WCosta. Eu tentei usar um código postado aqui também, no lugar dessa OCX, mas ele não funciona no meu XP. Esse código encontrei pesquisando aqui por "sempre visÃvel"
Obrigado novamente.
Tópico encerrado , respostas não são mais permitidas