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 14-08-2006
[jesusomarsanche] jesusomarsanche is offline
Miembro Premium
 
Registrado: may 2006
Posts: 11
Poder: 0
jesusomarsanche Va por buen camino
Question como usar el valor de una variable

saludos a todos, no se si sea aqui el foro correcto para esta pregunta pero espero me puedan ayudar;

en visual fox pro puedo formar el nombre de una variable en un string y luego hacer al valor del string y no al string mismo anteponiendo el caracter &
Código:
variable = 'label' +str(i) +'.'
&variable caption = 'cualquier cosa`
pero en delphi no se como hacer esto.
espero algien me pueda ayudar con esto.
Responder Con Cita
  #2  
Antiguo 14-08-2006
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 22
Mick Va por buen camino
Puedes buscar en los foros, ya se ha hablado mucho de ese tema.

De todas formas repetire que delphi es un lenguaje compilado de modo que los nombres de las variables dejan de tener sentido por asi decirlo.

Intentar programar al estilo de foxpro o cualquier lenguaje interpretado en un lenguaje que no es intepretado es un error, solo conseguiras programas que vayan muy lentos.

Lo que intentas hacer, se hace de distinta forma en lenguajes compilados: utilizando arrays u otras tecnicas, pero la tecnica que haya que utilizar dependera de que expliques que es lo que pretendes hacer.

Saludos
Responder Con Cita
  #3  
Antiguo 14-08-2006
[jesusomarsanche] jesusomarsanche is offline
Miembro Premium
 
Registrado: may 2006
Posts: 11
Poder: 0
jesusomarsanche Va por buen camino
creo que no me explique muy bien,
tengo una aplicacion, donde el usuario selecciona un producto el cual tiene de una a n cavidades, lo que hace el programa es darle la obcion al usuario de representar esas cavidades en una fotografia, para despues usar esa informacion en una ayuda visual.
para no tener que crear 200(por decir una cantidad) quiero saber como puedo crear un label en tiempo de ejecucion sin haverlo declarado antes, con un array como mensionaste se solucionaria pero al ponerle
Código:
var i : Integer;
    a,b:array of tlabel;
    lstemp :string;
begin
  for i := 1 to N do begin
    lstemp:='Label'+inttostr(i)
    a[i]:= a[i].Create(lstemp);{marca error de incompatibilidad}
    b[i]:=tlabel.Create(b[i]); {marca violacion de acceso}
    lstemp := lstemp +'.caption';
    lstemp := 'lo que sea' {me iguala lstemp a 'lo que sea' en lugar de
                            asignarselo al labeln}
  end;
eso me simplificaria mucho codigo, a demas de que no seria finito el numero de objetos a manejar por mi aplicacion.
en este momento lo solucione creando 126 label y con un case segun el valor de i trabajo con el label pero estoy limitado a 126 cavidades.
Responder Con Cita
  #4  
Antiguo 14-08-2006
[maeyanes] maeyanes is offline
Capo de los Capos
 
Registrado: may 2003
Ubicación: Campeche, México
Posts: 2.732
Poder: 24
maeyanes Va por buen camino
Puedes usar la estructura TList o TObjectList para lograr lo que deseas.

Sobre el error de incompatibilidad, este se da por la forma como quieres crear el objeto TLabel, lo correcto sería:

Código Delphi [-]
a[i] := TLabel.Create(nil);

Aquí tienes un pequeño ejemplo usando un TList:

Código Delphi [-]
procedure TForm1.CrearCavidades(ALabelList: TList; NoCavs: Integer);
var
  I: Integer;
  ALabel: TLabel;

begin
  for I := 1 to NoCavs do
  begin
    ALabel := TLabel.Create(Self);
    ALabel.Caption := Format('Cavidad %d', [i]);
    ALabel.Parent := Self; // La etiqueta se muestra en la forma
    // Aquí faltaría código para posicionar las diferentes etiquetas que se vayan creando.
    ALabelList.Add(ALabel)
  end
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FLabelList := TList.Create;
  CrearCavidades(FLabelList, 5) // Crea 5 etiquetas y las guarda en FLabelList
end;

Espero que con esto te des una idea de como puedes lograr lo que necesitas...


Saludos...
Responder Con Cita
  #5  
Antiguo 17-08-2006
[jesusomarsanche] jesusomarsanche is offline
Miembro Premium
 
Registrado: may 2006
Posts: 11
Poder: 0
jesusomarsanche Va por buen camino
Thumbs up

Gracias a todos.
en el foro encontre algo que me soluciono el problema,


solo tuve que agregarle, para que me los borrara
Código:
  
procedure poscavidades.ocultalabels;
var
      i   : integer;
begin
    i:= 26; {los componentes anteriores son del formulario}
    while i < poscavidades.componentcount do begin
        if uppercase(leftstr(components[i].Name,5))='LABEL' then begin
            poscavidades.Components[i].Destroy;
        end else begin
            inc(i);
        end;
    end
end;
espero les sirva
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
el valor de una variable como nombre de un boton carlosmoralesm OOP 5 26-05-2004 06:57:53
Como puede estar accesible a todos los procedimientos el valor de una variable? Ricsato OOP 3 16-10-2003 00:37:07
Cómo usar una variable de systema en sql? dazpiroz Firebird e Interbase 3 23-06-2003 09:13:43
como asignar un valor a una variable juan Varios 6 18-06-2003 01:26:19


La franja horaria es GMT +2. Ahora son las 20:10:48.


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