Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Creacion de botones runtime, los cuales se mantengan despues de cerrar la aplicación (https://www.clubdelphi.com/foros/showthread.php?t=71965)

giocatore 20-01-2011 22:47:46

Creacion de botones runtime, los cuales se mantengan despues de cerrar la aplicación
 
Buenas!!!!, Estoy creando una aplicación en delphi Xe y quiero poder crear botones, labels, listbox (o cualquier elemento)en tiempo de ejecución. Pero la particularidad está en que quiero que los elementos creados en tiempo de ejecución se mantengan aún después de cerrar la aplicación y pueda usarlos cuando abra en futuras ocaciones mi programa.

Espero por favor me ayuden.

Muchisimas gracias!!!

Caral 21-01-2011 00:29:24

Hola
Si estan creados en tiempo de ejecucion se crearan siempre.
Cuando se cierre la aplicacion es imposible que se mantengan vivos.
Saludos

Aleca 21-01-2011 00:58:46

Cita:

Empezado por giocatore (Mensaje 388135)
Buenas!!!!, Estoy creando una aplicación en delphi Xe y quiero poder crear botones, labels, listbox (o cualquier elemento)en tiempo de ejecución. Pero la particularidad está en que quiero que los elementos creados en tiempo de ejecución se mantengan aún después de cerrar la aplicación y pueda usarlos cuando abra en futuras ocaciones mi programa.

Espero por favor me ayuden.

Muchisimas gracias!!!

:confused::confused: coincido con caral. :confused::confused:

Casimiro Notevi 21-01-2011 01:49:19

Estoy de acuerdo con los compañeros... salvo que quieras hacer algo como por ejemplo: cuando pulse un botón se creará en runtime un Tedit. Se guardan las propiedades del Tedit en un fichero ini. Cuando inicies el programa lees el fichero ini y creas los componentes que se han creado antes en runtime.

Caral 21-01-2011 01:51:47

Hola
Pense en lo del ini amigo, pero de todas todas estaras creando y destruyendo los componentes.
Lo que haria el ini es simplemente guardar ciertos datos, NO el componente.
Saludos

Casimiro Notevi 21-01-2011 01:57:15

Cita:

Empezado por Caral (Mensaje 388159)
[..]Lo que haria el ini es simplemente guardar ciertos datos, NO el componente.
Saludos

Por supuesto :)

giocatore 23-01-2011 02:38:15

Bueno pues siendo un poco mas específico, lo que quiero es que: por ejemplo si mi aplicación es un punto de venta , y llegado un determinado momento el administrador del local precisa agregar un item al sistema; el sistema deberá agregar un botón correspondiente al item recién agregado por el administrador.

Y lo correcto seria que el item se mantenga aunque se cierre la aplicación y pueda ser usado en el punto de venta por el personal del local.

Investigando por ahí obtuve la información de que existen componentes que me ayudarian a hacer esto como :

TMS Scripter Studio Pro, Jv Runtime Design

entonces es posible hacer lo que indico mas arriba??

Casimiro Notevi 23-01-2011 13:30:47

Cita:

Empezado por giocatore (Mensaje 388420)
[..] lo que quiero es que: por ejemplo si mi aplicación es un punto de venta , y llegado un determinado momento el administrador del local precisa agregar un item al sistema; el sistema deberá agregar un botón correspondiente al item recién agregado por el administrador.
[..]

Sigo sin entender lo que quieres, ¿agregar un item al sistema?, ¿qué quiéres decir con "un item"?, explica exactamente qué quieres.

Ñuño Martínez 24-01-2011 09:15:23

Me uno a la petición de Casimiro, porque tengo curiosidad y tampoco entiendo qué se refiere con "agregar un item al sistema; el sistema deberá agregar un botón correspondiente al item". No entiendo lo que es el ítem ni qué sistema, porque por lo poco que he entendido no es el sistema operativo, ¿o sí?

mcs 24-01-2011 09:20:11

Cita:

Empezado por giocatore (Mensaje 388420)
Bueno pues siendo un poco mas específico, lo que quiero es que: por ejemplo si mi aplicación es un punto de venta , y llegado un determinado momento el administrador del local precisa agregar un item al sistema; el sistema deberá agregar un botón correspondiente al item recién agregado por el administrador.

Y lo correcto seria que el item se mantenga aunque se cierre la aplicación y pueda ser usado en el punto de venta por el personal del local.

Investigando por ahí obtuve la información de que existen componentes que me ayudarian a hacer esto como :

TMS Scripter Studio Pro, Jv Runtime Design

entonces es posible hacer lo que indico mas arriba??

Por lo que entiendo, lo que quieres hacer es que cuando en tu TPV se añade un producto, después se cree en la pantalla principal un botón para añadir este producto a la compra. Es esto, no?

newtron 24-01-2011 09:47:52

Yo estoy de acuerdo con la idea de Casimiro porque yo la uso en mis aplicaciones. Creo un fichero de texto en el cual voy agregando las características de los controles que quiero crear en tiempo de ejecución, cuando abres el programa lees ese fichero y creas los componentes de acuerdo con esas características. Esto es muy interesante porque te permite personalizar programas sin tocar el código y yo lo uso para crear edits, grids, labels, etc.

Saludos

roman 24-01-2011 18:58:53

Cita:

