Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   como cargar items de listbox en tiempo de ejecucion (https://www.clubdelphi.com/foros/showthread.php?t=39811)

vainillasild 30-01-2007 17:58:11

como cargar items de listbox en tiempo de ejecucion
 
tengo que hacer una aplicación donde se eliga entre tipos de espectaculos
como podria cargarlo entempo de ejecucion
en tiempo de dseño se k es ir a items de propiedades y ponerlos directamente
gracias por contestar:confused:

Bicho 30-01-2007 18:11:33

Hola, antetodo bienvenido al clubdelphi.

Respecto a tú pregunta: pues de la misma manera. Escoges el evento en que quieres que se cargen los elementos en el listbox, por ejemplo al mostrar el formulario (es decir, cuando ya se ha creado y va a mostrarse por pantalla):

Código Delphi [-]
procedure TForm1.FormShow(Sender: TObject);
begin
  ListBox1.Items.Add('Elemento1');
  ListBox1.Items.Add('Elemento2');
  ListBox1.Items.Add('Elemento3');
end;

Espero te sirva

Saludos

vainillasild 30-01-2007 19:01:00

holaa
 
o sea kn ese procedimiento cuando compile y ejecute la aplicacion tendré k meter primero lo tipos de espectaculos.
Mi aplicacion empieza con una pantalla principal donde teng un listbox que ahi es donde pondré los tipos de espectaculos.entonces k teng k poner ese procedimiento en formcreate.???:confused:
o kreo un fichero binario donde haya un array de string(k es cada tipo de espectaculo)y en el form create los leos!!
gracias!!!!!espero tu respuesta

Bicho 30-01-2007 19:07:54

Cita:

Empezado por vainillasild
Mi aplicacion empieza con una pantalla principal donde teng un listbox que ahi es donde pondré los tipos de espectaculos.entonces k teng k poner ese procedimiento en formcreate.???

No, si seleccionas el formulario en diseño y accedes a la pestaña de eventos (está pegada a la de propiedades) tienes la lista de eventos del formulario. Buscas el OnShow y haces doble clic.
Allí entre el begin y el end añades los items como te he mostrado antes.

Prueba a ver que tal.

Saludos

vainillasild 30-01-2007 19:19:34

perdona mi desconocimiento
 
en eventos doy a onshow y en la pestña m sale los botones atras y continuar y el listbox del tipo de espectaculo.doy doble clik i nose m crea ningun procedimiento de ese tipo!!ayudame graciasss:confused:

Bicho 30-01-2007 19:23:34

Cita:

Empezado por vainillasild
en eventos doy a onshow y en la pestña m sale los botones atras y continuar y el listbox del tipo de espectaculo.doy doble clik i nose m crea ningun procedimiento de ese tipo!!ayudame graciasss:confused:

¿Pero en que pestaña?

Eventos: Onshow (Importante, haz doble clic sobre el cuadro de texto a la derecha del evento OnShow)
Ahora el editor de código se abre o se visualiza con un esquema tal que así:

Código Delphi [-]
procedure Tfmum1737.Formshow(Sender: TObject);
begin

end;

end.

¿No es así?
Ahí dentro debes escribir lo primero que he puesto cambiando los items, por los que tu quieras poner.

Saludos

vainillasild 30-01-2007 19:36:44

funciona!xro otras dudas
 
:confused: esk estaba en el evento y ponia los otros controles(como botones etc...)y e podido cuand estaba el recuadro en blanco.
una preguta
¿k diferencia ay entre formcreatey formshow
otra pregunta
me salen los items mas abajo es decir en vez de salir en items 0 y 1 me saldra en 3 o 4!!
otra pregunta
esta forma no es parecido como ponerlo en tiempo de diseño??
Es decir esto de add items no seria igual k kargalo desde un fichero??pperdona la existencia pero la practica la teg echa lo unico k io tanto el tipo de espectaculo como posteriormente la cartelera lo puse directamente en items entonces mi profe m dijo k tenia k ponerlo en timepo de ejecucion k si no m suspndia!!por eso kiero saber si esto de add items es en tiempo de ejecucion!!!

Bicho 30-01-2007 20:01:40

Cita:

Empezado por vainillasild
¿k diferencia ay entre formcreatey formshow

1 - El form create es el evento que se produce al crearse el formulario con todos sus componentes que le has añadidos (botones, listbox, labels, etc). No puedes asignar propiedades a un objeto en el formcreate ya que todavía no ha sido creado, por lo que normalmente te dará error de Acces Violation.
el form show se ejecuta cuando ya se ha creado el formulario, y se muestra por pantalla, con lo cual ya puedes asignar las propiedades o manejar los componentes que tengas en él.

Cita:

Empezado por vainillasild
me salen los items mas abajo es decir en vez de salir en items 0 y 1 me saldra en 3 o 4!!

2 - Si te salen los items más abajo, es porque quizá en tiempo de diseño, ya tengas algunos items añadidos, no es así?
Para evitar eso, puedes borrar esos items en tiempo de diseño o en ejecución añadiendo esta instrucción al principio del formshow.
Código Delphi [-]
  ListBox1.Items.Clear; //Esto lo que hace es borrar todos los elementos que hay en la lista.

Cita:

Empezado por vainillasild
esta forma no es parecido como ponerlo en tiempo de diseño??

3 - Es igual que en tiempo de diseño, pero con la diferencia que lo que haces pones en tiempo de ejecución se guarda en fichero .pas del formulario o unidad en que lo usas. Mientras que si lo haces en tiempo ejecución, lo guarda en el fichero .dfm, que es donde éstan los objetos y sus propiedades que usas en tu formulario.
Yo recomiendo, que la casi todas las propiedades que tengas que tocar de un componente, lo hagas en tiempo de ejecución y no en diseño (es más trabajo, lo sé :D ) pero luego a la hora de hacer búsquedas es más cómodo y más facil localizar los fallos si lo tienes todo centralizado.

Cita:

Empezado por vainillasild
Es decir esto de add items no seria igual k kargalo desde un fichero??pperdona la existencia pero la practica la teg echa lo unico k io tanto el tipo de espectaculo como posteriormente la cartelera lo puse directamente en items entonces mi profe m dijo k tenia k ponerlo en timepo de ejecucion k si no m suspndia!!por eso kiero saber si esto de add items es en tiempo de ejecucion!!!

No, una cosa es asingar las propiedades que quieras con items.add y otra cargarlo desde un fichero de texto.
Si quieres cargar items desde un fichero de texto, puedes usar el método que tiene implementado este componente para cargar directamente lo que haya en el fichero, y ese es LoadFromFile()
Ejemplo:

Código Delphi [-]
Listbox1.items.loadFromFile('c:\mifichero.txt');
Intenta hacer una prueba y verás.

De todos modos y ya viendo como vas y para no hacer éste hilo eterno. Te recomiendo el libro La Cara Oculta de Delphi 4 (es un poco antiguo, pero es gratis y tiene lo fundamental para empezar a programar con delphi)

Pero si sigues teniendo dudas puedes postearlas aquí sin problema.

Espero te sirva.

Saludos

vainillasild 30-01-2007 20:31:37

muchas gracias!!
 
ok.!!me ha kedado todo claro
Para terminar me gustaría saber si podrian resolverme la ultima duda de hoy.
Mi segunda pantalla consiste en que si hemos elegido cine salga la cartelera cine y si hemos elegido teatro salga la cartelera teatro.bueno el problema no esta en mostrarlo k lo ago con visible etc...el problema esta en k teng k kargar esa cartelera tambien en tiempo de ejecución es decir k kada peli u obra tiene su dias y sus sesiones de proyectarse o actuacion.por lo k me gustaria saber si lo puedo realizar de la mismamanera k asta hor es dcir con add.items!!mucha gracias
la cartlera es un listbox l igual k los dias y las sesiones.
muchas gracias y perdonenme!!!!:confused:

Bicho 30-01-2007 21:01:55

Hola, exactemente igual.

Puedes poner un parámetro, que según lo que hayan escogido cargue unos items u otros o si lo haces por fichero que cargue uno u otro:

Mi duda está, ¿donde se escoge que quieres ver: cine o teatro, en el form principal o en el secundario que tiene las carteleras?

Si es en el segundo no hay problema, en el evento onclick de cada botón que permita visualizar una lista u otra, haces el items.add correspondiente.
Si es de la otra manera, ya necesitarás guardar en una variable el botón que han pulsado para escoger una cartelera.
Tambien si esos botones muestran la ventana, pues puedes cargarlos directamente antes de hacer el Form2.Show

Saludos

vainillasild 30-01-2007 21:14:04

graciassssssssssssssssssss
 
muchas gracias,
voy a probar lo que me comentas.
pues en la pantalla principal eligo espectaculo y luego en la segunda panalla esta la cartelera una posible solcuion??¿¿¿ seria
procedure bcontinuarclick();
begin
if lbespectaculo.itemindex=0{opcion cine}
pondria add items de cine n?
else lbespectaculo.itemindex=1{opcion teatro}
pondria add items de teatro n?

muchas graciasss!!!!!:confused:

Bicho 30-01-2007 21:41:53

Exactamente, lo siento no habia entendido tu duda anterior:

- En la primera lista se escoge el espectaculo (cine o teatro)
- Luego se pulsa continuar y se muestran las carteleras, ¿no es así?

Si es así está bien como lo pones

Saludos

vainillasild 31-01-2007 19:14:00

dos dudas !!!
 
hola,
tengo dos problemas
por un lado siguiendo lo comenzado ayer.En la pantalla principal selecciono el tipo de espectaculo k gracias a ustedes lo supe cargar en tiempo de ejecución entonces para pasar a la siguiente pantalla utilizo el boton continuar para poder pasar a la otra pantalla entonces pongo
procedre tventanaempresa.bcotinuarclick();
begin
if i=1 then
salga el label de cine
salga el listbox de cine
else if i=0 then
salga el label de teatro
salga el listbox de teatro
Mientras tanto en la pantalla ademas de salir tanto el label como el listbox(de momento vacio)tambien esta un listboxdias y un listboxsesiones ocn enabled false k es asta k no se kargue ninguna peli no puede accederse a elegir dias y sesiones.La cosa no me produciria ningun problema si pudise pner tanto el nombre de la obra o pelicula y sus sesiones con la propiedad items(string..)pero volvemos de nuevo a k teng k kargar los datos en tiempo de ejecucion.
Es decir cuando yo en la primera pantalla seleccione cine x ejemplo en la siguiente pantalla tiene k estar cargados los titulos y de cada titulo sus dias y sus sesiones.como podria acer eso???anidamientos de onshow k m dijisteis ayer!!!gracias por resolverme esta duda
Por otro lado despues de haber seleccionado la zona de butacas el numero de entrdas(con updown asociandole un tedit)y poniendo el preico de las entradas pasamos a la forma de pago(envio a domicilio con trjeta de crdito,envio a domicilio sin tarjetad e credito y recogida en taquilla)cada tipo de pago lo e llevado a un formlario distinto.Entonces es comun a los tres formularios pedir el nombre apellidos provincia localidad calle telefono codigo postal dni.Mi problema es que limito telefono con tlf.maxlenght y tb le pogo el evento preykess para no permitir la entrada de letras y solo escribir numero.Claro si ago eso con nombre apellido provincia localidad esta bien pork limito a letras pero si kiero escribir"maria del carmen" o "sevilla la nueva" los espacis no me deja ponerlos.¿Habria alguna manera de permitir el espacio?
mas k nada lo ago pork es obligatorio contetar a todos esos datos si no en el si pulso al boton comprar me tendria k decir (rellene lo que falta ) entonces tendria k estar comprobando campo a campo y si fuese con preykees con comprobar k .text<>' ' pues podria hacerse la compra...
Perdonarme y molesto mucho pero la verdad que solucionais mis "humildes" problemas!!
gracias:confused:


La franja horaria es GMT +2. Ahora son las 23:11:05.

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