Jump to content


Photo

Creando componentes en Runtime (¿como referenciar lo que no existe?)


  • Please log in to reply
2 replies to this topic

#1 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 13 July 2009 - 05:22 PM

Bueno, aqui esta para terminar este dia de principio de semana:

En mi form principal tengo un panel (pnGraficos) dentro de ese panel voy a crear 1, 2 o tres frames, para eso uso este codigo (por pruebas uso el click de un boton y estoy creando 3):



delphi
  1. procedure TfmInicio.Button1Click(Sender: TObject);
  2. var
  3.   i: integer;
  4. begin
  5.   for I := 1 to 3 do
  6.     begin
  7.       with TfrGrafica.Create(pnGraficos) do
  8.         begin
  9.           Parent := pnGraficos;
  10.             caseof
  11.               1: begin
  12.                   Left := 4;
  13.                   Top := 4;
  14.                   Height := 180;
  15.                   Width := pnGraficos.Width - 6;
  16.                   Name := 'Bascula' + IntToStr(i);
  17.                 end;
  18.               2: begin
  19.                   Left := 4;
  20.                   Top := 181;
  21.                   Width := pnGraficos.Width - 6;
  22.                   Name := 'Bascula' + IntToStr(i);
  23.                 end;
  24.               3: begin
  25.                   Left := 4;
  26.                   Top := 362 ;
  27.                   Width := pnGraficos.Width - 6;
  28.                   Name := 'Bascula' + IntToStr(i);
  29.                 end;
  30.             end;
  31.          
  32.         end;
  33.     end;
  34. end;



Me entendieron?  :o
Dentro del case en la propiedad TOP de cada frame le asigno un valor fijo. En el caso del primero creado pues es obligatorio, pero en los otros dos, por ejemplo el segundo, ¿como hago la referencia a Grafico1.Height? es decir si quisiera hacer algo como esto:



delphi
  1. //Para Grafico2
  2. Top := Grafico1.Height + x;




  • 0

#2 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4483 posts
  • LocationVenezuela

Posted 13 July 2009 - 05:32 PM

Para eso existe FindComponent, algo asi seria mas o menos lo que quieres



delphi
  1. Bascula := FindComponent('Bascula1');
  2. if Bascula is TfrGrafica then
  3. begin
  4.   Top := Bascula.Top + x;
  5. end;


  • 0

#3 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 posts
  • LocationMéxico

Posted 14 July 2009 - 11:24 AM

OK, anotado, pendiente de probar.

Gracias!
  • 0




IP.Board spam blocked by CleanTalk.