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 20-12-2003
pepe2000 pepe2000 is offline
Miembro
 
Registrado: dic 2003
Ubicación: Cajamarca
Posts: 93
Poder: 21
pepe2000 Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 20-12-2003
Descendents Descendents is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 396
Poder: 22
Descendents Va por buen camino
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;
A ver si esto es lo que quieres.
Saludos
Responder Con Cita
  #3  
Antiguo 20-12-2003
Descendents Descendents is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 396
Poder: 22
Descendents Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 21-12-2003
pepe2000 pepe2000 is offline
Miembro
 
Registrado: dic 2003
Ubicación: Cajamarca
Posts: 93
Poder: 21
pepe2000 Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 21-12-2003
Descendents Descendents is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 396
Poder: 22
Descendents Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 22-12-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Cita:
pepe2000 comentó:
...crear un Tlisbox en tiempo de ejecución, con el proposito de que me sirva como lista temporal...
...La lista temporal lo utilizo como equivalente a un array temporal que creaba en clipper...
Alguien tiene opiniones de que otra cosa puedo usar?
Si no vas a necesitar que el usuario interactúe con la lista, digamos que solo la utilizarás para guardar datos, puedes crear o un array dinámico, o utilizar alguna clase como TList o TStringList (TStrings).
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.
Responder Con Cita
  #7  
Antiguo 22-12-2003
pepe2000 pepe2000 is offline
Miembro
 
Registrado: dic 2003
Ubicación: Cajamarca
Posts: 93
Poder: 21
pepe2000 Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 22-12-2003
Descendents Descendents is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona
Posts: 396
Poder: 22
Descendents Va por buen camino
cambie de tamaño el que ?
Y se le asigne un valor a que?

Saludos
Responder Con Cita
  #9  
Antiguo 22-12-2003
pepe2000 pepe2000 is offline
Miembro
 
Registrado: dic 2003
Ubicación: Cajamarca
Posts: 93
Poder: 21
pepe2000 Va por buen camino
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
Responder Con Cita
  #10  
Antiguo 22-12-2003
pepe2000 pepe2000 is offline
Miembro
 
Registrado: dic 2003
Ubicación: Cajamarca
Posts: 93
Poder: 21
pepe2000 Va por buen camino
deben ser los nervios por ser principiante , quise decir:
miarray as string;
Responder Con Cita
  #11  
Antiguo 29-12-2003
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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;
así el ultimo parámetro es opcional, si no especificas el indice, modifica el ultimo, si pones uno, pues modifica ese indice.

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
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


La franja horaria es GMT +2. Ahora son las 14:37:54.


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