Páginas

quinta-feira, 28 de julho de 2016

PickList na dbGrid (ComboBox na DBGrid)

procedure TfGrAuditoriaVendas.CarregaFiltro;
var vLstCampos:TStringList;
begin
   try
      vLstCampos:=TStringList.Create;

      Auditoria.LstCampos.First;
      Auditoria.LstCampos.DisableControls;
     
      while not Auditoria.LstCampos.Eof do
      begin
         vLstCampos.Add(Auditoria.LstCampos.FieldByName('nome').AsString);
         Auditoria.LstCampos.Next;
      end;



      Auditoria.LstCampos.EnableControls;
      gFiltro.Columns[0].PickList:=vLstCampos;
   finally
      FreeAndNil(vLstCampos);
   end;

criação do DataSet


   FLstFiltro:=TClientDataSet.Create(nil);
   with FLstFiltro do
   begin
      FieldDefs.Add('campo', ftString, 100, False);
      CreateDataSet;
   end;


ligando DataSource com a DbGrid

dsFiltro.DataSet:=Auditoria.LstFiltro;

depois que fizer a pesquisa e carregar o Dataset LstCampos é só chamar CarregaFiltro

propriedades da DbGrid

object gFiltro: TDBGrid
  Left = 13
  Top = 33
  Width = 709
  Height = 127
  Ctl3D = False
  DataSource = dsFiltro
  DrawingStyle = gdsGradient
  Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColLines,    dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit, dgTitleClick, dgTitleHotTrack]
  ParentCtl3D = False
  TabOrder = 4
  TitleFont.Charset = DEFAULT_CHARSET
  TitleFont.Color = clWindowText
  TitleFont.Height = -11
  TitleFont.Name = 'Tahoma'
  TitleFont.Style = []
  OnCellClick = gFiltroCellClick
end


OnClic da dbgrid para abrir o combobox
procedure TfGrAuditoriaVendas.gFiltroCellClick(Column: TColumn);
begin
   if Column.PickList.Count > 0 then
   begin
      keybd_event(VK_F2,0,0,0);
      keybd_event(VK_F2,0,KEYEVENTF_KEYUP,0);
      keybd_event(VK_MENU,0,0,0);
      keybd_event(VK_DOWN,0,0,0);
      keybd_event(VK_DOWN,0,KEYEVENTF_KEYUP,0);
      keybd_event(VK_MENU,0,KEYEVENTF_KEYUP,0);
  end;
end;

Nenhum comentário: