Fórum Trabalhar com abas em forms separados usando TAdvOfficePager #452736
20/08/2013
0
Isso vai ser pro meu TCC. Tenho um componente da TMS, o AdvOfficePager, nele quero pode adicionar abas com o conteudo carregado de outro form, por ser mais orientado..
A principio, pensei, em cada form de cadastro que fizer, colocar os componentes num AdvOfficePage e depois integra-lo com AdvOfficePager na tela principal.
Outra possibilidade seria colocar num TPanel. Porem nao faco ideia de como instancia-los e finaliza-los depois tbm.
Qualquer ajuda sera bem vinda,
Abracos.
Michel Tank
Curtir tópico
+ 0Posts
21/08/2013
Rafael Brendolan
É isso que você quer?
Posso disponibilizar aqui quando chegar em casa de noite.
Ele está completo, só disparar procedure AbrirForm e passar o Form q ele abre em uma guia nova (que ele cria automaticamente) e tem controle para não abrir uma guia idêntica, etc... só confirma se é isso que você quer que se for positivo eu coloco no meu 4Shared e disponibilizo aqui
Gostei + 0
21/08/2013
Michel Tank
Aproveitando o tópico, vc conhece alguma API do delphi equivalente ao Hibernate do Java?
Gostei + 0
22/08/2013
Siplancontrol-m
Gostei + 0
30/08/2013
Rafael Brendolan
Eu fiz isso para um projeto meu uma época e acabei não usando, mas deixei guardado;
Criei uma Unit e coloquei as funções lá dentro, recomendo o mesmo para ficar mais simples o uso.
Crie uma unit TClassFuncoes ou adicione em alguma do tipo se você já tiver.
class procedure AbrirForm(Form: TFormClass); class function AbaExiste(NomeAba: string): Boolean; class procedure FecharForm(Form: TFormClass);
Depois implemente:
class function TClassFuncoes.AbaExiste(NomeAba: string): Boolean;
var
i: Integer;
Aba: TcxTabSheet;
begin
Result := False;
for i := 0 to FrmPrincipal.cxPageControlPrincipal.PageCount - 1 do
begin
if FrmPrincipal.cxPageControlPrincipal.Pages[i].Caption = NomeAba then
begin
Aba := FrmPrincipal.cxPageControlPrincipal.Pages[i];
FrmPrincipal.cxPageControlPrincipal.ActivePage := Aba;
Result := True;
break;
end;
end;
end;
class procedure TClassFuncoes.AbrirForm(Form : TFormClass);
var
i: Integer;
Tab: TcxTabSheet;
frm: TForm;
begin
try
for i:=0 to FrmPrincipal.cxPageControlPrincipal.PageCount-1 do
begin
if (FrmPrincipal.cxPageControlPrincipal.Pages[i].Controls[0].ClassType = Form) then
begin
FrmPrincipal.cxPageControlPrincipal.ActivePage := FrmPrincipal.cxPageControlPrincipal.Pages[i];
Exit;
end;
end;
Tab := TcxTabSheet.Create(FrmPrincipal.cxPageControlPrincipal);
Tab.PageControl := FrmPrincipal.cxPageControlPrincipal;
frm := Form.Create(Application);
frm.Parent := Tab;
frm.Align := alClient;
frm.BorderStyle := bsNone;
Tab.Caption := frm.Caption;
frm.Show;
FrmPrincipal.cxPageControlPrincipal.ActivePage := Tab;
except
on E: Exception do
ShowMessage('Erro ao abrir a janela: ' + E.Message);
end;
end;
class procedure TClassFuncoes.FecharForm(Form : TFormClass);
var
i: integer;
Aba: TcxPageControl;
begin
for i := 0 to FrmPrincipal.cxPageControlPrincipal.PageCount - 1 do
begin
if FrmPrincipal.cxPageControlPrincipal.Pages[i].Controls[0].ClassType = Form then
begin
FrmPrincipal.cxPageControlPrincipal.Pages[i].Destroy;
Exit;
end;
end;
end;
São auto-explicativas. Qualquer dúvida não deixe de perguntar e mais uma vez desculpe pela demora.
Abrçs.
Gostei + 0
10/09/2013
Michel Tank
Gostei + 0
12/09/2013
Marcos Oliveira
Adaptei o código ao meu sistema, porém não está dando certo.
Consegui criar os "Tabs" dentro do AdvOfficePager, porém o form não aparece.
Quando indico que o "parent" do form é o "tab", dá erro "Cannot focus a visible or invisible Window". Já dei um visible no form, mas o erro persiste.
Se eu tirar o "parent" não dá erro, mas o form não aparece.
Você conseguiu fazer funcionar?
Obrigado!
Marcos
Gostei + 0
12/09/2013
Rafael Brendolan
O que pode estar acontecendo é no OnCreate você estar querendo dar Foco em algum campo que ainda não está na tela.
Gostei + 0
12/09/2013
Marcos Oliveira
De qualquer forma obrigado pela atenção e pelo código.
Att,
Marcos
Gostei + 0
12/09/2013
José
Caso contrario basta sinalizar para reabrirmos o tópico ou fique a vontade para abrir um novo tópico.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)