Array
(
)

Hint no Statusbar

Jrcosmoluis
   - 19 fev 2006

Bom Dia lista,

Tenho três FORM: PRINCIPAL, CADASTRO e TRÂMITE, também têm um STATUSBAR e um PROGRESSBAR.
Então fica assim no STATUSBAR:

Painel 0 = PROGRESSBAR;
Painel 1 = ??
Painel 2 = Dados dos formulários ao movimento do mouse;
Painel 3 = Data e no;
Painel 4 = Horas;

Meu pensamento: Que no PAINEL 1 fique o nome do formulário em foco,
mas quando esse fosse fechado o nome do formulário saísse do painel
e não restando mais nenhum formulário em foco que mostre o nome do formulário principal.

Conseguir o mínimo, pois no MainMenu que chama
cada formulário coloquei no seu onclick dessa forma:

Statusbar1.Panels[1].Text := ´O NOME DO FORMULÁRIO´;

Dessa forma a cada click chama o formulário e se chamar todos, sendo que primeiro um e depois outro e outro, nesta proporção vai mudando no painel, mas depois que fecho o que foi aberto por último, o anterior que fica com o
foco, neste o nome não aparece no painel e sim o que foi fechado.
Pessoal deu pra entender? Alguém poderia dar uma dica pro iniciante aqui de
como posso fazer esse processo? Valeu e obrigado desde já.


Edilcimar
   - 19 fev 2006

por que em vez de colocar o nome no status bar vc não coloca no próprio form (no caption), aí vc sermpre terá o nome do form!


Marco Salles
   - 19 fev 2006

amigo existem muitas maneiras de se realizar isto

no meu modo de ver ha melhor talves seje com o objeto global application (a partir do delphi5)

porem como parece ser simples o que voce quer ,podemos usar o evento (OnActive dos formularios)

voce disse que:

Citação:
Conseguir o mínimo, pois no MainMenu que chama
cada formulário coloquei no seu onclick dessa forma:

Statusbar1.Panels[1].Text := ´O NOME DO FORMULÁRIO´;


voce deve substitui esta linha de codigo e escrever no evento OnActive de cada formulario a seguinte instrução

#Código

procedure TPRINCIPAL.FormActivate(Sender: TObject);
begin
PRINCIPAL.StatusBar1.Panels[0].Text:=(sender as tform).caption;
end;


#Código
procedure TCADASTRO.FormActivate(Sender: TObject);
begin
PRINCIPAL.OnActivate(sender);
end;


#Código
procedure TTRAMITE.FormActivate(Sender: TObject);
begin
PRINCIPAL.OnActivate(sender);
end;


e claro que para isto compilar os devidos formularios devem ser definidos na secção uses correpondentes

mas digo mais , existemmuitas formas de se realizar isto...


Jrcosmoluis
   - 19 fev 2006

Amigos,

Edilcimar mais uma vez obrigado pela sugestão e Marco Salles eu conseguir fazer (com ajuda é claro) dessa forma aí em baixo. E como você mesmo disse, tem varias maneiras de se fazer... agora vou testar a sua também.

Obrigado pela ajuda e atenção.

PARA COLOCAR O NOME DO FORMULÁRIO NO STATUSBAR DO FORM PRINCIPAL

1 – CRIA A “PROCEDURE AOTROCARFORM”;

procedure tform1.aotrocarform(sender: tobject);
begin
statusbar1.panels[1].text := screen.activeform.caption;
end;

2 – NO EVENTO ONACTIVE DO FORMULÁRIO PRINCIPAL COLOQUE CÓDIGO ABAIXO:

procedure tform1.formcreate(sender: tobject);
begin
screen.onactiveformchange := aotrocarform;
end;

3 – E POR FIM NO EVENTO ONDESTROY DO FORMULÁRIO PRINCIPAL COLOQUE CÓDIGO ABAIXO:

procedure tform1.formdestroy(sender: tobject);
begin
screen.onactiveformchange := nil;
end;


DICA FUNCIONOU LEGAL