Adicionar uma Pagina em um TPageControl

Delphi

16/02/2004

Ola a todos.

Como que eu consigo criar uma pagina em um TPageControl via programacao e dentro desta colocar bottom, edit, e memo.

Alguem saberia como fazer isto, e dentro destes componentes ainda preciso associar algumas procedures, tudo via programacao.

Agradeço a ajuda de todos, antecipadamente.


Icheuk

Icheuk

Curtidas 0

Respostas

Qmd

Qmd

16/02/2004

Entao... veja o codigo abaixo:

procedure TForm1.CriaTab(Nome : String);
var
TempTab : TTabSheet;
FNome : String;
TempComp : TComponent;
begin
FNome := StringReplace(Nome,´ ´,´_´,[rfReplaceAll]); // troca espacos por _

{verifica se ja existe um componente com o nome especificado
o ideal seria procurar por cada componente (button edit, memo etc) mas sample eh sample hehehe.... }
TempComp := FindComponent(FNome); // verifica se ja existe um componente com o nome especificado
if TempComp <> nil then
begin
MessageDlg(´Já existe um Componente ´+ TempComp.ClassName +´ com esse nome!´, mtError,[mbok],0);
Exit;
end;

TempTab := TTabSheet.Create(Self); // inicia tabsheet

with TempTab do
begin
PageControl := PageControl1; // inclui a tabsheet no page control
Caption := Nome; // define o caption da tabsheet
Name := FNome; // eh util caso vc queira destruir esse componente posteriormente... podera procurar pelo nome...

with TEdit.Create(Self) do // inicia o Edit
begin
Parent := TempTab; // coloca o edit dentro do tabsheet
Name := ´ED´ + FNome; // define o nome do Edit
SetBounds(32,16,190,21); // define a posicao e tamanho do edit
end;

with TMemo.Create(Self) do // inicia o memo
begin
Parent := TempTab; // coloca o memo dentro do tabsheet
Name := ´MM´ + FNome; // define o nome do memo
SetBounds(32,48,190,89); // define a posicao e tamanho do memo
end;

with TButton.Create(Self) do // inicia o botao
begin
Parent := TempTab; // coloca o botao dentro do tabsheet
Name := ´BT´ + FNome; // define o nome do botao
Caption := ´Show!´; // define o caption do botao
SetBounds(88,144,75,25); // define a posicao e tamanho do botao
Onclick := BotaoClick; // define o evento onClick do botao com um procedure existente
end;
PageControl1.ActivePageIndex := PageControl1.PageCount -1; // coloca a tabsheet criada em foco
end;
end;

procedure TForm1.BotaoClick(Sender: TObject); // procedure que sera vinculada ao evento onclick do botao criado
var
FNome : String;
begin
FNome := Copy(TComponent(Sender).Name,3,Length(TComponent(Sender).Name)); // pega parte do nome do botao clicado
//exibe o conteudo do edit/memo acessando os componentes a partir do nome extraido do botao clicado:
MessageDlg( ´Conteudo do Edit : ´ + #13+ 10 + TEdit(FindComponent(´ED´+FNome)).Text +
10+13 + 10+13 +
´Conteudo do Memo : ´ + 13+ 10 + TMemo(FindComponent(´MM´+FNome)).Text, mtInformation,[mbok],0);
end;


//=============================================




{ para testar esse codigo voce pode colocar um edit e um botao num form e no evento onclick do botao coloque:

procedure TForm1.Button1Click(Sender: TObject);
begin
if Trim(Edit1.Text) = ´´ then
begin
MessageDlg(´Informe o nome do componente!´, mtWarning, [mbOK], 0);
Edit1.SetFocus;
Exit;
end;
CriaTab(Edit1.text);
end;



Como o codigo e extenso disponibilizei o sample completo no endereco:

http://usercontrol.sourceforge.net/OtherSamples/qmd_tabsheet_demo.zip



T++

QmD
qmd@onda.com.br
http://usercontrol.sourceforge.net
icq: 15630894
Canal #Delphi irc.brasnet.org

}


GOSTEI 0
Icheuk

Icheuk

16/02/2004

Valeu Qmd.

Isto nao foi uma dica, foi uma aula, cara voce me ajudou muito mesmo estas informações que voce passou vao me ajudar bastante e acredito eu que vao ajudar muitas outras pessoas.

Obrigado mesmo, e se precisar de alguma coisa que eu possa ajudar, me mande um email, ok.

Valeu mesmo.


GOSTEI 0
Icheuk

Icheuk

16/02/2004

Ola Qmd tudo bem, espero nao estar atrapalhando, mas hoje implementando a atividade com as dicas que passou me deparei com outro problema que nao consegui resolver.

Eu precisso ver e atribuir valores para um componente que criei dinamicamente e nao esta funcionando esta dando access violation.

TComboBox(FindComponent(´cmbUses´)).Items.Clear;

TComboBox(FindComponent(´cmbUses´)).Items.Add(´a´);

Desta maneira esta certo ?


GOSTEI 0
POSTAR