Empezado por giocatore (Mensaje 388420)
Bueno pues siendo un poco mas específico, lo que quiero es que: por ejemplo si mi aplicación es un punto de venta , y llegado un determinado momento el administrador del local precisa agregar un item al sistema; el sistema deberá agregar un botón correspondiente al item recién agregado por el administrador.

Y lo correcto seria que el item se mantenga aunque se cierre la aplicación y pueda ser usado en el punto de venta por el personal del local.

Investigando por ahí obtuve la información de que existen componentes que me ayudarian a hacer esto como :

TMS Scripter Studio Pro, Jv Runtime Design

entonces es posible hacer lo que indico mas arriba??

En mi opinión, creo que estás enfocando el asunto de forma incorrecta. Tu sistema debería guardar en una base de datos el catálogo de productos y tu interfaz debe leer dicho catálogo para crear los controles visuales necesarios.

Entonces, cuando el administrador del local agrega un item, lo que hace es agregar un producto al catálogo de la base de datos, y eso se guardará de forma permanente.

// Saludos

giocatore 24-01-2011 21:57:23

Gracias por las respuestas, bueno pues para ser un poco más explicito me refiero a item a por ejemplo:

Suponiendo que la aplicación es un punto de venta en un local de comida desarrollado en delphi Xe, lo que busco es que si en algun determinado momento el administrador quiere agregar un producto, "por ejemplo hamburguesas". Es conveniente que se cree un botón con la palabra hamburguesas para que pueda ser usado por el personal que atiende el local de comida; es por eso que busco crear el botón desde la aplicación con la palabra del nuevo producto y que este se mantenga en mi aplicación aunque se cierre el programa.

Gracias !!!

Casimiro Notevi 24-01-2011 22:04:47

Parece que Román había entendido lo que querías hacer.

Aleca 24-01-2011 22:07:26

como dijo roman, deberias estar usando una base de datos, no :confused::confused: y ahi una tabla que lleve los productos.

ecfisa 24-01-2011 22:33:40

Hola.

Coincido con roman; me parece lógico crear los controles a partir de los datos almacenados.

Por que suponiendo, sólo suponiendo que se pudiera y justificara hacer semejante lío de código: ¿ Que pasa si mañana se le ocurre al administrador no vender más hamburguesas ?

En cambio es muy sencillo crear unos botones, o lo que sea de acuerdo a los ingredientes que el administrador agregue o elimine de un catálogo :

( Un ejemplo al vuelo )
Código Delphi [-]
...
procedure TForm1.VentaOnClick(Sender: TObject);
begin
  ShowMessage('¡Salga una '+ TButton(Sender).Caption +' caliente !');
end;

procedure TForm1.FormShow(Sender: TObject);
var
  i: Integer;
begin
  FoodDataSet.Open;
  for i:= 0 to FoodDataSet.FieldCount - 1 do
  begin
    Fbt:= TButton.Create(nil);  // Fbt: privada de tipo TButton
    Fbt.Name:= 'Button'+IntToStr(i);
    Fbt.Caption:= FoodDataSet.Fields[i].DisplayLabel;
    Fbt.Width:= Canvas.TextWidth(FoodDataSet.Fields[i].DisplayLabel) + 15;
    Fbt.Left:= 10;
    Fbt.Top:= i * 40 + 5;
    Fbt.OnClick:= VentaOnClick;
    Fbt.Parent:= Self;
  end;
end;
...


Un saludo.

roman 24-01-2011 22:34:13

giocatore:

Sin ánimo de ofender, parece que respondiste sin haber leído las respuestas. Pero a ver, veámoslo de nuevo.

Suponiendo que por ahora tienes botones para "Refresco", "Papas", "Sandwich", la pregunta es: ¿cómo obtienes esos botones?

Si la respuesta es que los pusiste en modo de diseño entonces te podemos decir que estás usando un método incorrecto.

Debes usar una base de datos en la que almacenes los productos que tienes. Luego, al abrir el formulario, lees los elementos que tengas en la base de datos y colocas un botón por cada uno. Tu tabla en la base de datos tendría que tener campos como:
  • Ientificador del producto
  • Nombre del producto
  • Costo
  • Etc.

// Saludos

giocatore 24-01-2011 22:49:56

Cita:

Empezado por roman (Mensaje 388609)
giocatore:

Sin ánimo de ofender, parece que respondiste sin haber leído las respuestas. Pero a ver, veámoslo de nuevo.

Suponiendo que por ahora tienes botones para "Refresco", "Papas", "Sandwich", la pregunta es: ¿cómo obtienes esos botones?

Si la respuesta es que los pusiste en modo de diseño entonces te podemos decir que estás usando un método incorrecto.

Debes usar una base de datos en la que almacenes los productos que tienes. Luego, al abrir el formulario, lees los elementos que tengas en la base de datos y colocas un botón por cada uno. Tu tabla en la base de datos tendría que tener campos como:
  • Ientificador del producto
  • Nombre del producto
  • Costo
  • Etc.
// Saludos


Lei las respuestas y tu anterior respuesta también, me parece excelente la solución que propones gracias por orientarme, tengo problemas de conexión es por eso que no alcanze a citar tu anterior respuesta.

Mucha gracias!!!

giocatore 25-01-2011 20:29:38

Gracias
 
Gracias a todos por su tiempo y por ayudarme en la duda que tenia. gracias ecfisa por el código.


Saludos


La franja horaria es GMT +2. Ahora son las 11:21:17.

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