Adicionar uma Pagina em um TPageControl
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.
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
Curtidas 0
Respostas
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
}
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
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.
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
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 ?
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