FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
hacer una funcion?
Hola a todos.
Mi problema es simple: para crear un Tlisbox en tiempo de ejecución, con el proposito de que me sirva como lista temporal hago: Lista:=Tlistbox.Create(Self); Lista.Parent:=Self Lista.Visible:=False; Alguien puede darme una mano diciendome cómo hago una función para crear el Control lista? La lista temporal lo utilizo como equivalente a un array temporal que creaba en clipper. (sin conocer su longitud exacta). Alguien tiene opiniones de que otra cosa puedo usar? Gracias anticipadas Salu2. |
#2
|
|||
|
|||
una funcion para crear Tlistbox??
No se si te entiendo. Por ejemplo una funcion que crea tantos listbox como un numero que tu le pases? Código:
procedure Tform1.crearlista(num:integer); var n:integer; lista:Tlistbox; begin for n := 0 to num -1 do begin lista := Tlistbox.create(self); lista.parent := self; lista.left := k; k := k +150; end; end; //lo llamarias asi al procedimiento procedure TForm1.Button1Click(Sender: TObject); begin crearlista(3); end; Saludos |
#3
|
|||
|
|||
por cierto k es una variable general integer.
otra cose, puedes crea una array of string; var g:array of string; begin SetLength(g,2); g[0] := 'hola'; g[1] := 'adios'; end; que quieres modificar la longitud de la array pues haces setlength(g,3); g[0] := 'hola'; g[1] := 'adios'; g[2] := 'hola de nuevo'; Otra cosa que se me olvidadba tambien puedes hacer algo como var n:integer; begin for n:= 0 to LO QUE SEA do begin setlength(g,n+1); g[n] := EL VALOR QUE LE ASIGNES; end; end; Suerte Última edición por Descendents fecha: 20-12-2003 a las 02:29:39. |
#4
|
|||
|
|||
Gracias Descendents, la funcion para crear listboxs funciona correctamente, pero cómo me refiero a ellos mediante codigo. ¿que nombre tienen?
Es decir yo necesito que la variable XYZ sea un Tlistbox que se cree en tiempo de ejecución, la variable PQR, tambien... Por ello la necesidad de hacer una función De todas maneras tu ayuda sobre los arrays y el excelente !! Setlength() me soluciona muchísimo mi problema. Gracias y un saludo |
#5
|
|||
|
|||
Lo más seguro es que se digan listbox1, listbox2,listbox3 etc..., como les llama delphi por defecto cunado los pones en un form y no les cambias el nombre.
Pero de todas formas, puedes añadir una linia a la función que ponga. lista.name := y el nombre; Saludos |
#6
|
||||
|
||||
Cita:
Para que te des una idea, los TListBox internamente utilizan una clase llamada TListBoxStrings que es heredada de un TStrings, para almacenar el contenido de la lista. Al utilizar directamente este tipo de dato, evitarás crear una ventana innecesaria en el caso de que siempre este oculta. Te recomiendo leer la ayuda de estas clases, la documentación es muy completa. Y por otro lado, te recomiendo no pensar tu desarrollo a modo Clipper, se que esto es algo difícil si es tu primer paso en Delphi, pero personalmente creo que es un error querer programar en un lenguaje estructurando nuestro código pensando en otro. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#7
|
|||
|
|||
los arrays dinamicos son una solucion muy buena!
pero (otra vez?, como se envia como parametro a una funcion para que en la funcion cambie de tamaño y se le asigne un valor? Gracias por vuestra colaboración. Saludos |
#8
|
|||
|
|||
cambie de tamaño el que ?
Y se le asigne un valor a que? Saludos |
#9
|
|||
|
|||
Disculpen la falta de aclaración.
Tengo un array dinamico Miarray as edit y deseo cambiar su valor DENTRO de la funcion Function ActualizaArray(...) . Lo que sucede es que le envio como parámetro a dicha función y delphi me devuelve un error. ¿Estará Claro ahora? Gracias |
#10
|
|||
|
|||
deben ser los nervios por ser principiante , quise decir:
miarray as string; |
#11
|
||||
|
||||
creo entender que es esto lo que quieres:
Código:
type TForm1 = class(TForm) private { Private declarations } public { Public declarations } a: array of string; procedure ActualizaArray ( a : array of string; const NuevoValor:string; const Indice :integer = -1); end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ActualizaArray ( a : array of string; const NuevoValor:string; const Indice :integer = -1); var idx:integer; begin if indice = -1 then idx := High(a) else idx := indice; a[idx]:= NuevoValor end; Yo he usado un procedimiento en lugar de una función, la verdad, no sé que valor quieres devolver en la funcion. function ActualizaArray ( a : array of string; const NuevoValor:string; const Indice :integer = -1): string; Y dentro de la funcion Result := 'valor devuelto'; Si lo he entendido mal, pon tu función y lo vemos. Otra cosa que no le gustará al foro es esta: Si solo tienes un array dinamico, puedes omitir ese parámetro, y al ser global, puedes acceder a ella dentro de la función. Aunque desde luego no es una buena práctica y menos si estas empezando en Delphi. Saludos |
|
|
|