在combobox控件中,如果有很多数值,我们先录入该数值的前两个字符就会显示出在最上面的数据,点一下三角号,会到达该数值的位置,而在dbgrideh的单元格里,用
  DBgrideh1.columns[1].picklist.Clear;
  qy4.close;
  qy4.SQL.Clear;
  qy4.SQL.Add('select distinct idname from qxgl where isnull(idname,'''')<>'''' order by idname');
  qy4.Open;
  while not qy4.eof do
    begin
      DBgrideh1.columns[1].picklist.Add(qy4.FieldByName('idname').AsString);
      qy4.Next;
    end;
加载完数据以后,在单元格中录入前两个字符也会出现整个数据,但点击三角号显示的认为最前面的数据,请问怎样设置才能显示到录入数据的位置?

解决方案 »

  1.   

    eg,fyr...var 
       FFocus: TFocus;procedure TRES_KPIMB_F.btnSB_NewClick(Sender: TObject);
    begin
      inherited;
      if FFocus= fMaster then
      begin
        cbb_orgy.SetFocus;
        qry_jd.Append;
        qry_jd.FieldByName('SUPER').AsString:=_UserName;
        qry_jd.FieldByName('UsrID').AsString:=_UserNo;
        ChangeStatusJD(sEdit);
      end else
      begin
        edt_xm.SetFocus;
        if not qry_mbop.Active then
          qry_mbop.Open;
        qry_mbop.Append;
        qry_mbop.FieldByName('JD_ID').AsString:=qry_jd.fieldbyname('AuID').AsString;
        qry_mbop.FieldByName('UsrID').AsString:=_UserNo;
        ChangeStatus(sEdit);
      end;
    end;procedure TRES_KPIMB_F.btnSB_ModiClick(Sender: TObject);
    begin
      inherited;
      if FFocus= fMaster then
      begin
        if not qry_jd.IsEmpty then
        begin
          cbb_orgy.SetFocus;
          qry_jd.Edit;
          qry_jd.FieldByName('UsrID').AsString:=_UserNo;
          qry_jd.FieldByName('dt').AsString:=FormatDateTime('yyyy/mm/dd hh:mm:ss',Now);
          ChangeStatusJD(sEdit);
        end;
      end else
      begin
        if(not qry_jd.IsEmpty)and(not qry_mbop.IsEmpty) then
        begin
          edt_xm.SetFocus;
          qry_mbop.Edit;
          qry_mbop.FieldByName('UsrID').AsString:=_UserNo;
          qry_mbop.FieldByName('dt').AsString:=FormatDateTime('yyyy/mm/dd hh:mm:ss',Now);
          ChangeStatus(sEdit);
        end;
      end;
    end;