[Lazarus-es] Load combobox

Fredy Gonzales fredyg1965 en gmail.com
Mar Jun 16 00:31:25 CEST 2009


Disculpe, 

Ya encontre el problema, era que el array empezaba de 0, gracias de todos modos.

FG
  ----- Original Message ----- 
  From: Fredy Gonzales 
  To: Spanish version of Lazarus List 
  Sent: Monday, June 15, 2009 5:26 PM
  Subject: Re: Load combobox 


  Solo para aclarar, creo un array porque se ha establecido que la tabla empresa no llegara a un maximo de 10 items.

  Por tanto no tendre problema en trabajarlo a nivel de array.

  FG
    ----- Original Message ----- 
    From: Fredy Gonzales 
    To: Spanish version of Lazarus List 
    Sent: Monday, June 15, 2009 5:20 PM
    Subject: Load combobox 


    Amigos,

    Estoy trabajando un programa sencillo, pero me he trancado en un problema con el combobox.

    Estoy cargando un combobox con data, alli coloco la descripcion y tambien creo un array global al formulario donde guardo el id de la data.

    Digamos algo asi

    var
      TxtQuery: String;
      nCont: Integer;
    begin
      TxtQuery:='Select emp_id,emp_razsoc from empresa';
      DataModule1.lstempresa.SQL.Text:=TxtQuery;
      DataModule1.lstempresa.Open;
      cboempresa.Items.Clear;
      if DataModule1.lstempresa.RecordCount >0 then
         begin
            SetLength(aItems, DataModule1.lstempresa.RecordCount );
            nCont:=1;
            while Not DataModule1.lstempresa.EOF Do
            begin
                cboempresa.Items.Add(DataModule1.lstempresa.FieldByName('emp_razsoc').AsString);
                aItems[nCont]:=DataModule1.lstempresa.FieldByName('emp_id').AsString;  //array creado para guardar el ID de empresa.
                DataModule1.lstempresa.Next;
                nCont:=nCont + 1;
            end;
         end;
      DataModule1.lstempresa.Close;   

    Hasta alli todo OK, el punto esta cuando realizo la sinconizacion Combobox + Array desde el evento OnChange del combobox.

    if (cboempresa.ItemIndex>0) then
     begin
        DataModule1.lstcencosto.Close;
        DataModule1.lstcencosto.Params.ParamByName('ID').AsString:= aItems[cboempresa.ItemIndex];
        DataModule1.lstcencosto.Open;
        DataModule1.lstcencosto.Refresh;
       // monitor de valores
        stdato.caption:=aItems[cboempresa.ItemIndex] ;
     end;     

    Como veran este me refresca otro DataSet con informacion x empresa, pero el combobox no se ubica en la posicion que deberia ser, siempre se salta un registro.Por tanto, el codigo de empresa no siempre es el real.

    Es problema de logica o no debi usa el evento OnChange si no otro ?.

    No uso el DBCombobox ni el DBLookupCombox  porque no despliegan la lista, asi que estoy usando algo que siempre usaba en VB6.

    Saludos.

    FG

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20090615/b1c182e0/attachment-0002.html>


More information about the Lazarus-es mailing list