FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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` espero algien me pueda ayudar con esto. |
#2
|
|||
|
|||
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 |
#3
|
|||
|
|||
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; 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. |
#4
|
|||
|
|||
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:
Aquí tienes un pequeño ejemplo usando un TList:
Espero que con esto te des una idea de como puedes lograr lo que necesitas... Saludos... |
#5
|
|||
|
|||
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; |
|
|
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 |
|