GARANTIR DESCONTO

Fórum showmodal, como acessar um fsMDIChild #356168

29/03/2008

0

Ola pessoal,

tem um formulario que e fsMDIChild, que carrega uma tela de pesquisa que e fsnormal em showmodal

essa tela de pesquisa tem um listview onde e carregado os resultados da pesquisa.

no evento onselectitem eu tento passar os valores que estao no listview da tela de pesquisa para os edits do formulario fsMDIChild, o que gera sempre erro de acesso de memoria.

nao tenho como habilitar ( enabled = true ) os edits do formulario fsMDIChild para que esses possam receber os valores que foram selecionados no listview do formulario de pesquisa fsnormal ?

um forte abarco a todos
alineri


Alineri

Alineri

Responder

Posts

29/03/2008

Marco Salles

Precisa de dar mais detalhes :

[u:fb0c5a32f8][b:fb0c5a32f8]no evento onselectitem[/b:fb0c5a32f8][/u:fb0c5a32f8] eu tento passar os valores que estao no listview da tela de pesquisa para os edits do formulario fsMDIChild, o que gera sempre erro de acesso de memoria.


Que evento é este ????

e como voce esta fazendo este passagem de valores ????


Responder

Gostei + 0

29/03/2008

Paulo

Posso estar errado, mas as telas modal tem a prioridade do sistema enquanto elas estão sendo executadas, logo você não poderá carregar de outras telas nada para ela, enquanto elas estiverem sendo executadas, senão haverá o erro de Acces Violation sempre. Mas é possível ler variáveis globais vindo de outras telas, aí então é só trabalhar direitinho para setar variáveis globais para serem lidas no form modal. Eu particularmente, me limito ao máximo das var globais, mas quando não tem jeito vai elas mesmas. Não sei se resolvi suas dúvidas.


Responder

Gostei + 0

31/03/2008

Alineri

o evento onselectitem e um evento do componente listview

o que foi colocado de forms em showmodal terem prioridade desse proceder, ja tentei de tudo e nao funciona.

acho que vou trabalhar com vars globais mesmo.

o que eu gostaria de faezr e isso:

tenho um form simples, que carrega foto e dados de pessoas, e um botao que carrega uma tela de pesquisa por nome.

essa tela de pesquisa e menor que o form principal, quando ela e carregada ( pesquisa ) queria ao selecionar os itens no listview, ( no evento onselectitem ) carregar as informacoes nop form principal ( foto e dados ) sem ter que clicar no botao de ok do formulario de pesquisa mas pelo visto acho que isso nao e possivel com forms em showmodal


Responder

Gostei + 0

01/04/2008

Marco Salles

duas situações distintas que voce colocou neste tópico . Concedendo-lhe um caracter de confuso .

Primeiro :
tem um formulario que e fsMDIChild, que carrega uma tela de pesquisa que e fsnormal em showmodal


Segundo:
no evento onselectitem eu tento passar os valores que estao no listview da tela de pesquisa para os edits do formulario fsMDIChild, o que gera sempre erro de acesso de memoria


acredito que voce consegui acessar o form da tela de pesquisa em Showmodal ... Isto é um pouco confuso pq não é praxi e se não me engano isto so é possivel se a [b:964025eaca]propriedade visible do form estiver em false[/b:964025eaca] . Eu Digo confuso pq so este fato muitas das vezes ja seria motivo de dúvidas , Mas parece que contrariando o título :
[u:964025eaca][b:964025eaca]showmodal, como acessar um fsMDIChild[/b:964025eaca][/u:964025eaca]
Sua duvida não é o acesso ao fsMDIChild e sim a passagem de parâmetros de form Consulta que esta em ShowModal para o Form
fsMDIChild

Se o racicineo estiver condicente com aquilo que lhe passa , o problema se resumo na passagem de parâmetros . Isto é os Acessos Violados

