|
FOriginalVariables.Add(TDBVariable.Create(TQuery(FDataSet).Params[i].Name, TQuery(FDataSet).Params[i].Value)); //定义参数数据变量类
SetFields;//设置字段
end;
恢复SQL
procedure TDBFilterDialog.RestoreSQL;
var
i : Integer;
begin
//恢复SQL语句
// Disable the controls while we are working
FDataSet.DisableControls;
FDataSet.Close;
// clear the existing SQL and variable declarations
// restore the original SQL and variables
SetOrdProp(FDataSet, SQLProp, Integer(FOriginalSQL));
if FDataSet is TDataSet then
for i := 0 to FOriginalVariables.Count - 1 do
TQuery(FDataSet).ParamByName(TDBVariable(FOriginalVariables[i]).VariableName).Value :=
TDBVariable(FOriginalVariables[i]).VariableValue
else
for i := 0 to FOriginalVariables.Count - 1 do
TQuery(FDataSet).ParamByName(TdBVariable(FOriginalVariables[i]).VariableName).Value :=
TDBVariable(FOriginalVariables[i]).VariableValue;
FDataSet.Open;
SetFields;
FDataSet.EnableControls;
FModifiedSQL.Assign(TStrings(GetOrdProp(FDataSet, SQLProp)));
end;
保存参数值
procedure TDBFilterDialog.SaveParamValues;
var
i : Integer;
begin
//保存参数值
if FDataSet is TDataSet then
for i := 0 to FOriginalVariables.Count - 1 do
TDBVariable(FOriginalVariables[i]).VariableValue :=
TQuery(FDataSet).ParamByName(TDBVariable(FOriginalVariables[i]).VariableName).Value
else
for i := 0 to FOriginalVariables.Count - 1 do
TDBVariable(FOriginalVariables[i]).VariableValue :=
TQuery(FDataSet).ParamByName(TDBVariable(FOriginalVariables[i]).VariableName).Value;
end;
装载过滤对话框
procedure TDBFilterDialog.Loaded;
var
i : Integer;
begin
inherited;
if Assigned(FDataSet) and not (csDesigning in ComponentState) then
begin
SetFields;
OriginalSQL.Assign(TStrings(GetOrdProp(FDataSet, SQLProp)));
for i := 0 to TQuery(FDataSet).Params.Count - 1 do
FOriginalVariables.Add(TDBVariable.Create(TQuery(FDataSet).Params[i].Name,
TQuery(FDataSet).Params[i].Value));
end;
end;
传送消息
procedure TDBFilterDialog.Notification(AComponent: TComponent;
Operation: TOperation);
begin
inherited;
if (AComponent = FDataset) and (Operation = opRemove) then
FDataset := nil;
end;
构造函数
constructor TDBFilterDialog.Create(AOwner: TComponent);
begin
//构造函数
inherited Create(AOwner);
FDialog := TMyDBFilterDialog.Create(self);
FOptions := [fdShowCaseSensitive, fdShowNonMatching];
FDefaultMatchType := fdMatchStart;
Caption := SDBFilterCaption;
FFields := TStringList.Create;
FOriginalSQL := TStringList.Create;
FModifiedSQL := TStringList.Create;
FOriginalVariables := TList.Create;
end;
析构函数
destructor TDBFilterDialog.Destroy;
var
i : Integer;
begin
FDialog.Free;
F 上一页 [1] [2] [3] 下一页 没有相关教程
|