Fórum Dúvida Simples #228979
30/04/2004
0
Estou com um probleminha num form. Ele é composto de dois panels: 1 para cadastro(com componentes DBEdits) e 1 para consulta(DBGrid);
Uso BringTo Front para mostrá-los. Mas o problema é o seguinte: qdo crio o form chamo o panel de cadastro e depois o panel de consulta, tudo ocorre bem. Mas qdo crio o form e chamo PRIMEIRAMENTE o panel de consulta ele trava, só consigo fechar o form.
Detalhes:
procedure TForm1.FormCreate(Sender: TObject);
begin
if acesso=´S´ then
Panel2.BringToFront //Este panel é o de consulta, aki o erro
else Panel1.BringToFront; //Este é o de cadastro
FDM.SQLDataSet1.Active:=True;
FDM.ClientDataSet1.Active:=True;
end;
Obs: acesso é uma variável global que uso para determinar o que quero chamar qdo o formulário é criado. Posso chamar a consulta qdo chamo primeiro o cadastro e vice-versa.
Desde já meus agradecimentos
G1b4
Curtir tópico
+ 0Posts
30/04/2004
Jsaraujo
Quando vc da um bringtofront em um panel o outro tem de receber sendtoback, talvez o erro esteja acontecendo porque o seu sistema não está conseguindo forçar ou outro panel pra traz.
Mas eu aconselho separar o cadastro da consulta em formulários, fazendo assim vc vai ter mais formularios, porem vai ficar mais organizado e com certeza vc tera menos problemas.
Espero ter ajudado...
Gostei + 0
30/04/2004
G1b4
Grato pela ajuda, mas minha dúvida ainda existe.
Obs:Não precisa usar SendToBack
Gostei + 0
30/04/2004
Paulo Trajano
Separar cadastro de consulta com certza facilita a organização. Mas eu acho que seria melhor separar as dentro de um componente PageControl. Desse modo, em uma aba ficaria a parte de Cadastro e em outra a parte de Consulta, tudo num mesmo formulário. Só precisa bloquear a mudança de páginas qdo a tabela estiver em modo de Edição/Inserção. No meu ponto de vista fica tudo organizado de uma maneira mais enxuta.
T+
Gostei + 0
30/04/2004
G1b4
Grato se alguém responder minha dúvida...
Gostei + 0
01/05/2004
Carlosrm
De maneira simplificada, em vez de usar BringToFront/Back, use a propriedade Visible:
- - -
if (acesso = ´S´) then begin
panel1.visible := true;
panel2.visible := false;
end
else begin
panel1.visible := false;
panel2.visible := true;
end;
- - -
Um panel enviado para trás pode ficar totalmente encoberto pelo outro panel que passou à sua frente. Porém, apesar de Não poder ser visto),
ele continua recebendo foco (pois sua propriedade Visible continua True).
Se o panel encoberto contiver algum componente com restrição de digitação (por exemplo, um edit ou dbedit que só aceita números), enquanto vc digitar qualquer coisa diferente de numero, o seu programa vai se comportar como se estivesse travado.
E como vc não pode ver o que está acontecendo (tem um outro panel encobrindo), pode dar a impressão de travamento.
Espero ter ajudado. carlosrm
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)