Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-06-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.119
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Perder el control de un componente creado en tiempo de ejecución

He creado un control en tiempo de ejecución, pero no lo veo sobre el Form.

Al crear un control en tiempo de ejecución, ha de asignársele un dueño y un padre.

El dueño se asigna en el momento de la creación del control. Es el parámetro AOwner que se le pasa al constructor Create. Lo suyo es que el dueño del control sea el propio formulario donde va a estar el control. Así, no hay que preocuparse de destruir el
control cuando se destruya el formulario. Ya lo destruirá el propio formulario tal y como ocurriría si nuestro control se hubiese creado en tiempo de diseño. El padre es de tipo TWinControl. Así que puede ser un formulario, un Panel, un GroupBox, etc. Es el que indica
dónde se va a ver el control.

Para ayudarte a comprender todo esto, podemos probar estas líneas de código que nos podrían servir para hacer matrices de controles que quizás en tiempo de diseño resultaría un poco tedioso de realizar.

Comenzad con un proyecto nuevo.

Copiad todo lo que viene a continuación y pegadlo en Delphi, machacando todo lo que hubiese en la Unit1.

Código Delphi [-]
unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, // para el TButton
ExtCtrls; // para el TPanel

type

  TForm1 = class(TForm)
  procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    FPanel1,
    FPanel2: TPanel;
    procedure ButtonClick(Sender: TObject);
  public
    { Public declarations }
  end;

var
   Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.ButtonClick(Sender: TObject);
begin
  if (Sender As TButton).Parent = FPanel1 then
     (Sender As TButton).Parent:= FPanel2
  else
     (Sender As TButton).Parent:= FPanel1;
end;


procedure TForm1.FormCreate(Sender: TObject);
var
  i, j: Integer;
begin
// Creo el primer Panel
  FPanel1:= TPanel.Create(Form1);
  FPanel1.Parent:= Form1;
  FPanel1.SetBounds(10, 10, 435, 150);
// Creo el segundo panel
  FPanel2:= TPanel.Create(Form1);
  FPanel2.Parent:= Form1;
  FPanel2.SetBounds(10, 170, 435, 150);
// Creo la matriz de botones
  for i:= 0 to 4 do begin
    for j:= 0 to 3 do begin
      with TButton.Create(Form1) do begin
        Parent:= FPanel1;
        SetBounds(10+85*i, 10+35*j, 75, 25);
        Caption:= 'Botón ' + IntToStr(j) + ', ' + IntToStr(i);
        OnClick:= ButtonClick;
      end;
    end;
  end;
end;
end.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 01:30:34.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi