Fernando Duarte Posted November 10, 2013 Posted November 10, 2013 Olá pessoal, uso unigui desde o inicio do ano, fiz um projeto para testes e uso até hoje para controle dos meus clientes. Pretendo iniciar algo maior em breve. Bem, uma das primeiras coisas que tentei fazer foi criar um ambiente com forms multi abas, o que seria ótimo na web. Mas tive problemas com a conversão da classe TDI da vcl que possuo (caso queiram podem buscar no site da devmedia que tem lá ) alguém já conseguiu fazer algo? sabemos que o unigui permite vários forms abertos, mas organizar em abas seria ideal e mais simples para usabilidade. Quote
Nirlan Posted November 11, 2013 Posted November 11, 2013 Eu também estou tentando fazer dessa forma (TDI) mas por enquanto não consegui. Aqui no fórum eu cheguei a ver um exemplo, mas a pessoa não colocou os fontes. Procurei este post recentemente mas não o encontrei mais. Quote
Fernando Duarte Posted November 11, 2013 Author Posted November 11, 2013 Eu também estou tentando fazer dessa forma (TDI) mas por enquanto não consegui. Aqui no fórum eu cheguei a ver um exemplo, mas a pessoa não colocou os fontes. Procurei este post recentemente mas não o encontrei mais. se alguém se interessar, posso enviar a classe TDI com algumas mudanças para o Unigui, porém ainda está com erros que não consegui resolver. Quote
Marlon Nardi Posted November 11, 2013 Posted November 11, 2013 Também tive o mesmo problema que vocês. No UNIGUI não é possivel criar Abas com o TUniForm não é suportado. para contornar este problema consegui criar ataves de TUniFrame, segue o código: private { Private declarations } {Gerção de Formulários em Abas} procedure NovaAba(FormFrame: TFrame; Nome_Action: string); {--} procedure TFormPrincipal.NovaAba(FormFrame: TFrame; Nome_Action: string); var TabSheet :TUniTabSheet; FCurrentFrame :TUniFrame; I :Integer; begin PageControl.Visible:= True; {Verificando se a tela já está aberto e redicerionando a ela} for I := 0 to PageControl.PageCount - 1 do with PageControl do if Pages[I].Caption = Nome_Action then begin PageControl.ActivePageIndex := I; Exit; end; TabSheet := TUniTabSheet.Create(Self); TabSheet.PageControl := PageControl; TabSheet.Caption := Nome_Action; TabSheet.Closable := True; TabSheet.OnClose := VerificaAba; FCurrentFrame:= TUniFrameClass(FormFrame).Create(Self); with FCurrentFrame do begin Align := alClient; Parent := TabSheet; end; Refresh; PageControl.ActivePage := TabSheet; end; Quote
roberio Posted November 12, 2013 Posted November 12, 2013 Também tive o mesmo problema que vocês. No UNIGUI não é possivel criar Abas com o TUniForm não é suportado. para contornar este problema consegui criar ataves de TUniFrame, segue o código: private { Private declarations } {Gerção de Formulários em Abas} procedure NovaAba(FormFrame: TFrame; Nome_Action: string); {--} procedure TFormPrincipal.NovaAba(FormFrame: TFrame; Nome_Action: string); var TabSheet :TUniTabSheet; FCurrentFrame :TUniFrame; I :Integer; begin PageControl.Visible:= True; {Verificando se a tela já está aberto e redicerionando a ela} for I := 0 to PageControl.PageCount - 1 do with PageControl do if Pages[I].Caption = Nome_Action then begin PageControl.ActivePageIndex := I; Exit; end; TabSheet := TUniTabSheet.Create(Self); TabSheet.PageControl := PageControl; TabSheet.Caption := Nome_Action; TabSheet.Closable := True; TabSheet.OnClose := VerificaAba; FCurrentFrame:= TUniFrameClass(FormFrame).Create(Self); with FCurrentFrame do begin Align := alClient; Parent := TabSheet; end; Refresh; PageControl.ActivePage := TabSheet; end; So uma duvida voce usa o frame como form principal ou dentro do principal? Quote
Fernando Duarte Posted November 15, 2013 Author Posted November 15, 2013 Amigo Marlon, creio que faltou ai a implementação do método VerificaAba. outra dúvida, não achei a unit do TUniFrame, qual é? Quote
Marlon Nardi Posted November 22, 2013 Posted November 22, 2013 Dentro do FormPrincipal eu tenho um Pagecontrol, e para cada Aba do meu Pagecontrol eu crio o meu TuniFrame. Att, Quote
Marlon Nardi Posted November 22, 2013 Posted November 22, 2013 Amigo Marlon, creio que faltou ai a implementação do método VerificaAba. outra dúvida, não achei a unit do TUniFrame, qual é? a Procedure para Veirifca Aba é apenas para que o meu PageControl fique invisivel caso todas as abas seja fechadas: procedure VerificaAba(Sender: TObject; var AllowClose: Boolean); ------- procedure TFormPrincipal.VerificaAba(Sender: TObject; var AllowClose: Boolean); begin if PageControl.PageCount = 1 then PageControl.Visible := False; end; Para voce criar um Frame voce segue o seguinte caminho: File -> New -> Other -> Unigui for Delphi -> Frame da classe TUniFrame. Quote
NelsonFS Posted June 12, 2014 Posted June 12, 2014 Como você chama a procedure? Dá uma olhada no meu post: http://forums.unigui.com/index.php?/topic/4227-forms-tdi-tabs/ Quote
Nirlan Posted June 16, 2014 Posted June 16, 2014 Seguindo o exemplo do post http://forums.unigui...forms-tdi-tabs/ Estou fazendo alguns testes. Notei que o frame que não possui o evento onActivate. Como vocês estão fazendo para dar um refresh ? Por exemplo, em uma aba estou com o grid de consulta aberto. Abro outra aba e excluo um registro. Ao retornar para a aba da consulta gostaria de dar um refresh para mostrar os dados já atualizados. Como poderia simular um onActivate em uma frame ? Qualquer dica é bem vinda. Quote
NelsonFS Posted June 17, 2014 Posted June 17, 2014 Realmente um frame não tem onActivate, para burlar a falta, você pode fazer do modo mais dificil... Você pode fazer um loop dentro da aba (TUniTabSheet) atual (activepage) em todos os controles, até encontrar o panel com o nome colocado dentro do Frame. Esse panel dentro do frame contem todos os controles dbUniEdit (faz um for para todos os controls). Quando você encontrar um TUniDBEdit (verifique com Control[x] is TUniDBEdit), você pode capturar o dataset através de sua propriedade Dataset e depois chegar a query por ele. Chegando na query, você pode dar um refresh. Complicado não?? rsrsrsrs.. mas funciona.. é assim que faço. Quote
NelsonFS Posted June 20, 2014 Posted June 20, 2014 Não, no TUniPageControl tem o evento OnChange Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.