Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pregunta de principiante (https://www.clubdelphi.com/foros/showthread.php?t=4523)

voci 18-10-2003 15:26:27

Pregunta de principiante
 
Hola, quería preguntaros si en delphi existe una opción, que no encuentro por ningún lado y se que en VB por ejemplo si que la hay.

La cuestión es darle a varios controles el mismo nombre para luego poder llamarlos mediante una variable de esta forma o alguna parecida:

for contador:=1 to 4 do
etiqueta1[contador]:=

Espero haberme explicado bien, gracias.

Rudi 18-10-2003 17:37:14

Hola.

eso creo que lo llaman arreglo de componentes, en delphi eso no existe, o por lo menos nunca lo he visto. por otro lado si te es necesario lo puedes hacer con arreglos dinamicos.

ArregloEtiquetas : array of TLabel;
ArregloEdit : array of TEdit:
.
.
.
lo unico es que tienes que cargarlos tú, tal vez en el OnCreate.
for i:=0 to componetcount-1 do
if component[i] is tlabel then
{lo metes en el arreglo}

eso es lo que se me ocurre de momento, tal vez pudieras hasta crear una forma base y añadirle esos arreglos de componentes como propiedad para facilitar y limpiar el codigo haciendo que desciendan de ella, no se, eso seria cosa tuya.

espero que te sirva.

Rudi 18-10-2003 18:00:18

Hola otra vez.

hice una pequeña prueba y esto funciona:
Código:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TArregloEtiquetas=Array of TLabel;
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    FArregloEtiquetas: Tarregloetiquetas;
//    procedure SetArregloEtiquetas(const Value: array of TLabel);
    { Private declarations }
  public
    property ArregloEtiquetas:TArregloetiquetas read FArregloEtiquetas;{ Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

{procedure TForm1.SetArregloEtiquetas(const Value: array of TLabel);
begin
  FArregloEtiquetas := Value;
end;}

procedure TForm1.FormCreate(Sender: TObject);
Var i: integer;
  Procedure AgregaEtiqueta(J : Integer);
  Begin
    SetLength(FArregloEtiquetas,high(FArregloEtiquetas)+2);
    FArregloEtiquetas[High(FArregloetiquetas)] := components[J] as TLabel;
  End;
begin
for i := 0  to ComponentCount-1 do
  if Components[i] is TLabel then
    AgregaEtiqueta(i);
end;

procedure TForm1.Button1Click(Sender: TObject);
Var I : Integer;
begin
  Edit1.Text := inttostr(high(Farregloetiquetas)+1);
  for I := low (Farregloetiquetas) to high(farregloetiquetas) do
    farregloetiquetas[i].Caption := farregloetiquetas[i].Caption +' '+ inttostr(i);
end;

end.

El boton lo que hace es colocar el indice del arreglo junto al nombre de la etiqueta y colocar en un edit la cantidad de etiquetas. lo unico que faltaría seria limpiar y liberar el arreglo en el ondestroy pero cerré delphi así que te lo dejo a tí.

lo que haces es heredar de esta forma y asi cada una de tus formas tendran un arreglo de componentes propio y sin mas código, puedes añadir el tipo de componente que necesites.

suerte.-

voci 18-10-2003 18:08:30

Gracias Rudi, pensé que durante el proceso de creación de los formularios, tal vez los controles tuvieran alguna propiedad donde al darles el mismo nombre pudieras ir dandoles valores consecutivos para luego poder llamarlos mediante esa variable.

Saludos.


La franja horaria es GMT +2. Ahora son las 07:29:44.

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