如图所示2009-1-31 在数据库为 varchar(50),不是日期格式,如何使在点击日期这两行的时候过滤参数这列是日期格式,不是这两行是其他格式,
 if ADOQuery2.FieldByName('F_Type').AsString='开始时间' then
 tnumericfield(adoquery2.fieldbyname('F_Type')).DisplayFormat:='hh:mm';这样不行呀,还有一种办法是,将DateTimePicker1控件显示在上面,我希望还是格式化数据最好

解决方案 »

  1.   

    本帖最后由 bdmh 于 2012-08-02 12:56:17 编辑
      

  2.   


    我就问怎么处理呀procedure TFrm_Analysis.DataSource2DataChange(Sender: TObject;
      Field: TField);
    begin
        if ADOQuery2.FieldByName('F_Type').AsString='开始时间' then
     tnumericfield(adoquery2.fieldbyname('F_Type')).DisplayFormat:='hh:mm';
        if ADOQuery2.FieldByName('F_Type').AsString='往来单位' then
    dbgrideh2.Columns[1].ButtonStyle:=cbsEllipsis
    else
    begin
        if ADOQuery2.FieldByName('F_Type').AsString='经手人' then
    dbgrideh2.Columns[1].ButtonStyle:=cbsDropDown
    else
     dbgrideh2.Columns[1].ButtonStyle:=cbsAuto;
    end;
    end;就是时间不知道怎么处理呀,其他都可以了
      

  3.   

    TDateTimefield((adoquery2.fieldbyname('F_Type')).displayformat:= 'yyyy-mm-dd '; 
    也不行呀,哪错了
      

  4.   

    感觉不是displayformat显示的问题,而是varchar转换为datetime才行,这样地会跳出这样的日期控件让你选择 
      

  5.   

    数据类型是字符类型,DisplayFormat:='hh:mm';是没用了
    改成日期类型吧
      

  6.   

    为什么搞个Varchar,不是找麻烦么
      

  7.   


    为什么搞个Varchar,不是找麻烦么
     
    没办法中如果用datetime的话,那么下面的商品供应商部门就不适合呀,有更好的办法没
      

  8.   


    我现在的处理方法是
    procedure TFrm_BillList.DBGridEh2DrawColumnCell(Sender: TObject;
      const Rect: TRect; DataCol: Integer; Column: TColumnEh;
      State: TGridDrawState);
    begin
       if   (gdfocused in state) and (column.FieldName= 'F_Value') and (edit1.Text='1') then
            begin
                DateTimePicker1.Visible:=true;
                DateTimePicker1.SetBounds(rect.Left+dbgrideh2.Left+1,rect.Top+dbgrideh2.Top+1,
                rect.Right - rect.Left,rect.Bottom-rect.Top);
            end;          if (gdfocused in state) and (column.FieldName= 'F_Value') and (edit1.Text='2') then
            begin
                DateTimePicker2.Visible:=true;
                DateTimePicker2.SetBounds(rect.Left+dbgrideh2.Left+1,rect.Top+dbgrideh2.Top+1,
                rect.Right-rect.Left,rect.Bottom-rect.Top);
            end;end;
      

  9.   

    if   (gdfocused in state) and (column.FieldName= 'F_Value') and (edit1.Text='1') then
            begin
                DateTimePicker1.Visible:=true;
                DateTimePicker1.SetBounds(rect.Left+dbgrideh2.Left+1,rect.Top+dbgrideh2.Top+1,
                rect.Right - rect.Left,rect.Bottom-rect.Top);
            end;          if (gdfocused in state) and (column.FieldName= 'F_Value') and (edit1.Text='2') then
            begin
                DateTimePicker2.Visible:=true;
                DateTimePicker2.SetBounds(rect.Left+dbgrideh2.Left+1,rect.Top+dbgrideh2.Top+1,
                rect.Right-rect.Left,rect.Bottom-rect.Top);
            end;