Como fazer minha tela desta maneira?
13/02/2006
0
[img:bd112992f3]http://www.digitum.info/cb.gif[/img:bd112992f3]
As abas seriam os Captions dos formulários, e quando eu clicasse na aba, automaticamente, abaixo abriria o Form, porém não sei fazer isso, estou tentando usar um componente que vem com o JEDI, porém me parece que ele come muita memória, e já me falaram que eu poderia usar Frame para isso... mas eu nunca usei...
Pois bem, queria fazer isso, e de uma forma que não ficasse muito pesado.. As abas eu já tenho o componente pra fazer, o que falta eh esse negócio do Form mesmo..
Aproveitando, vocês preferem a tela desta maneira ou MDI? Seria uma boa fazer uma enquete sobre isso :D
Desde já agradeço a todos...
[]s
Titanius
Posts
14/02/2006
Aroldo Zanela
Eu ainda não entendi, pois se eu tivesse entendido, bastaria usar PageControl.
14/02/2006
Truck1n
:lol:
14/02/2006
Titanius
Eu ainda não entendi, pois se eu tivesse entendido, bastaria usar PageControl.[/quote:3de326d2df]
Olá pessoal... Pois bem, vou explicar melhor :D
Tenho uma barra acima, que ficaria os Captions dos forms que eu criaria.. pois em baixo desta barra, eu mostraria o Form em questão, o problema do PageControl, eh que nao dá pra colocar um form dentro da ´página´ ou dá? o meu problema está mesmo em inserir um Form na parte de baixo da Barra, pois o form a ser inserido poderá ser qualquer um da aplicação...
Com o Frame eu posso mudar o Form dentro dele em RunTime?
A intenção é justamente essa, ao invés de criar um Form como MDIChild, eu criaria ele em forma de Tabs... :D
[]s
14/02/2006
Weber
Da uma olhada no site, acho que foi aqui mesmo no clubedelphi.net que vi esta dica!
14/02/2006
Titanius
blz, irei procurar... obrigado...
14/02/2006
Paulocesar1301
Podes colocar no
procedure T<SeuFormBase>.<SeuPageControl>Change(Sender: TObject);
If <SeuFormBase>.<SeuPageControl>.ActivePageIndex = 0 Then
begin
If Assigned(Form2) Then
<FormACriar>.Show
Else begin
<FormACriar> := T<FormACriar>.Create(nil);
<FormACriar>.Parent := <SeuFormBase>.<SeuPageControl>.Pages[0];
<FormACriar>.Show;
End;
end;
Obs.:
Para teste coloquei o <FormACriar> com wsMaximized;
No OnClose do <FormACriar> coloquei Action:=caFree;
No OnDestroy do <FormACriar> coloquei <FormACriar> := nil;
14/02/2006
Titanius
Olá amigo,
Testei porém, parece que o Parent não funcionou... ele exibiu a tela, porém não dentro do pagecontrol :(
meu codigo:
If Form1.PgC1.ActivePageIndex = 0 Then begin If Assigned(Form2) Then Form2.Show Else begin Form2 := TForm2.Create(nil); Form2.Parent := Form1.PgC1.Pages[0]; Form2.Show; End; end;
Fiz algo de errado?
[]s
15/02/2006
Michael
Vc pode realmente simular o esquema de abas do Delphi 2005 usando o componente [b:9ed858b9e7]TPageControl[/b:9ed858b9e7], preferencialmente com a propriedade [b:9ed858b9e7]Style [/b:9ed858b9e7]definida para [b:9ed858b9e7]tsButtons [/b:9ed858b9e7]ou [b:9ed858b9e7]tsFlatButtons [/b:9ed858b9e7](pessoalmente prefiro este último).
Para criar o form dentro da TabSheet do PageControl, use um código como o a seguir:
begin with TForm2.Create(nil) do begin BorderStyle := bsNone; Align := alClient; // Sim, Align serve para alguma coisa em forms! Parent := TabSheet1; (Parent as TabSheet).Caption := Caption; Show; end;
Obviamente que as [b:9ed858b9e7]TabSheets [/b:9ed858b9e7]serão dinâmicas, então o código acima pode variar um pouco. Lembre-se tbm de criar um procedimento para liberar os forms da memória quando a aplicação terminar - pois estamos criando eles com [b:9ed858b9e7]nil[/b:9ed858b9e7]. Vc pode usar o mecanismo de Owner do Delphi, desta forma:
with TForm2.Create(TabSheet1) do ...
Assim vc só precisa liberar a TabSheet no [b:9ed858b9e7]OnDestroy [/b:9ed858b9e7]do formulário principal e o form associado a ela vai junto. De qualquer forma, se as abas forem fixas, então não será necessário destruí-las manualmente.
Vc pode melhorar ainda mais a interface associado uma imagem à cada aba do PageControl, que represente a funcionalidade do form. E, como o não haverá mais os botões de controle da janela (Minimiza, Maximizar e Fechar), será necessário implementar alguma maneira de o usuário poder pelo menos fechar o form.
Apenas para constar: a DevExpress possui um componente PageControl que é idêntico ao do Delphi 2005, inclusive com o botão de Fechar. Acredito que há outros, free ou open source, mas não me recordo de nenhum no momento.
[]´s
15/02/2006
Martins
por [color=green:3b3a0e5a77][b:3b3a0e5a77](Parent as TTabSheet).Caption := Caption[/b:3b3a0e5a77][/color:3b3a0e5a77];
begin with TForm2.Create(nil) do begin BorderStyle := bsNone; Align := alClient; // Sim, Align serve para alguma coisa em forms! Parent := TabSheet1; (Parent as TTabSheet).Caption := Caption; Show; end;
Valew pela dica camarada!!!
15/02/2006
Michael
É verdade. Nem havia percebido... ;-)
[]´s
15/02/2006
Martins
É verdade. Nem havia percebido... ;-)
[]´s[/quote:dd7d39e263]
É a correria compadre, isso acontece, relaxa!!! :wink:
15/02/2006
Paulocesar1301
Clique aqui para fazer login e interagir na Comunidade :)