Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-04-2010
andresorozco86 andresorozco86 is offline
Miembro
 
Registrado: abr 2010
Posts: 23
Poder: 0
andresorozco86 Va por buen camino
Smile crear y borrar edits en ejecucion

Buenas Tardes:

Estoy trabajando con delphi y no se como es el manejo de crear y borrar por ejemplo edits pero en tiempo de ejecucion. Osea por ejemplo que yo tengo un boton donde le doy click y me cree 2 edit y luego en otro boton le doy click y me los borra. Alguien me podria ayudar?

Última edición por andresorozco86 fecha: 26-04-2010 a las 22:23:33.
Responder Con Cita
  #2  
Antiguo 26-04-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 915
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Podria ser asi...

Código Delphi [-]
var
  Form1: TForm1;
  Edits:Array[0..4] Of TEdit;  {Vector de Tipo TEdit}

implementation
....

procedure TForm1.Button4Click(Sender: TObject);
Var
     i, iTop:Integer;
begin
     iTop:=9;
     {Crea los TEdit...} 
     For i:=Low(Edits) to High(Edits) Do
     Begin
          Edits[i]      :=TEdit.Create(Self);
          Edits[i].Parent:=Self;
          Edits[i].Left :=18;
          Edits[i].Top  :=iTop;
          Edits[i].Width:=120;
          Edits[i].Text :=Format('Numero %d',[i]);
          Inc(iTop, Edits[i].Height+2);
     End;
end;

procedure TForm1.Button5Click(Sender: TObject);
Var
     i, iTop:Integer;
begin
     {Elimina los TEdit...}
     For i:=Low(Edits) to High(Edits) Do
          If Edits[i]<>NIL Then
             Edits[i].Free;

end;

Saludos

Última edición por cloayza fecha: 26-04-2010 a las 23:25:22.
Responder Con Cita
  #3  
Antiguo 26-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por andresorozco86 Ver Mensaje
Buenas Tardes:

Estoy trabajando con delphi y no se como es el manejo de crear y borrar por ejemplo edits pero en tiempo de ejecucion. Osea por ejemplo que yo tengo un boton donde le doy click y me cree 2 edit y luego en otro boton le doy click y me los borra. Alguien me podria ayudar?
Bueno podrías declarar dos variables(pueden ser globales) de tipo TEdit de esta forma:
Código Delphi [-]
...
var
  Form1: TForm1;
 e1,e2:TEdit;//<--aqui declaro dos variables globales de tipo TEdit
implementation
....
Ahora en tu boton que deseas crear pones ésto:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
 if not Assigned(e1) and not Assigned(e2) then //si no han sido creados anteriormente
  begin
    e1:=TEdit.Create(Application);//creo el edit 1
    e1.Parent:=Form1;// le asigno un parent al edit 1
    e1.Top:=100;//le digo a  que distacia de la parte superior del form se debe ubicar
    e1.Left:=100;//le digo a que distacia de la parte izquierda del form se debe ubicar

    e2:=TEdit.Create(Application); /// Idem a lo anterior pero para el edit 2
    e2.Parent:=Form1;
    e2.Top:=100;
    e2.Left:=200;
  end;
end;
Y en el boton de eliminar pues sencillamente lo destruimos de ésta manera:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
begin
 FreeAndNil(e1);//destruyo el edit 1
 FreeAndNil(e2);//destruyo el edit 2
end;
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 26-04-2010 a las 23:01:36.
Responder Con Cita
  #4  
Antiguo 26-04-2010
andresorozco86 andresorozco86 is offline
Miembro
 
Registrado: abr 2010
Posts: 23
Poder: 0
andresorozco86 Va por buen camino
Ambas soluciones funcionan bien, pero ahora tengo otra pregunta como se haria si la cantidad de edit a crear pudiera ser cualquier numero que el usuario escribiera en otro edit.
Responder Con Cita
  #5  
Antiguo 26-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por andresorozco86 Ver Mensaje
Ambas soluciones funcionan bien, pero ahora tengo otra pregunta como se haria si la cantidad de edit a crear pudiera ser cualquier numero que el usuario escribiera en otro edit.
En ese caso sería conveniente utilizar un vector muy parecido a lo propuesto por cloayza pero dicho vector deberá ser dinámico.
Otra opción es tambien utilizar una lista de componentes que puede ser del tipo TList ó TObjectList ó mejor TComponentList..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #6  
Antiguo 27-04-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 915
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Cita:
Empezado por andresorozco86 Ver Mensaje
Ambas soluciones funcionan bien, pero ahora tengo otra pregunta como se haria si la cantidad de edit a crear pudiera ser cualquier numero que el usuario escribiera en otro edit.
Para eso hay una variante...

Código Delphi [-]
var
  Form1: TForm1;
  Edits:Array Of TEdit;  {Vector de Tipo TEdit}
  {No hay que definir el tamano del array...}

implementation
....

procedure TForm1.Button4Click(Sender: TObject);
Var
     i, iTop:Integer;
