Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Definir array en diseño (https://www.clubdelphi.com/foros/showthread.php?t=49439)

julian_ch 21-10-2007 22:48:03

Definir array en diseño
 
Hola, estoy cargando un array de Tedits en diseño y me dice que no existe el identificador, creo que esta bien, a ver si le notais algo raro
Código Delphi [-]
const
  ArrayX: Array[1..94] of TEdit = (edtAX,edtBX,edtCX,edt011X,edt012X,edt013X,edt023X,edt022X)
                                     edt021X,edt024X,edt031X,edt032X,edt060X,edt050X,edt081X,edt082X,
                                     edt083X,edt084X,edt085X,edt141X,edt143X,edt142X,edt17aX,edt15aX,
                                     edt181X,edt190X,edt203X,edt202X,edt201X,edt222X,edt221X,edt212X,
                                     edt224X,edt242X,edt250X,edt290X,edt300X,edt311X,edt313X,edt312X,
                                     edt314X,edt315X,edt316X,edt317X,edt320X,edt331X,edt332X,edt333X,
                                     edt334X,edt335X,edt341X,edt350X,edt360X,edt371X,edt372X,edt342X,
                                     edt410X,edt400X,edt390X,edt380X,edt420X,edt441X,edt442X,edt443X,
                                     edt44coX,edt450X,edt460X,edt540X,edtJ4X,edtJ3X,edtJ2X,edtJ1X,
                                     edt471ClaX,edt471BasX,edt471TipX,edt471ImpX,edt472ClaX,
                                     edt472ImpX,edt472TipX,edt472BasX,edt473ClaX,edt473ImpX,
                                     edt473TipX,edt473BasX,edt474ClaX,edt474ImpX,edt474TipX,
                                     edt474BasX,edt475ClaX,edt475ImpX,edt475TipX,edt475BasX,
                                     edt47TotalX,edt47MPX);

Gracias!!

Ñuño Martínez 22-10-2007 00:15:50

¿Estás intentando meter objetos TEdit en una lista? No es necesario. ¿Para qué quieres hacerlo?

julian_ch 22-10-2007 00:20:26

Es para un formulario que lee unos datos de un fichero y los carga en los edits y cuando se acepta hace lo contrario, lo habia pensado para recoger y guardar todos los datos con un simple bucle.

cHackAll 22-10-2007 01:32:01

Lo primero que se me ocurre es que estas definiendo en tu vector variables que no existen pues todos esos TEdits deben estar dentro de una clase de formulario... talvez debiese funcionar así:

Código Delphi [-]
const
  ArrayX: Array[1..94] of TEdit = (Form1.edtAX,Form1.edtBX,Form1.edtCX...

pero eso tampoco te funcionaría pues no son constantes, son objetos de valor variable. Tales valores variables son 0 y al ser creados toman un valor que apunta a la dirección de memoria que contiene el objeto, yo aconsejo:

Código Delphi [-]
var ArrayX: array [1..94] of TEdit;
 
procedure TForm1.FormCreate(Sender: TObject);
var Index: Cardinal;
begin
 Index := ComponentCount;
 repeat Dec(Index);
  if Components[Index] is TEdit then
   if Components[Index].Tag <> 0 then
    ArrayX[Components[Index].Tag] := (Components[Index] as TEdit);
 until Index = 0;
end;

0j0: cada objeto será definido en tiempo de diseño con un "Tag <> 0" que definirá su índice en el vector (tambien se podría usar TabOrder)

Saludos

julian_ch 22-10-2007 21:46:45

Tienes razon, el fallo es que los componentes no exsten hasta que no se crea el formulario, la solucion que me has dado me funciona pero me carga todos los edits, cuando yo quiero cargar algunos en un array y otros en otro. Lo he solucionado añadiendolos asi
Código Delphi [-]
   arrayX[1]:=edtAX;
   arrayX[2]:=edtBX;
   arrayX[3]:=edtCX;
   arrayX[4]:=edt011X;
   arrayX[5]:=edt012X;
   arrayX[6]:=edt013X;
   arrayX[7]:=edt023X;
   arrayX[8]:=edt022X;
   ......

   arrayY[1]:=edtAY;
   arrayY[2]:=edtBY;
   arrayY[3]:=edtCY;
   arrayY[4]:=edt011Y;
   arrayY[5]:=edt012Y;
   arrayY[6]:=edt013Y;
   arrayY[7]:=edt023Y;
   .......

Gracias de todas formas por todo.


La franja horaria es GMT +2. Ahora son las 21:05:18.

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