(切记,GRID 和 DateTimePicker   不可放在GroupBox 中,唉,为了这个问题,俺找了三天的资料)

在窗体上放一控件:DateTimePicker  
  visible   设为:   false;  
   
  DBGrid1的DrawColumnCell事件  
   
  procedure   TForm1.DBGrid1DrawColumnCell(Sender:   TObject;   const   Rect:   TRect;  
      DataCol:   Integer;   Column:   TColumn;   State:   TGridDrawState);  
  begin  
      if   (gdFocused   in   State)   then  
      begin  
          if   (Column.Field.FieldName   =   'dt(你的日期时间字段)')   then  
          with   DateTimePicker   do  
          begin  
              Left   :=   Rect.Left   +   DBGrid1.Left   +   1;  
              Top   :=   Rect.Top   +   DBGrid1.Top   +   1;  
              Width   :=   Rect.Right   -   Rect.Left   +   2;  
              Width   :=   Rect.Right   -   Rect.Left   +   2;  
              Height   :=   Rect.Bottom   -   Rect.Top   +   2;  
   
              Visible   :=   True;  
          end;  
      end  
   
  end;  
   
   
  其他:  
  procedure   TForm1.DBGrid1CellClick(Column:   TColumn);  
  begin  
      if   DBGrid1.SelectedField.FieldName   =   'dt'   then  
            DateTimePicker.DateTime   :=   DBGrid1.DataSource.DataSet.FieldValues['dt'];  
          DateTimePicker.Visible   :=   False  
   
  end;  
   
  procedure   TForm1.DBGrid1KeyPress(Sender:   TObject;   var   Key:   Char);  
  begin  
      if   (key   =   Chr(9))   then   Exit;  
   
      if   (DBGrid1.SelectedField.FieldName   =   'dt')   then  
      begin  
          DateTimePicker.SetFocus;  
          SendMessage(DateTimePicker.Handle,   WM_Char,   word(Key),   0);  
      end  
   
  end;  
   
  procedure   TForm1.DateTimePickerChange(Sender:   TObject);  
  begin  
      if   DBGrid1.DataSource.State   in   [dsEdit,   dsInsert]   then  
          ADOTable1dt.Value   :=   DateTimePicker.DateTime;  
   
  end;  
   
  procedure   TForm1.DateTimePickerDropDown(Sender:   TObject);  
  begin  
  DBGrid1.DataSource.Edit;  
   
  end;

posted on 2008-09-22 17:45  yxbsmx  阅读(319)  评论(0编辑  收藏  举报