Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como puedo borrar 100 edit (https://www.clubdelphi.com/foros/showthread.php?t=66825)

bothy 14-03-2010 02:06:54

como puedo borrar 100 edit
 
como puedo borrar 100 edit

e puesto este codigo en un Button para limpiar


Código Delphi [-]
var i :integer;
begin
for i := 0 to ComponentCount -1 do
if Components[i] is TEdit then
begin
TEdit(Components[i]).Clear ;
     end;
end;


no me marca ningun error pero tampoco me limpia los edit..

Casimiro Notevi 14-03-2010 02:18:20

Prueba con FindComponent, algo así (lo he hecho de memoria, revísalo):
Suponiendo que los TEdit se llaman edit1, edit2, edit3, etc.

Código:

var
  i:integer;
  cEdit : String;
  UnEdit : TEdit;
begin
  for i:=1 to 100 do
  begin
    cEdit :='Edit'+IntToStr(i);
    UnEdit := Findcomponent(cEdit);
    if Assigned(UnEdit) then
      TEdit(UnEdit).Text := '';
  end;
end;


bothy 14-03-2010 02:36:12

casimiro noce porque me da un erro en esta linea

Código Delphi [-]
  UnEdit := Findcomponent(cEdit);

bothy 14-03-2010 02:46:33

El error se encontraba en la declaracion de la variable UnEdit : Tcomponent;


Código Delphi [-]
 var i:integer;
  cEdit : String;
  UnEdit :   Tcomponent;

begin
 for i:=1 to 6 do
  begin
    cEdit :='Edit'+IntToStr(i);
    UnEdit :=  Findcomponent(cEdit);

    if Assigned(UnEdit) then
      TEdit(UnEdit).Text  := '';
  end;
end;

gracias casimiro me acabas de ayudar con 100 edit1.clear :D

BrunoBsso 14-03-2010 02:53:57

Código Delphi [-]
for I:=0 to ControlCount-1 do begin //o hasta el número que quieras
  if (Controls[i] is TEdit) then
    TEdit(Controls[i]).Text:='';
end;
Espero que te sirva.
Saludos!

bothy 14-03-2010 03:07:57

gracias BrunoBsso es un poco menos de codigo..
tambien me funciono..:D

bothy 14-03-2010 04:25:27

Otra Pregunta y como seria para limpiar label..?

Caral 14-03-2010 13:08:11

Hola
Se usa esencialmente lo mismo, solo cambia el componente:
Código Delphi [-]
var
  i: Integer;
  comp: TComponent;
begin
   for i := 1 to 100 do begin // 100 label
   comp := FindComponent('Label' + IntToStr(i)); 
   TLabel(comp).Text:= ' ';
  end;
Saludos

bothy 15-03-2010 19:54:18

Muchas gracias caral .....

MAXIUM 14-07-2010 02:38:46

¿Y si los Edit están en otro Forma?

¿¿¿ Form3.Edit3.Text ???

ecfisa 14-07-2010 03:08:09

Cita:

Empezado por MAXIUM (Mensaje 370295)
¿Y si los Edit están en otro Forma?

¿¿¿ Form3.Edit3.Text ???

Hola MAXIUM.

Código:

procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
begin
  with Form3 do
  for i:= 0 to ControlCount -1  do
    if Controls[i].ClassType = TEdit then
      TEdit(Controls[i]).Text:= '';
end;

Por supuesto debes incluir la Unit que declara a Form3.


Saludos.

MAXIUM 14-07-2010 03:21:26

Hola, gracias, pero que pasa si tengo un Edit1.Text y un AlignEdit1.Text, el segundo descendiente del primero, osea también es un TEdit y quiero modificar solo los AlignEdit dejando intactos los primeros.

Funcionara?!?!
Código Delphi [-]
TEdit(Form4.FindComponent('AlignEdit'+IntToStr(Indice))).Text:= 'Hola'

ecfisa 14-07-2010 03:26:29

Hola de nuevo MAXIUM.

Si usas la forma:
Código:

  if Controls[i] is TEdit then
    ...

No podés hacer la distinción ya que te dara verdadero tanto para la clase base como para sus descendientes.

Es por eso que usé:
Código:

  if Controls[i].ClassType = TEdit then
  ...

Para lo que deseas deberías usar:
Código:

  if Controls[i].ClassType = TAlignEdit then
  ...

Saludos.

MAXIUM 14-07-2010 03:28:21

Funcionara?!?!
Código Delphi [-]
TEdit(Form4.FindComponent('AlignEdit'+IntToStr(Indice))).Text:= 'Hola'

ecfisa 14-07-2010 03:33:11

Sin duda. :)


La franja horaria es GMT +2. Ahora son las 16:06:07.

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