多谢上面兄弟的支持:)<br><br>主要代码如下:<br><br>1、通过ADO连接Access库(ADOConnection->ADODateSet->DataSource->DBGridEh)<br>const<br> ConnStr: string =<br> 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s' +<br> ';Persist Security Info=False';<br>procedure TMainForm.FormCreate(Sender: TObject);<br>begin<br> ADOConnection.ConnectionString := Format(ConnStr,<br> [ExtractFileDir(Application.ExeName)+'/WinAPI.MDB']);<br> ADOConnection.Open;<br> ADODataSet.Open;<br>end;<br><br>2、查找函数<br>procedure TMainForm.EdFuncNameChange(Sender: TObject);<br>begin<br> if (EdFuncName.Text = '') or<br> (EdFuncName.Text = '%') then<br> begin<br> ADODataSet.Filtered := False;<br> Exit;<br> end;<br> ADODataSet.Filtered := False;<br> ADODataSet.Filter := '函数名 like ' +<br> QuotedStr(EdFuncName.Text + '%');<br> ADODataSet.Filtered := True;<br>end;<br><br>3、修改、查看函数详细资料<br>procedure TMainForm.DBGridEhDblClick(Sender: TObject);<br>begin<br> if ADODataSet.IsEmpty then<br> Exit;<br> { FunctionInfo 记录在另一窗体单元定义,用在Form间传递数据。请看后面}<br> FunctionInfo.Name := ADODataSet.FieldByName('函数名').AsString;<br> FunctionInfo.Explain := ADODataSet.FieldByName('函数说明').AsString;<br> FunctionInfo.Example := ADODataSet.FieldByName('详细说明').AsString;<br> FunctionInfo.SurpportWin16 := ADODataSet.FieldByName('Win16支持').AsBoolean;<br> FunctionInfo.SurpportWin9x := ADODataSet.FieldByName('Win9x支持').AsBoolean;<br> FunctionInfo.SurpportWinNT := ADODataSet.FieldByName('WinNT支持').AsBoolean;<br><br> { ShowFuncInfoForm 函数在另一窗体单元定义,请看后面}<br> if ShowFuncInfoForm(FunctionInfo) = mrOk then<br> begin<br> ADODataSet.Edit;<br> ADODataSet.FieldByName('函数名').AsString := FunctionInfo.Name;<br> ADODataSet.FieldByName('函数说明').AsString := FunctionInfo.Explain;<br> ADODataSet.FieldByName('详细说明').AsString := FunctionInfo.Example;<br> ADODataSet.FieldByName('Win16支持').AsBoolean := FunctionInfo.SurpportWin16;<br> ADODataSet.FieldByName('Win9x支持').AsBoolean := FunctionInfo.SurpportWin9x;<br> ADODataSet.FieldByName('WinNT支持').AsBoolean := FunctionInfo.SurpportWinNT;<br> ADODataSet.Post;<br> end;<br>end;<br><br>4、添加函数<br> 参考3(前面判断数据集为空那句就不要了),先清空FunctionInfo,然后 <br> if ShowFuncInfoForm(FunctionInfo) = mrOk then <br> begin<br> ADODataSet.Append;<br> ADODataSet.FieldByName('函数名').AsString := FunctionInfo.Name;<br> ....<br> ADODataSet.Post;<br> end;<br><br>5、函数信息窗体<br>unit FuncInfoFrm;<br>interface<br>type<br> TFunctionInfo = record<br> Name: string;<br> Explain: string;<br> Example: string;<br> SurpportWin16: boolean;<br> SurpportWin9x: boolean;<br> SurpportWinNT: boolean;<br> end;<br>var<br> FunctionInfo: TFunctionInfo;<br> {FuncInfoForm: TFuncInfoForm;}<br><br>function ShowFuncInfoForm(AFunctionInfo: TFunctionInfo): word;<br><br>implementation<br><br>{$R *.dfm}<br><br>{ 创建并显示窗体 }<br>function ShowFuncInfoForm(AFunctionInfo: TFunctionInfo): word;<br>var<br> FuncInfoForm: TFuncInfoForm;<br>begin<br> FuncInfoForm := TFuncInfoForm.Create(Application);<br> try<br> with FuncInfoForm do<br> begin<br> EdFuncName.Text := AFunctionInfo.Name;<br> MemoExplain.Text := AFunctionInfo.Explain;<br> CBSurppotWin16.Checked := AFunctionInfo.SurpportWin16;<br> CBSurppotWin9x.Checked := AFunctionInfo.SurpportWin9x;<br> CBSurppotWinNT.Checked := AFunctionInfo.SurpportWinNT;<br> MemoExample.Text := AFunctionInfo.Example;<br> Result := ShowModal;<br> end;<br> finally<br> FuncInfoForm.Free;<br> end;<br>end;<br><br>{ 按下确定按钮 }<br>procedure TFuncInfoForm.BtnConfirmClick(Sender: TObject);<br>begin<br> if EdFuncName.Text = '' then<br> begin<br> Application.MessageBox('函数名不能为空,请重新输入。',<br> '错误',<br> MB_ICONERROR);<br> Exit;<br> end;<br><br> FunctionInfo.Name := EdFuncName.Text;<br> FunctionInfo.Explain := MemoExplain.Text;<br> FunctionInfo.Example := MemoExample.Text;<br> FunctionInfo.SurpportWin16 := CBSurppotWin16.Checked;<br> FunctionInfo.SurpportWin9x := CBSurppotWin9x.Checked;<br> FunctionInfo.SurpportWinNT := CBSurppotWinNT.Checked;<br> ModalResult := mrOk;<br>end;<br>