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 16-11-2011
mcarazas mcarazas is offline
Miembro
 
Registrado: may 2006
Posts: 40
Poder: 0
mcarazas Va por buen camino
Perdon creo que no me dejando entender.
Estoy trabajando en un ComboBox, el ComboBox tiene varios productos cargados, su propiedad Style esta en CsSimple como esta en la imagen.
Los primeras 13 letras del ComboBox son los digitos del codigo de barras, como el lector lee los 13 digitos el ComboBox va comparando hasta que encuentra el producto. Mi pregunta es como programo o en que evento trabajo para que el ComboBox encuentre el Codigo y salte automaticamente a un TEdit.
Imágenes Adjuntas
Tipo de Archivo: jpg ventas.jpg (26,0 KB, 12 visitas)
Responder Con Cita
  #2  
Antiguo 16-11-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
De la manera que lo planteas nunca te va a buscar el código de barras por scanner ni por teclado, ya que para buscar en el ComboBox por IndexOf('7771214002632') nunca lo encontrará porque no coincide con la descripción "7771214002632 - AC100 - ACEITE DE OLIVA EXTRA VIRGEN 500 ML" y en ocasiones el código de barras puede tener menos de 13 dígitos.
Lo mejor es buscarlo en la DB o crearte una DB para los códigos de barras:
Código SQL [-]
CREATE TABLE CodigosBarras
  (
    IDCODIGOBARRA   int IDENTITY(1,1)
    CODIGOBARRAS    varchar(13)
    ARTICULOID      int
  )

CREATE UNIQUE INDEX PKU_IDCODIGOBARRA
  ON CodigosBarras(IDCODIGOBARRA)

CREATE UNIQUE INDEX PSU_CODIGOBARRAS
  ON CodigosBarras(CODIGOBARRAS)

CREATE INDEX PS_ARTICULOID
  ON CodigosBarras(ARTICULOID)
En la ficha del artículo asocias el código de barras al código del artículo.
En vez de utilizar un ComboBox utiliza un Edit

Espero que te sirva
Un saludo.
Responder Con Cita
  #3  
Antiguo 16-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Tál como te comenta olbeup, no encontrará el código de esa manera. Para lograr lo que buscas tendrías que crearte una variable de tipo TStrings que almacene paralelamente los códigos propiamente dichos y realizar las búsquedas sobre ella. Es decir que cuando realizas la carga del ComboBox tendrías que hacer:
Código Delphi [-]
  tsCódigo:= TStringList.Create;
  while not DataSet.Eof do
  begin
    tsCódigo.Add(DataSet.FieldByName('CODIGO').AsString);
    ComboBox1.Items.Add(DataSet.FieldByName('CODIGO').AsString + DataSet.FieldByName('DETALLE').AsString);
    DataSet.Next;
  end;

Luego, para buscar el código, algo como:
Código Delphi [-]
  ...
  ix := tsCódigo.IndexOf(Edit1.Text); // Edit que recibe el código
  if ix <> -1 then 
  begin
    ComboBox1.ItemIndex:= ix;  // mostrar item
    Edit2.SetFocus;  // ir a otro Edit
  end
  ...
En algún punto deberás hacer tsCodigo.Free para liberar memoria. (Estoy escribiendo el código en el aire, así que seguramente obtengas algún error si lo probas)

Pero es muchísimo más sencillo y eficiente comprobar la existencia del código ejecutando una consulta sobre el DataSet.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #4  
Antiguo 16-11-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Vale, lo que puedes hacer es en vez de utilizar Add, vas a utilizar AddObject, es mas útil.
Lo primer es crearte un objecto
Código Delphi [-]
type
  TFillItem = class
    private
      FIDFieldValue: Integer;
      FTitleField: String;
      FFieldValue: Variant;
      FFieldWide: WideString;
    published
      property IDFieldValue: Integer read FIDFieldValue write FIDFieldValue;
      property TitleField: String read FTitleField write FTitleField;
      property FieldValue: Variant read FFieldValue write FFieldValue;
      property FieldWide: WideString read FFieldWide write FFieldWide;
  end;

Lo segundo es crearte un procedimiento para cargar todos los artículos en el ComboBox:
Código Delphi [-]
procedure TForm1.LoadArticlesCB;
var
  FillItem: TFillItem;
begin
  with DataSet do
    while (not Eof) do
    begin
      FillItem := TFillItem.Create;
        FillItem.IDFieldValue := FieldByName('IDARTICULO').AsInteger;
        FillItem.FieldValue   := FieldByName('IMPORTE').AsFloat;
        FillItem.TitleField   := FieldByName('DETALLE').AsString;
        FillItem.FieldWide    := FieldByname('OBSERVACIONES').AsString;

      ComboBox1.Items.AddObject(FillItem.TitleField, FillItem);

      Next;
    end;
end;
Luego, para buscar el código
Código Delphi [-]
...
var
  FillItem: TFillItem;
begin
  with ComboBox1 do
  begin
    ix := Items.IndexOf(Text);
    if (ix <> -1) then
    begin
      FillItem := Items.Objects[ix];
      Text := Text + ' - ' + FillItem.TitleField;
      Edit2.SetFocus;
    end
    else
      ShowMessage('Artículo no encontrado [' + Text + ']');
  end;
end;
y cuando se cierre la aplicación
Código Delphi [-]
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  nI: Integer;
begin
  with ComboBox1 do
    for nI := 0 to (Items.Count -1) do
      TFillItem(Items.Objects[nI]).Free;
end;
Espero que te sirva
Un saludo
Responder Con Cita
  #5  
Antiguo 17-11-2011
mcarazas mcarazas is offline
Miembro
 
Registrado: may 2006
Posts: 40
Poder: 0
mcarazas Va por buen camino
Gracias por su ayuda, ahora se que voy a hacer
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
ayuda con el combobox Nostradonuts Varios 3 19-02-2011 15:50:55
Ayuda con ComboBox paladincubano Varios 4 04-11-2008 14:02:47
Ayuda Con COMBOBOX!!! pecosita C++ Builder 7 31-10-2006 03:58:07
Ayuda con Combobox pepecharlie67 Varios 8 26-12-2005 12:21:17


La franja horaria es GMT +2. Ahora son las 18:08:55.


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