FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
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. 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.- |
#4
|
|||
|
|||
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. |
|
|
|