Eu confesso que usei um conteudo de um edit.text num form ShowModal e passei este valor sem nenhum problema para um outro Edit localizado no Form fsMDIChild .
[color=darkred:964025eaca][b:964025eaca]A unica coisa que eu fiz foi a Chamada do Form
ShowModal pelo Form fsMDIChild[/b:964025eaca][/color:964025eaca] ...

Não seu se este é o seu caso , se for faça este simples teste e conclua que o erro pode estar no codigo usado no evento [b:964025eaca]onselectItem [/b:964025eaca]


Responder

Gostei + 0

01/04/2008

Alineri

OI Marco,

consegui ainda pouco resolver meu problema.

bem eu tenho dois forms

form1 = fsMDIChild,
form2 = fsMDIChild mudei o parametro do formulario

o form1 e o formulario principal
p form2 e o formulario de pesquisa

o form2 estava sendo carregado em showmodal, e o resultado da pesquisa e carregado em um listview.

estava querendo passar os valores da pesquisa no evento onselectitem do listview sem encerrar ( fechar ) o form2 ( formulario de pesquisa )

qual e a ideia. o form2 ( pesquisa ) e menor que o form1, ao selecionar os itens do listview o usuario veria os dados sendo alterados no form1 ( principal )

so que os formulario carregados em showmodal tem prioridade no sistema, e todos os demais itens ficam sem acesso.

pelo que pesquisei somente e possivel enciar dados de um form em showmodal para outro form quando encerramos o form em modal ex:

if form2.ShowModal = mrOk then

dessa forma ao prescionar o ok conseguimos trabalhar com os dados das variaveis tranquilamente.

o que eu fiz para resolver e atender a solicitacao de um usuario foi

ao carregar o form2 ( pesquisa ) faco form1.enabled := false, dando ´quase´ a impressao de ser um modal, dessa forma consigo utilizar o evento onselecitem do form2 ( pesquisa ) para passar os dados para o form1 sem ter que fechar o form2 ( pesquisa )

um forte abraco a todos
alineri


Responder

Gostei + 0

02/04/2008

Marco Salles

Em primeiro lugar obrigado pelo retorno .

Eu tb Tinha observado que vc estava pesquisando em outro forum , inclusive com aquilo que voce diz :

pelo que pesquisei somente e possivel enciar dados de um form em showmodal para outro form quando encerramos o form em modal ex:


Mas eu discordo profundamente desta sua interpretação . Imagine que voc tenha dois forms
O Form1 tem um edit e chama o Form2 em ShowModal
O Form2 tb tem um edit
Nun Botão do Form2 no Evento OnClick o seguinte Código
procedure TForm2.Button2Click(Sender: TObject); begin form1.edit1.Text:=edit1.Text; end;


[b:9a83f153e5]Quer dizer que o valor de De Text do edit1 do Form2 so é enviado ao Edit1 do Form1 so depois que o Form2 Fecha ???????[/b:9a83f153e5]

Ora , faça um teste . [color=darkblue:9a83f153e5]coloque esses dois form lado a lado e veja se o dado não é enviado na hora [/color:9a83f153e5]... Para ter mais certeza ainda disso , coloque um outro Buton No Form2 e no evento OnClick Altere a cor do Form1 .... Por exemplo form1.color:=clRed; [b:9a83f153e5][color=darkblue:9a83f153e5]Verfique voce mesmo se esta cor não se altera na mesma Hora independentemente do Form2 esta ainda aberto[/color:9a83f153e5][/b:9a83f153e5]



Então eu discordo , e a interpretação do Codigo abaixo é :

if form2.ShowModal = mrOk then 
  begin
     // Bloco1
  end
else
  begin
    // Bloco2
  end;


na minha concepção quando se fecha o form2 se o modalResult for OK
Executara o Bloco1 se o modalResult for <> mrOk resultara o Bloco2
então o que que voce tem com isto ??? Voce tem uma Opção que depende de como o Form2 sera encerrado o codigo tomará uma ou outra decisão e estas Decisões so serão processadas quando o form2 for finalizado


é bom deixar estas coisas claras pq sua dúvida pode ser particular mas o conceito não pode ser pessoal ...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar