Fórum Dúvida Simples #228979

30/04/2004

0

Uso FB1.5 com DBExpress e ClientDataSet.
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

G1b4

Responder

Posts

30/04/2004

Jsaraujo

Bom dia,

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


Responder

Gostei + 0

30/04/2004

G1b4

Caro jsaraujo,
Grato pela ajuda, mas minha dúvida ainda existe.
Obs:Não precisa usar SendToBack


Responder

Gostei + 0

30/04/2004

Paulo Trajano

Olá pessoal,

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+


Responder

Gostei + 0

30/04/2004

G1b4

Galera, o tópico da dúvida não é sobre questões de organização...
Grato se alguém responder minha dúvida...


Responder

Gostei + 0

01/05/2004

Carlosrm

g1b4,

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


Responder

Gostei + 0

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

Aceitar