我的整个程序如下
首先给dbgridEH加一个picklist功能,最后是判断输入的内容是否与记录中的内容相同,最后一段程序在dbgrideh中没有picklist功能的时候是可以实现的,但是加入picklist功能之后就不好使了   请各位高手给分析一下原因。实现判断功能的是一个网上的高手写的,我也没看明白。
procedure TForm1.FormCreate(Sender: TObject);
begin
   path:=extractfilepath(paramstr(0));
end;procedure TForm1.FormActivate(Sender: TObject);
begin
 with dm.ADOQuery1 do
 begin
 dm.ADOQuery1.Close;
 dm.ADOQuery1.SQL.Clear;
 dm.ADOQuery1.SQL.Add('select * from xue');
 dm.ADOQuery1.Open;
 dm.ADOQuery1.First;
 DBGrid1.Columns[0].PickList.Clear;
 DBGrid1.Columns[1].PickList.Clear;
 while not dm.ADOQuery1.Eof do
 begin
 DBGrid1.Columns[0].PickList.Add(dm.ADOQuery1.Fields[0].AsString);
 DBGrid1.Columns[1].PickList.Add(dm.ADOQuery1.Fields[1].AsString);
 dm.ADOQuery1.Next;
 end;
 end;
 end; 
procedure TForm1.FormShow(Sender: TObject);
begin
with dm.ADOQuery1 do
begin
dm.ADOQuery1.Close;
dm.ADOQuery1.SQL.Clear;
dm.ADOQuery1.SQL.Add('select * from xue');
open;
 DBGrid1.Columns.Items[0].FieldName:='ID';
 DBGrid1.Columns.Items[1].FieldName:='name';
 DBGrid1.Columns.Items[2].FieldName:='shijian';
 end;
end;procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
   try
 except
 on E: Exception do
     begin
      if pos('PRIMARY KEY', UpperCase(E.Message)) > 0 then
      begin
         messagebox(0,'已存在该笔记录!', '错误', 0);
         Exit;
      end     end;
 end;
end;end.