📄 dataselect.pas
字号:
Result := TFieldLists.Create(Self,TFieldlist);
end;
procedure TDataItem.setdatatype(value:Tdatatype);
begin
FDataType:=value;
end;
procedure TDataItem.setFieldLists(value:Tstrings);
begin
FFieldLists.Assign(value);
end;
function Tfieldlists.GetOwner: TPersistent;
begin
Result :=FDataItem;
end;
procedure Tfieldlists.Update(Item: TCollectionItem);
begin
inherited;
end;
function Tfieldlists.Add: TFieldList;
begin
Result := TFieldList(inherited Add);
end;
function TDataItems.GetFromTableName(TableName:string):TDataItem;
var
i:integer;
begin
result:=nil;
for i:=0 to self.Count-1 do
begin
if self.Items[i].TableName=TableName then
begin
result:=self.Items[i];
end
end;
end;
procedure TDataItems.SynDataBase(TableName:string);
var
i:integer;
begin
for i:=0 to self.Count-1 do
begin
if self.Items[i].TableName=TableName then
begin
//先同步本地的
self.FSyn.ADOConnection:=self.Items[i].FADOConnection;
self.FSyn.RemoteHttpConnection:=self.Items[i].RemoteHttpConnection;
self.FSyn.RemoteUdpConnection:=self.Items[i].RemoteUdpConnection;
if self.Items[i].RemoteUdpConnection.IsOnLine then
if self.Items[i].DataSetStyle=dslocal then
begin
self.FSyn.SynDataBase(self.Items[i].FLocalSetup.FTableName);
end;
end
end;
end;
procedure TDataItem.setgrid;
var
i:integer;
begin
if self.FDataType=DTDatabase then
begin
//设置表格显示的表头
//首先清除原来的
try
if self.FDbGridStyle=GSDbGrid then
begin
fdataform.grid.Columns.Clear;
for i:=0 to self.FFieldLists.Count-1 do
begin
with fdataform do
begin
grid.Columns.Insert(i);
grid.Columns[i].FieldName:=self.FFieldLists.Names[i];
grid.Columns[i].Title.Caption:=copy(self.FFieldLists.ValueFromIndex[i],4,
length(self.FFieldLists.ValueFromIndex[i])-3);
grid.Columns[i].Width:=strtoint(leftstr(self.FFieldLists.ValueFromIndex[i],3));
end;
end;
end;
except
showmessage('数据格式不正确!');
end;
try
if self.FDbGridStyle=GSDbGridEh then
begin
fdataform.grid.Columns.Clear;
for i:=0 to self.FFieldLists.Count-1 do
begin
with fdataform do
begin
gridEh.Columns.Insert(i);
grideh.Columns[i].FieldName:=self.FFieldLists.Names[i];
grideh.Columns[i].Title.Caption:=copy(self.FFieldLists.ValueFromIndex[i],4,
length(self.FFieldLists.ValueFromIndex[i])-3);
grideh.Columns[i].Width:=strtoint(leftstr(self.FFieldLists.ValueFromIndex[i],3));
end;
end;
end;
except
showmessage('数据格式不正确!');
end;
end else
begin
//固定内容
//结构
self.FStaticForm.qq.Close;
self.FStaticForm.qq.FieldDefs.Clear;
self.FStaticForm.qq.FieldDefs.Add('class_name',ftstring,50,true);
self.FStaticForm.qq.CreateDataSet;
//内容
for i:=0 to self.FFieldLists.Count-1 do
begin
self.FStaticForm.qq.Append;
self.FStaticForm.qq.FieldValues['class_name']:=self.FFieldLists.Strings[i];
self.FStaticForm.qq.Post;
end;
end;
end;
procedure TDataItem.ShowModal;
var
i:integer;
begin
resultok:=false;
if self.FFormStyle=fstree then Fdataform.Width:=366 else Fdataform.Width:=666;
if self.FDataSetStyle=DSRemote then
if self.FRemoteSetup.FRemoteDataSet=nil then
begin
showmessage('请设置查询组件!');
exit;
end;
if self.FDataSetStyle=DSLocal then
if self.FLocalSetup.FLocalDataSet=nil then
begin
showmessage('请设置查询组件!');
exit;
end;
if self.FDataSetStyle=DSRemote then
begin
self.FRemoteSetup.FRemoteDataSet.Remoteclose;
self.FRemoteSetup.FSelectedDataSet.Remoteclose;
end;
if self.FDataSetStyle=DSLocal then
begin
//self.FLocalSetup.FLocalDataSet.ClearFields;
//self.FLocalSetup.FSelectedDataSet.ClearFields;
end;
if self.FDataType=DTDataBase then
begin
//设置表格
if FformStyle<>FSTree then
begin
self.setgrid;
//设置搜索信息
self.FDataForm.ComboBox1.Items.Clear;
self.FDataForm.ComboBox3.Items.Clear;
for i:=0 to self.FFieldLists.Count-1 do
begin
//搜索字段
self.FDataForm.ComboBox1.Items.Add(copy(self.FFieldLists.ValueFromIndex[i],
4,length(self.FFieldLists.ValueFromIndex[i])-3));
self.FDataForm.ComboBox3.Items.Add(self.FFieldLists.Names[i]);
end;
self.FDataForm.ComboBox1.ItemIndex:=0;
self.FDataForm.ComboBox3.ItemIndex:=0;
//设置执行查询的语句
if FformStyle<>FSGrid then
begin
if self.FDataSetStyle=DSRemote then
begin
if (LowerCase(self.RemoteSetup.FClassEndFieldValue)='true')or
(LowerCase(self.RemoteSetup.FClassEndFieldValue)='false') then
self.FDataForm.tempsql:='select * from '+self.RemoteSetup.FTableName+
' where delete_mark=false and class_end=true'
else
self.FDataForm.tempsql:='select * from '+self.RemoteSetup.FTableName+
' where delete_mark=0 and class_end=1';
self.FDataForm.rtqq:=self.RemoteSetup.FSelectedDataSet;
self.FDataForm.Adoqq:=nil;
end else
begin
if (LowerCase(self.FLocalSetup.FClassEndFieldValue)='true')or
(LowerCase(self.FLocalSetup.FClassEndFieldValue)='false') then
self.FDataForm.tempsql:='select * from '+self.FLocalSetup.FTableName+
' where delete_mark=false and class_end=true'
else
self.FDataForm.tempsql:='select * from '+self.FLocalSetup.FTableName+
' where delete_mark=0 and class_end=1';
self.FDataForm.rtqq:=nil;
self.FDataForm.Adoqq:=self.LocalSetup.FSelectedDataSet;
end;
end;
end;
//设置目录树
if self.FFormStyle<>FSGrid then
begin
if self.FDataSetStyle=DSRemote then
begin
Fdataform.rv.ClassCodeFieldName:=self.RemoteSetup.FClassCodeFieldName;
Fdataform.rv.ClassNameFieldName:=self.RemoteSetup.FClassNameFieldName;
Fdataform.rv.ClassEndFieldName:=self.RemoteSetup.FClassEndFieldName;
Fdataform.rv.ClassEndFieldValue:=self.RemoteSetup.FClassEndFieldValue;
Fdataform.rv.ClassStep:=self.RemoteSetup.FClassStep;
Fdataform.rv.OtherMarkField:=self.RemoteSetup.FOtherMarkField;
Fdataform.rv.OtherMarkValue:=self.RemoteSetup.FOtherMarkValue;
Fdataform.rv.OtherMarkSign:=self.RemoteSetup.FOtherMarkSign;
Fdataform.rv.RemoteDataSet:=self.RemoteSetup.FRemoteDataSet;
Fdataform.rv.SelectedDataSet:=self.RemoteSetup.FSelectedDataSet;
Fdataform.rv.TableName:=self.RemoteSetup.FTableName;
fdataform.rv.ShowClassTree;
fdataform.DataSource1.DataSet:=self.FRemoteSetup.FSelectedDataSet;
end;
if self.FDataSetStyle=DSLocal then
begin
Fdataform.lv.ClassCodeFieldName:=self.LocalSetup.FClassCodeFieldName;
Fdataform.lv.ClassNameFieldName:=self.LocalSetup.FClassNameFieldName;
Fdataform.lv.ClassEndFieldName:=self.LocalSetup.FClassEndFieldName;
Fdataform.lv.ClassEndFieldValue:=self.LocalSetup.FClassEndFieldValue;
Fdataform.lv.ClassStep:=self.LocalSetup.FClassStep;
Fdataform.lv.OtherMarkField:=self.LocalSetup.FOtherMarkField;
Fdataform.lv.OtherMarkValue:=self.LocalSetup.FOtherMarkValue;
Fdataform.lv.OtherMarkSign:=self.LocalSetup.FOtherMarkSign;
Fdataform.lv.LocalDataSet:=self.LocalSetup.FLocalDataSet;
Fdataform.lv.SelectedDataSet:=self.LocalSetup.FSelectedDataSet;
Fdataform.lv.TableName:=self.LocalSetup.FTableName;
fdataform.lv.ShowClassTree;
fdataform.DataSource1.DataSet:=self.FLocalSetup.FSelectedDataSet;
end;
end;
//是否查询表格内容
if self.FFormStyle=FSTree then FdataForm.FShowSelectDb:=false;
if self.FFormStyle=FSTreeGrid then FdataForm.FShowSelectDb:=true;
//如果只有表格,则要执行sql语句
if self.FFormStyle=FSGrid then
begin
if self.FDataSetStyle=DSRemote then
begin
Fdataform.DataSource1.DataSet:=self.RemoteSetup.FSelectedDataSet;
self.RemoteSetup.FSelectedDataSet.Remoteclose;
self.FRemoteSetup.FSelectedDataSet.RTSQL.Assign(self.FSQL);
self.FRemoteSetup.FSelectedDataSet.RemoteOpen;
end;
if self.FDataSetStyle=DSLocal then
begin
Fdataform.DataSource1.DataSet:=self.FLocalSetup.FSelectedDataSet;
self.FLocalSetup.FSelectedDataSet.Close;
self.FLocalSetup.FSelectedDataSet.SQL.Assign(self.FSQL);
self.FLocalSetup.FSelectedDataSet.Open;
end;
end;
if Fdataform.ShowModal=mrok then
if self.FFormStyle=FSTree then
begin
if self.FDataSetStyle=DSRemote then
begin
if Fdataform.rv.Selected.HasChildren then
begin
//self.CodeFieldValue:='';
//self.NameFieldvalue:='';
showmessage('请选择末级分类!');
end else
begin
//self.CodeFieldValue:=Fdataform.rv.GetSelectedClassCode;
self.CodeFieldValue:=Fdataform.rv.GetSelectedClassCode;
self.NameFieldvalue:=fdataform.rv.Selected.Text;
end;
end else
begin
self.CodeFieldValue:=Fdataform.lv.GetSelectedClassCode;
self.NameFieldvalue:=fdataform.lv.Selected.Text;
end;
end else
begin
if self.FDataSetStyle=DSRemote then
begin
if not self.FRemoteSetup.FSelectedDataSet.Active then exit;
if self.FRemoteSetup.FSelectedDataSet.RecordCount=0 then exit;
self.CodeFieldValue:=self.FRemoteSetup.FSelectedDataSet.fieldbyname(self.CodeField).AsString;
self.NameFieldvalue:=self.FRemoteSetup.FSelectedDataSet.fieldbyname(self.NameField).AsString;
end else
begin
if not self.FLocalSetup.FSelectedDataSet.Active then exit;
if self.FLocalSetup.FSelectedDataSet.RecordCount=0 then exit;
self.CodeFieldValue:=self.FLocalSetup.FSelectedDataSet.fieldbyname(self.CodeField).AsString;
self.NameFieldvalue:=self.FLocalSetup.FSelectedDataSet.fieldbyname(self.NameField).AsString;
end;
end;
resultok:=self.FDataForm.resultok;
end else
begin
//固定文本方式
self.setgrid;
self.FStaticForm.ShowModal;
self.CodeFieldValue:='';
self.NameFieldvalue:=self.FStaticForm.qq.fieldbyname('class_name').AsString;
resultok:=self.FStaticForm.resultok;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -