Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-04-2011
coej coej is offline
Miembro
NULL
 
Registrado: abr 2011
Ubicación: MANCHEGO-ESPAÑOL
Posts: 65
Poder: 14
coej Va por buen camino
Insertar valores en Combobox

Hola de nuevo, por aquí sigo con la biblia de delphi, ahora trabajando con combobox, me gustaría insertar valores para que aparecieran en el combobox, pero al insertar este código, me da error...
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
   begin
  Form1.Combobox1.items.add('ITEM');

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key = Chr(13) then
with Combobox1 do
if (Text <> '') and (Items.Indexof (Text) < 0) then
Items.Add (Text);
end;


end.
El error es Statement expecte but procedure found, en la línea de procedure, he probado a quitar la procedure, y me da error , violación de escritura, es como si en tiempo de ejecución no pudiera insertar un valor en el combobox..., gracias por las respuestas y comprensión de la tontería que será seguramente, un saludo...
Responder Con Cita
  #2  
Antiguo 12-04-2011
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Saludos.

El error te lo da porque no estas colocando la inserción en un procedimiento o función, sino que abres un begin, escribes el código y el begin nunca tiene el end que le corresponde. Copia el código en un Botón para que hagas la prueba y verás que si te funciona.
Responder Con Cita
  #3  
Antiguo 12-04-2011
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola coej, tienes que quitar las dos líneas que estan en rojo para que funcione tu codigo, la explicación ya te la ha dado nemesio.

Código:
......................................
implementation
{$R *.dfm}
  begin
  Form1.Combobox1.items.add('ITEM');

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key = Chr(13) then
.........................
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 12-04-2011
coej coej is offline
Miembro
NULL
 
Registrado: abr 2011
Ubicación: MANCHEGO-ESPAÑOL
Posts: 65
Poder: 14
coej Va por buen camino
Solo se puede hacer la inserción si introduzco ese código en una procedure o función???, si no no puedo conseguir que funcione???, podríais ponerme un ejemplo modificado de mí codigo , en el que se introducen un valor en el combobox'??, gracias...
Responder Con Cita
  #5  
Antiguo 12-04-2011
nemesio nemesio is offline
Miembro
 
Registrado: nov 2005
Ubicación: Isla de Margarita, Venezuela
Posts: 377
Poder: 19
nemesio Va por buen camino
Código Delphi [-]

unit Unit1;
interface
uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;
type  TForm1 = class(TForm)
   ComboBox1: TComboBox;
   procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
   private    { Private declarations }  
   public    { Public declarations }  
end;
var  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
   Form1.Combobox1.items.add('ITEM');
end;
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = Chr(13) then
  with Combobox1 doif (Text <> '') and (Items.Indexof (Text) < 0) then
     Items.Add (Text);
end;

end.

Ahí está un ejemplo de como lo harás en el evento onClick de un Button. Tambien puedes hacerlo en cualquier otro evento como el OnShow del formulario o como mejor te convenga dependiendo de la necesidad.

Saludos

Última edición por nemesio fecha: 12-04-2011 a las 16:40:53.
Responder Con Cita
  #6  
Antiguo 12-04-2011
coej coej is offline
Miembro
NULL
 
Registrado: abr 2011
Ubicación: MANCHEGO-ESPAÑOL
Posts: 65
Poder: 14
coej Va por buen camino
Gracias Nemesio, eso no lo puedo hacer "a pelo", es decir siempre lo tengo que asociar a un evento o componente del formulario, si lo quisiera hacer simplemente insertarlo sin asociarlo a algún evento o componente???, es decir, simplemente quiero insertar 2 items a pelo en línea de codigo sin asociar a nada...?????
Responder Con Cita
  #7  
Antiguo 12-04-2011
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por coej Ver Mensaje
.............. si lo quisiera hacer simplemente insertarlo sin asociarlo a algún evento o componente???, es decir, simplemente quiero insertar 2 items a pelo en línea de codigo sin asociar a nada...?????
Hola de nuevo coej, puedes utilizar el evento OnCreate o OnShow de tu formulario:

Código Delphi [-]
unit Unit1;

interface

uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;
type  TForm1 = class(TForm)
   ComboBox1: TComboBox;
   procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
   private    { Private declarations }
   public    { Public declarations }
end;

var  Form1: TForm1;
implementation
{$R *.dfm}

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = Chr(13) then
  with Combobox1 do
   if (Text <> '') and (Items.Indexof (Text) < 0) then
     Items.Add (Text);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 Combobox1.items.add('ITEM 1');
 Combobox1.items.add('ITEM 2');
end;

end.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 12-04-2011
beginner01 beginner01 is offline
Miembro
NULL
 
Registrado: mar 2011
Ubicación: República Dominicana
Posts: 181
Poder: 14
beginner01 Va por buen camino
Cita:
Empezado por coej Ver Mensaje
Gracias Nemesio, eso no lo puedo hacer "a pelo", es decir siempre lo tengo que asociar a un evento o componente del formulario, si lo quisiera hacer simplemente insertarlo sin asociarlo a algún evento o componente???, es decir, simplemente quiero insertar 2 items a pelo en línea de codigo sin asociar a nada...?????

saludos.

Código Delphi [-]
 
procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = Chr(13) then
  with Combobox1 do
   if (Text <> '') and (Items.Indexof (Text) < 0) then
     Items.Add (Text);
end;

si dejas solo esta parte fijate que si vas agregando texto y presionando la tecla enter el combobox se ira llenendo con el texto correspondiente.
Responder Con Cita
  #9  
Antiguo 12-04-2011
coej coej is offline
Miembro
NULL
 
Registrado: abr 2011
Ubicación: MANCHEGO-ESPAÑOL
Posts: 65
Poder: 14
coej Va por buen camino
Gracias a ambos, por lo que veo hay que meter "todo", en procedures o eventos-componentes , etc, no se puede hacer a "pelo", vengo de otros lenguajes de programación y por lo que estoy comprobando en distinto...

Si, esa parte de código la seguía de la biblia, y te inserta lo que escribes, pero cuando sales del programa y vuelves a entrar , no lo almacena...

Mí duda va más después de ver vuestras respuestas, en que un unit , no puedo poner la línea en ningún sitio como yo quiero(solo la línea...de código que subrayo(es decir en el unit no hay ninguna línea de código fuera de procedures, funciones si las hay , type, ect,???????...
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

  Form1.Combobox1.items.add('ITEM');

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key = Chr(13) then
with Combobox1 do
if (Text <> '') and (Items.Indexof (Text) < 0) then
Items.Add (Text);
end;

   
end.

Y no sé si puedo hacerlo en la parte de código de project , en el cual se inicializan la aplicación...
Creo que tengo que dar un repaso a la estructura básica de un programa en delphi para aclararme yo...


Pero una de las cosas que quiero intentar, es que se inicialice el combobox, por ejemplo con dos items (rojo y azul), al abrir el programa, y después , si inserto alguno más que se guarde para la próxima vez que se abra(quizás esto último sería ya asociado a otros contenedores)...

Muchas gracias por vuestras respuestas y paciencia, un saludo de un novatazo..jeje
Responder Con Cita
  #10  
Antiguo 12-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
puse lo que deseas se puede hacer de muchas formas

se puede utilizar una tabla, una base de datos, un archivo texto, donde se vaya almacenando los Items que quieras agregar (debes tener en cuenta que tambien esta la posibilidad de eliminar los Items que ya no desees, pero eso depende de lo que quieras hacer)

solo por curiosidad... de que lenguaje provienes?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #11  
Antiguo 12-04-2011
coej coej is offline
Miembro
NULL
 
Registrado: abr 2011
Ubicación: MANCHEGO-ESPAÑOL
Posts: 65
Poder: 14
coej Va por buen camino
Si eso imagino que se podrá hacer, cuando llegue a ello , ya preguntaré seguro, ahora solo estoy viendo cosas muy básicas siguiendo la biblia de delphi 7 de marco cantu.

java, oracle 10g, no tiene nada parecido a las units, y el project, donde se inicializa la aplicación, al menos no igual...
Responder Con Cita
  #12  
Antiguo 12-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
no hay mejor forma de aprender que metiendote a programar y haciendo preguntas.....

no se donde lo lei pero lo cito.... No hay preguntas tontas... es tonto el que no pregunta

solo ten en cuenta la guia de estilo
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #13  
Antiguo 12-04-2011
coej coej is offline
Miembro
NULL
 
Registrado: abr 2011
Ubicación: MANCHEGO-ESPAÑOL
Posts: 65
Poder: 14
coej Va por buen camino
No te preocupes, que soy preguntón por naturaleza, y os vais a hartar de verme por aquí, y lo del las guías de estilo, ya me tiraron hace 2 días de las orejas por ello...

Pues eso, la duda que me sigue aún rondando es si no se puede escribir en las units líneas de código fuera de procedures, types, var etc, y donde se escribiría???
O si quiero iniciar un combobox al abrir el programa valdría con la solución del oncreate , onshow, pero si lo quiero hacer fuera de procedure se podría , en el unit, o debería ser al inicializar en project???

Edito , acabo de probar el código con la solución formshow, y me abre el programa, sin los items añadidos?????

Última edición por coej fecha: 12-04-2011 a las 22:17:22.
Responder Con Cita
  #14  
Antiguo 12-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
yo acabo de hacer la prueba y si me salen los items
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #15  
Antiguo 12-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
otra forma es que desde el mismo project (program) hagas esto
Código Delphi [-]
program Project1;
uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Form1.cmb1.Items.Add('Item 1');
  Form1.cmb1.Items.Add('Item 2');
  Form1.cmb1.Items.Add('Item 3');
  Form1.cmb1.Items.Add('Item 4');
  Form1.cmb1.Items.Add('Item 5');
  Form1.cmb1.Items.Add('Item 6');
  Application.Run;
end.

para un ejemplo sencillo funciona bien... pero imaginate en una aplicacion... tendrias que cargar todos los formularios y pues no es muy aconsejable
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #16  
Antiguo 12-04-2011
coej coej is offline
Miembro
NULL
 
Registrado: abr 2011
Ubicación: MANCHEGO-ESPAÑOL
Posts: 65
Poder: 14
coej Va por buen camino
A eso me refería desde el principio, voila...

No entendía donde poner ese código , y porque no podía ponerlo en el código de unit, al final imaginaba que era ahí...
Responder Con Cita
  #17  
Antiguo 12-04-2011
coej coej is offline
Miembro
NULL
 
Registrado: abr 2011
Ubicación: MANCHEGO-ESPAÑOL
Posts: 65
Poder: 14
coej Va por buen camino
Poniendo este codigo en unit no me salen los items...
Código Delphi [-]
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;


    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if key = Chr(13) then
with Combobox1 do
if (Text <> '') and (Items.Indexof (Text) < 0) then
Items.Add (Text);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
 Combobox1.items.add('ITEM 1');
 Combobox1.items.add('ITEM 2');
end;


end.

Poniendo esto en Project , si...
Código Delphi [-]
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
   Form1.Combobox1.Items.Add('Item 1');
  Form1.Combobox1.Items.Add('Item 2');
    Form1.Combobox1.Items.Add('Item 3');
  Application.Run;
end.

Ni idea de porque???
Responder Con Cita
  #18  
Antiguo 12-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
ok
si necesitas algo mas.. solo pregunta
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #19  
Antiguo 12-04-2011
coej coej is offline
Miembro
NULL
 
Registrado: abr 2011
Ubicación: MANCHEGO-ESPAÑOL
Posts: 65
Poder: 14
coej Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
ok
si necesitas algo mas.. solo pregunta
Seguro que con el formshow te funciona????
Puedes copiarme el código del unit con el que te funciona o lo has pegado del hilo???, es que no se porque a mí no me muestra los items con la procedure formshow???, gracias
Responder Con Cita
  #20  
Antiguo 13-04-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Claro aqui esta
Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    cmb1: TComboBox;
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
  cmb1.Items.Add('Item 1');
  cmb1.Items.Add('Item 2');
  cmb1.Items.Add('Item 3');
  cmb1.Items.Add('Item 4');
  cmb1.Items.Add('Item 5');
  cmb1.Items.Add('Item 6');
  cmb1.ItemIndex := 1;
end;
end.

al final veras una linea cmb1.itemindex := 1;

eso hace que el combo empiece con el ITEM2

en Delphi el primero valor para array o listas es cero
__________________
Dulce Regalo que Satanas manda para mi.....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como insertar un checkbox en un dbgrid con valores 0 y 1 golf2008 OOP 4 22-09-2010 03:59:20
meter los valores de una columna en un combobox marareta SQL 2 19-07-2010 19:47:11
Insertar valores...Error tebre Conexión con bases de datos 10 18-02-2009 19:34:40
Como meto en un ComboBox todos los valores de una columna de una tabla gorsan Conexión con bases de datos 4 09-07-2007 11:37:50
Agregar valores de un campo de una tabla a un combobox kakesoft Conexión con bases de datos 4 05-11-2005 22:03:27


La franja horaria es GMT +2. Ahora son las 00:56:49.


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