Fórum Melhorar Código de criar componentesss emtempo de Execução #418060
05/06/2012
0
var times : array[0..11] of integer; i, qt, n, total : integer; achou : boolean; label2: TLabel; label3: TLabel; label4: TLabel; label5: TLabel; label6: TLabel; begin Randomize; //ShowMessage(No iníco); label2 := TLabel.Create(Self); //Da o valor especificado a variavel do tipo TButton label3 := TLabel.Create(Self); label4 := TLabel.Create(Self); label5 := TLabel.Create(Self); label6 := TLabel.Create(Self); //ShowMessage(Create Certo); label2.Parent := ScrollBoxMostra; //O botão aparece no formulario,você pode colocá-lo dentro de //qualquer outro componente colocando o nome dele,exemplo: panel1 label3.Parent := ScrollBoxMostra; label4.Parent := ScrollBoxMostra; label5.Parent := ScrollBoxMostra; label6.Parent := ScrollBoxMostra; //ShowMessage(Parent certo); label2.Name:=label2; //Dá um nome ao botão label3.Name:=label3; label4.Name:=label4; label5.Name:=label5; label6.Name:=label6; //ShowMessage(Name certo); label2.Left:=16; //Especifica a posição X do botão label2.Left:=16; label3.Left:=16; label4.Left:=16; label5.Left:=16; label6.Left:=16; //ShowMessage(Left certo); label2.Top:=25 + Label1.Top; //Especifica a posição Y do botão label3.Top:=25 + Label2.Top; label4.Top:=25 + Label3.Top; label5.Top:=25 + Label4.Top; label6.Top:=25 + Label5.Top; //ShowMessage(Top certo); label2.Height:=19; //Define a altura do botão label3.Height:=19; label4.Height:=19; label5.Height:=19; label6.Height:=19; label2.AutoSize:=True; //Define a largura do botão label3.AutoSize:=True; label4.AutoSize:=True; label5.AutoSize:=True; label6.AutoSize:=True; ...
O código acima está funcionando legal...
Agora eu gostaria de melhora-lo! ESTE código com um pouco de observação está estático no SENTIDO DOS COMPONENTESS CRIADO POR MIM em tempo de EXECUÇÃO!
Eu gostaria de criar quantos componentes eu QUISESSE em Tempo de execução ???
Tipo um for i := 0 to VariavelDinamic
begin
label[i] := Tlabel.create;
end;
EU SEI que o código acima não va func MAS é só para expressar o que u gostaria de fazer CRIAR quantos componentes eu quisesse
Grato desde já pela ajuda
O código acimaestá funcionando legal...
Agora eu gostaria de melhora-lo! ESTE código com um pouco de observação está estático no SENTIDO DOS COMPONENTESS CRIADO POR MIM em tempo de EXECUÇÃO!
Eu gostaria de criar quantos componentes eu QUISESSE em Tempo de execução ???
Tipo um for i := 0 to VariavelDinamic
begin
label[i] := Tlabel.create;
end;
EU SEI que o código acima não va func MAS é só para expressar o que u gostaria de fazer CRIAR quantos componentes eu quisesse
Grato desde já pela ajuda
Ewerton Rodrigues
Curtir tópico
+ 0Posts
05/06/2012
Marco Salles
var
times : array[0..11] of integer;
i, qt, n, total : integer;
achou : boolean;
Mylabel:Tlabel;
begin
for I := 0 to VariavelDinamic do
begin
//ShowMessage(No iníco);
Mylabel := TLabel.Create(Self); //Da o valor especificado a variavel do tipo TButton
//ShowMessage(Create Certo);
Mylabel.Parent := self; //O botão aparece no formulario,você pode colocá-lo dentro de
//qualquer outro componente colocando o nome dele,exemplo: panel1
//ShowMessage(Parent certo);
Mylabel.Name:=Mylabel +inttostr(i); //Dá um nome ao botão
//ShowMessage(Name certo);
Mylabel.Left:=16; //Especifica a posição X do botão
//ShowMessage(Left certo);
Mylabel.Top:=25 + (i+1)*Mylabel.Height; //Especifica a posição Y do botão
//ShowMessage(Top certo);
Mylabel.Height:=19; //Define a altura do botão
Mylabel.AutoSize:=True; //Define a largura do botão
end;
end;
Gostei + 0
05/06/2012
Ewerton Rodrigues
var
times : array[0..11] of integer;
i, qt, n, total : integer;
achou : boolean;
Mylabel:Tlabel;
begin
for I := 0 to VariavelDinamic do
begin
//ShowMessage(No iníco);
Mylabel := TLabel.Create(Self); //Da o valor especificado a variavel do tipo TButton
//ShowMessage(Create Certo);
Mylabel.Parent := self; //O botão aparece no formulario,você pode colocá-lo dentro de
//qualquer outro componente colocando o nome dele,exemplo: panel1
//ShowMessage(Parent certo);
Mylabel.Name:=Mylabel +inttostr(i); //Dá um nome ao botão
//ShowMessage(Name certo);
Mylabel.Left:=16; //Especifica a posição X do botão
//ShowMessage(Left certo);
Mylabel.Top:=25 + (i+1)*Mylabel.Height; //Especifica a posição Y do botão
//ShowMessage(Top certo);
Mylabel.Height:=19; //Define a altura do botão
Mylabel.AutoSize:=True; //Define a largura do botão
end;
end;
Vou testar o Código aqui. Eu não pensei que com um for daria, eu pensei que seria algo mais diferente
Mas vou testar agora e respondo
Gostei + 0
05/06/2012
Ewerton Rodrigues
var
times : array of integer;
i, qt, n, total : integer;
achou : boolean;
labels: TLabel;
label2: TLabel;
label3: TLabel;
label4: TLabel;
label5: TLabel;
label6: TLabel;
MudaPosition: integer;
begin
Randomize;
SetLength(times, QuantTime);
MudaPosition := 224;
for i := (low(times) + 2) to ((Length(times) -1) div 2) + 1 do
begin
labels := TLabel.Create(Self); //Da o valor especificado a variavel do tipo TButton
labels.Parent := ScrollBoxMostra; //O botão aparece no formulario,você pode colocá-lo dentro de
//qualquer outro componente colocando o nome dele,exemplo: panel1
labels.Left:=16; //Especifica a posição X do botão
labels.Top:=25 + MudaPosition; //Especifica a posição Y do botão
labels.Height:=19; //Define a altura do botão
labels.AutoSize:=True; //Define a largura do botão
labels.Caption := True;
labels.Name:= label + inttostr(i); // Coloca um Nome na Label
MudaPosition := MudaPosition + 25;
Memo1.Lines.Add(labels.Name + #13);
end;Este código Até Funcionou Criou os COMPONENTES
MAS NÃO ESTÁ SENDO ACESSÍVEL ??? Não entendi
Pois abaixo deste código eu tento acessa-lo e não dá
Código de acesso abaixo e é no mesmo evento!
...
for i := 0 to total do
begin
if i = 0 then
begin
label1.Caption := Time + inttostr(times[i]) + x Time + inttostr(times[total+i+1]);
ShowMessage(Label1.Name);
ShowMessage(Label1.Caption);
end;
if i = 1 then
begin
label2.Caption := Time + inttostr(times[i]) + x Time + inttostr(times[total+i+1]);
ShowMessage(label2.Name);
ShowMessage(label2.Caption);
end;
if i = 2 then
begin
label3.Caption := Time + inttostr(times[i]) + x Time + inttostr(times[total+i+1]);
end;
if i = 3 then
begin
label4.Caption := Time + inttostr(times[i]) + x Time + inttostr(times[total+i+1]);
end;
if i = 4 then
begin
label5.Caption := Time + inttostr(times[i]) + x Time + inttostr(times[total+i+1]);
end;
if i = 5 then
begin
label6.Caption := Time + inttostr(times[i]) + x Time + inttostr(times[total+i+1]);
end;
Perde a referencia do NOME e do CAPTION que como pode ser percebido no código acima deste
E como pode ser visto também eu tive de colocar o nome das variáveis lá no VAR (declarei-as) [Pois sem isto não poderia colocar na segunda parte do código isto label2.name; ect]
Não sei o que acontece MAS se alguém poder ajudar agradeço desde já
Gostei + 0
05/06/2012
Marco Salles
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)