begin
     {EditCuantos.Text->Deberia contener el numero que deseas crear. Y en base a ese valor se dimensiona el array Edits...}

     SetLength(Edits,StrToInt(EditCuantos.Text);

     iTop:=9;
     {Crea los TEdit...} 
     For i:=Low(Edits) to High(Edits) Do
     Begin
          Edits[i]      :=TEdit.Create(Self);
          Edits[i].Parent:=Self;
          Edits[i].Left :=18;
          Edits[i].Top  :=iTop;
          Edits[i].Width:=120;
          Edits[i].Text :=Format('Numero %d',[i]);
          Inc(iTop, Edits[i].Height+2);
     End;
end;

procedure TForm1.Button5Click(Sender: TObject);
Var
     i, iTop:Integer;
begin
     {Elimina los TEdit...}
     For i:=Low(Edits) to High(Edits) Do
          If Edits[i]<>NIL Then
             Edits[i].Free;

end;

Saludos
Responder Con Cita
  #7  
Antiguo 27-04-2010
andresorozco86 andresorozco86 is offline
Miembro
 
Registrado: abr 2010
Posts: 23
Poder: 0
andresorozco86 Va por buen camino
Muchas Gracias Por La Ayuda, Ya Me Funciona Bien
Responder Con Cita
  #8  
Antiguo 27-04-2010
andresorozco86 andresorozco86 is offline
Miembro
 
Registrado: abr 2010
Posts: 23
Poder: 0
andresorozco86 Va por buen camino
Unhappy Otra Pregunta

bien ahora me surgio otra duda, como hago para asignarle un evento a un edit que fue crado dinamicamente
Responder Con Cita
  #9  
Antiguo 27-04-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por andresorozco86 Ver Mensaje
bien ahora me surgio otra duda, como hago para asignarle un evento a un edit que fue crado dinamicamente
Sencillamente debes crearte un Procedimiento que tenga los mismos parametros que tiene el evento que quires asignar, por ejemplo:
En evento OnKeyDown de un edit tiene los siguientes parámetros
Código Delphi [-]
procedure Edit1KeyDown(Sender: TObject; var Key: Word;Shift:TShiftState);
Entonces debo hacerme un procedimiento que tenga los mismos parámetros:
Código Delphi [-]
Procedure MyKeyDown(objeto: TObject; var tecla: Word;Shift:TShiftState);
begin

{código de mi procedimiento}
...
...
end;
Finalmente para asignarselo al evento OnKeyDown de algun edit tan solo se hace lo siguiente:
Código Delphi [-]
{Hagamos de cuenta que tengo un edit llamado e1}
e1.OnKeyDown:=MyKeyDown;//Hago que el evento OnKeyDown del edit apunte a mi procedure que yo me hize
.
Espero se haya entendido..
Saluydos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #10  
Antiguo 28-04-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 915
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Para complementar el ejemplo...
Código Delphi [-]
 
private
    { Private declarations }
    Procedure EditChange(Sender:TObject); //Declaras los procedimientos
    Procedure EditClick(Sender:TObject);
  
....

var
  Form1: TForm1;
  Edits:Array Of TEdit;  {Vector de Tipo TEdit}
  {No hay que definir el tamano del array...}

implementation
....

{Evento OnChange}
Procedure TForm1.EditChange(Sender:TObject);
Begin
       label1.caption:='OnChange...'+TEdit(Sender).Text;
End;

{Evento OnClick...}
Procedure TForm1.EditClick(Sender:TObject);
Begin
       label1.caption:='Click...'+TEdit(Sender).Name;
End;

procedure TForm1.Button4Click(Sender: TObject);
Var
     i, iTop:Integer;
begin
     {EditCuantos.Text->Deberia contener el numero que deseas crear. Y en base a ese valor se dimensiona el array Edits...}

     SetLength(Edits,StrToInt(EditCuantos.Text);

     iTop:=9;
     {Crea los TEdit...} 
     For i:=Low(Edits) to High(Edits) Do
     Begin
          Edits[i]      :=TEdit.Create(Self);
          Edits[i].Parent:=Self;
          Edits[i].Left :=18;
          Edits[i].Top  :=iTop;
          Edits[i].Width:=120;
          Edits[i].Text :=Format('Numero %d',[i]);
          Edits[i].OnChange:=EditChange;
          Edits[i].OnClick    :=EditClick;
          Inc(iTop, Edits[i].Height+2);
     End;
end;

procedure TForm1.Button5Click(Sender: TObject);
Var
     i, iTop:Integer;
begin
     {Elimina los TEdit...}
     For i:=Low(Edits) to High(Edits) Do
          If Edits[i]<>NIL Then
             Edits[i].Free;

end;

Saludos...
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
borrar campo TrxMemorydata en ejecucion nugame Varios 4 13-11-2009 16:25:08
borrar o liberar componente TBITBTN en tiempo de ejecucion Lupita Varios 4 19-07-2008 00:11:44
Borrar los Datasource Creados en tiempo de ejecucion Nieto OOP 2 29-11-2007 22:12:19
Crear utileria Borrar cadenas registro cesar_picazo Varios 6 07-10-2007 16:17:38
Crear y Borrar componentes en tiempo de ejecución jzginez OOP 6 25-11-2005 16:04:55


La franja horaria es GMT +2. Ahora son las 01:54:50.


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