Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Sencillo: crear button (https://www.clubdelphi.com/foros/showthread.php?t=38515)

sortilodio 16-12-2006 22:32:16

Sencillo: crear button
 
Hola a todos, no tengo mucha experiencia con Delphi.
Quiero crear un nuevo botón, cuando el formulario se crea(Create).
He hecho lo siguiente, no me da ningún error pero el botón no aparece, me podéis echar una mano, que seguro que para vosotros es sencillo??

Código Delphi [-]
procedure FormCreate(Sender: TObject);
var
  btn : TButton;
begin
  btn := TButton.Create(form1);
  btn.Caption := 'ejemplo';
  btn.Left := 200;
  btn.Height  := 20;
  btn.Width  := 20;
  btn.Top  := 200;
  btn.Visible := True;
end;

GRACIAS

dec 16-12-2006 22:59:32

Hola,

Falta que asignes un "padre" para el botón. El "padre" se hará cargo del botón... en cierto modo, puesto que cuando el "padre" se destruya este destruirá al propio botón... un padre raro... (acabo de ver El resplandor del inconmensurable Stanley Kubrick)... pero vamos al caso... :D

Código Delphi [-]
unit Unit1;

interface

uses
  Forms, Classes, Controls, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    FBotonHolaMundo: TButton;
    procedure SaludaHombre(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  Dialogs;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FBotonHolaMundo := TButton.Create(Self);
  with FBotonHolaMundo do
  begin
    Parent := Self;
    Caption := '¡Hola mundo!';
    SetBounds(10, 10, 75, 25);
    OnClick := SaludaHombre;
  end;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  FBotonHolaMundo.Free;
end;

procedure TForm1.SaludaHombre(Sender: TObject);
begin
  if (Sender is TButton) and
   (TButton(Sender).Caption = '¡Hola mundo!') then
     ShowMessage(TButton(Sender).Caption);
end;

end.

Lepe 16-12-2006 23:16:54

Se ve que dec todavía tiene el canguelo en el cuerpo porque no está centrado.... ;) :p

En realidad el AOwner (parámetro del TButton.Create(...éste...)) es el que se encargará de destruirlo.

El padre (propiedad Parent) hace referencia a donde se situará ese botón, sobre un panel, sobre el form, etc.

Saludos

dec 16-12-2006 23:21:02

Hola,

¿Ves? La edad que no perdona... :D :D :D

Muchas gracias Lepe. :)

sortilodio 17-12-2006 19:17:31

Lo que siempre recuerdo de Resplandor (y hace tiempo que la ví), es la escena de una mujer joven duchándose. Después se acerca el hombre y se convierte en una anciana etc... también recuerdo la niña/s de los pasillos..

No he comentado que estaba utilizando Delphi 3(Sí Delphi 3).
El código no me da ningún error pero tampoco aparece el botón.
Como tengo también Delphi 6 lo voy a instalar y probar, tal vez sea eso..

Gracias

sortilodio 19-12-2006 20:36:37

Hola he probado de nuevo el código en Delphi 6 y me pasa exactamente lo mismo, el botón no aparece.
Se queda el formulario completamente vacío...
Alguien me puede decir ¿POR QUÉ?, estoy buscando información por todos los sitios y ese código tiene que estar bien, no lo entiendo...

GRACIAS

Lepe 19-12-2006 21:20:28

El código de dec funciona (comprobado), el tuyo espero que lo hayas puesto de memoria, porque falta en la cabecera el objeto:
Código Delphi [-]
procedure FormCreate(Sender: TObject);
debe decir:
Código Delphi [-]
procedure TFormXXXX.FormCreate(Sender: TObject);

Saludos

sortilodio 20-12-2006 12:17:51

Gracias por la ayuda..
Encontré el fallo, el problema era (ya he dicho que estoy empezando con Delphi), que en los eventos del formulario no había puesto el OnCcreate a ninguna procedure, entonces el evento OnCreate no se producía nunca..

Gracias

Lepe 20-12-2006 13:32:31

Como decimos en mi tierra: Eso pasa en las mejores familias... jejeje

(no será la última vez que te pase, así que tenlo en mente ;)).

Saludos


La franja horaria es GMT +2. Ahora son las 19:07:41.

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