Fórum Instânciar um nº de objetos conhecido apenas em execução #186024
03/10/2003
0
Fergos
Curtir tópico
+ 0Posts
03/10/2003
Sousa_thiago
Que numero que vc não conheçe? o index do objeto? ou a quantidade de objetos?
Gostei + 0
03/10/2003
Fergos
Thiago eu não conheço o número de objetos até que eu termine a leitura da estrutura que estou recuperando do arquivo. Sendo assim estou com um pequeno problema, pois tenho que declarar as variaveis de um tipo de objeto e não sei quantos eu terei até terminar a leitura da estrutura.
Obrigado por me responder.
Gostei + 0
03/10/2003
Sousa_thiago
Seja mais específico ... de que objeto vc está falando?
Dependendo do objeto vc pode criar um vetor dinamico da classe desse seu objeto e ir criando a medida que for necessário.
Gostei + 0
03/10/2003
Afarias
-- coloque um Panel cobrindo boa parte do form. no topo do form coloque dois botões e dois edits --
TForm1 = class(TForm)
{...}
private
FObjects: TObjectList;
procedure ClickDosBotoes(Sender: TObject);
{...}
public
{...}
end;
{...}
procedure TForm1.FormCreate(Sender: TObject);
begin
FObjects := TObjectList.Create(True);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
FObjects.Free;
FObjects := nil;
end;
procedure TForm1.ClickDosBotoes(Sender: TObject);
begin
ShowMessage(´Botão ´+ (Sender as TButton).Name + ´clicado!´);
end;
{ o procedimento abaixo cria a quantidade de objetos
definida no Edit1 -- neste exemplo os objetos são TButton }
procedure TForm1.Button1Click(Sender: TObject);
var
I, NumeroObjetos: Integer;
MeuObjeto: TObject;
begin
FObjects.Clear; // limpa a lista de objetos
NumeroObjetos := StrToIntDef(Edit1.Text, 0);
for I := 1 to NumeroObjetos do
begin
MeuObjeto := TButton.Create(Self); // qualquer objeto q quizer
with (MeuObjeto as TButton) do
begin
Name := ´MeuBotao´ + IntToStr(I);
Top := 30 * I;
Left := 30;
Parent := Panel1;
OnClick := ClickDosBotoes;
end;
FObjects.Add(MeuObjeto);
end;
end;
{ o procedimento abaixo recupera um objeto pelo seu índice
-- indicado no Edit2 -- na lista de objetos e executa seu método Click}
procedure TForm1.Button2Click(Sender: TObject);
var
IndiceObjeto: Integer;
begin
IndiceObjeto := StrToIntDef(Edit2.Text, 0) - 1; // a lista é baseada em 0
with (FObjects.Items[IndiceObjeto] as TButton) do
Click;
end;
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)