📄 remotedbtreeview.pas
字号:
if FClassEndFieldValue='true' then temp_str:='false';
if length(trim(self.FOtherMarkField))>0 then
self.FRemoteDataSet.RTSQL.Add('update '+FTableName+' set change_mark='+
'(select max(change_mark) from '+FTableName
+')+1 where '+FClassCodeFieldName+'='''+new_code+
''' and '+FClassEndFieldName+'='+temp_str+
' and '+self.FOtherMarkField+self.FOtherMarkSign+''''+
self.FOtherMarkValue+''' and delete_mark='+temp_str)
else
self.FRemoteDataSet.RTSQL.Add('update '+FTableName+' set change_mark='+
'(select max(change_mark) from '+FTableName
+')+1 where '+FClassCodeFieldName+'='''+new_code+
''' and '+FClassEndFieldName+'='+temp_str+
' and delete_mark='+temp_str);
end;
self.FRemoteDataSet.RemoteExeSQL;
if length(trim(classname))>0 then
begin
if self.Selected.AbsoluteIndex>0 then
begin
self.Items[self.Selected.AbsoluteIndex].ImageIndex:=1;
self.Items[self.Selected.AbsoluteIndex].SelectedIndex:=1;
end;
if self.FRemoteDataSet.success then self.Items.AddChild(self.Selected,classname);
self.Items[self.Selected.AbsoluteIndex+self.Selected.Count].ImageIndex:=2;
self.Items[self.Selected.AbsoluteIndex+self.Selected.count].SelectedIndex:=3;
end;
//维护class_listcode列表
class_listcode.Add(new_code);
class_listcode.Sort;
end else
begin
showmessage('已经存在资料信息,不允许增加下级栏目!');
end;
end;
end;
procedure TRemoteDbTreeView.EditClass;
var
cur_class:string;
temp_str:string;
NewClassName:string;
begin
if length(trim(FothermarkField))<>0 then
begin
if length(trim(FOtherMarkValue))=0 then
begin
Showmessage('OtherMarkValue属性不能够为空!');
exit;
end;
end;
fclasseditform.Label1.Caption:='修改栏目名称';
fclasseditform.Label2.Caption:='新的栏目名称';
fclasseditform.Edit1.Text:=self.Selected.Text;
fclasseditform.Edit2.Text:=self.Selected.Text;
fclasseditform.ShowModal;
if fclasseditform.IfEdit then
begin
newclassname:=fclasseditform.Edit2.Text;
end else exit;
//判断
if length(trim(newclassname))=0 then
begin
showmessage('名称不能够为空!');
exit;
end;
if self.Items.Count=0 then
begin
showmessage('没有任何栏目信息可以修改!');
exit;
end;
//不允许排序
self.SortType:=stnone;
cur_class:=class_listcode.Strings[self.Selected.AbsoluteIndex];
//修改数据库
self.FRemoteDataSet.Remoteclose;
self.FRemoteDataSet.RTSQL.Text:='';
if FClassEndFieldValue='1' then temp_str:='0';
if FClassEndFieldValue='true' then temp_str:='false';
if length(trim(self.FOtherMarkField))=0 then
self.FRemoteDataSet.RTSQL.Add('update '+FTableName+' set '+FClassNameFieldName+'='''+
newclassname+''' where '+FClassCodeFieldName+'='''+
cur_class+''' and '+FClassEndFieldName+'='+temp_str+' and delete_mark='+temp_str)
else
self.FRemoteDataSet.RTSQL.Add('update '+FTableName+' set '+FClassNameFieldName+'='''+
newclassname+''' where '+FClassCodeFieldName+'='''+
cur_class+''' and '+FClassEndFieldName+'='+temp_str+
' and '+self.FOtherMarkField+self.FOtherMarkSign+''''+
self.FOtherMarkValue+''' and delete_mark='+temp_str);
if self.FSynDataBase then
begin
if length(trim(self.FOtherMarkField))=0 then
self.FRemoteDataSet.RTSQL.Add('update '+FTableName+' set change_mark='+
'(select max(change_mark) from '+FTableName
+')+1 where '+FClassCodeFieldName+'='''+cur_class+
''' and '+FClassEndFieldName+'='+temp_str+' and delete_mark='+temp_str)
else
self.FRemoteDataSet.RTSQL.Add('update '+FTableName+' set change_mark='+
'(select max(change_mark) from '+FTableName
+')+1 where '+FClassCodeFieldName+'='''+cur_class+
''' and '+FClassEndFieldName+'='+temp_str+
' and '+self.FOtherMarkField+self.FOtherMarkSign+''''+
self.FOtherMarkValue+''' and delete_mark='+temp_str);
end;
self.FRemoteDataSet.RemoteExeSQL;
if self.FRemoteDataSet.success then
begin
//修改树
self.Items[self.Selected.AbsoluteIndex].Text:=newclassname;
end;
end;
procedure TRemoteDbTreeView.DeleteClass;
var
cur_index,i:integer;
cur_class:string;
temp_str:string;
begin
if self.Items.Count=0 then
begin
showmessage('没有任何栏目信息可以删除!');
exit;
end;
if length(trim(FothermarkField))<>0 then
begin
if length(trim(FOtherMarkValue))=0 then
begin
Showmessage('OtherMarkValue属性不能够为空!');
exit;
end;
end;
cur_index:=self.Selected.AbsoluteIndex;
cur_class:=class_listcode.Strings[self.Selected.AbsoluteIndex];
//判断有无详细信息,有则不允许删除
self.FRemoteDataSet.Remoteclose;
if length(trim(self.FOtherMarkField))=0 then
self.FRemoteDataSet.RTSQL.Text:='select * from '+FTableName+' where left('+FClassCodeFieldName+','+
inttostr(length(class_listcode.Strings[self.Selected.AbsoluteIndex]))+
')='''+class_listcode.Strings[self.Selected.AbsoluteIndex]+''''+
' and '+FClassEndFieldName+'='+FClassEndFieldValue
else
self.FRemoteDataSet.RTSQL.Text:='select * from '+FTableName+' where left('+FClassCodeFieldName+','+
inttostr(length(class_listcode.Strings[self.Selected.AbsoluteIndex]))+
')='''+class_listcode.Strings[self.Selected.AbsoluteIndex]+''''+
' and '+FClassEndFieldName+'='+FClassEndFieldValue+' and '+
self.FOtherMarkField+self.FOtherMarkSign+''''+self.FOtherMarkValue+'''';
self.FRemoteDataSet.RemoteOpen;
if self.FRemoteDataSet.RecordCount=0 then
begin
self.FRemoteDataSet.Remoteclose;
if length(trim(self.FOtherMarkField))>0 then
self.FRemoteDataSet.RTSQL.Text:='delete from '+FTableName+' where left('+FClassCodeFieldName+','+
inttostr(length(class_listcode.Strings[self.Selected.AbsoluteIndex]))+
')='''+class_listcode.Strings[self.Selected.AbsoluteIndex]+''' and '+
self.FOtherMarkField+'='''+self.FOtherMarkValue+''''
else
self.FRemoteDataSet.RTSQL.Text:='delete from '+FTableName+' where left('+FClassCodeFieldName+','+
inttostr(length(class_listcode.Strings[self.Selected.AbsoluteIndex]))+
')='''+class_listcode.Strings[self.Selected.AbsoluteIndex]+'''';
if self.FSynDataBase then
begin
if FClassEndFieldValue='1' then temp_str:='0';
if FClassEndFieldValue='true' then temp_str:='false';
if not self.Selected.HasChildren then
begin
if length(trim(self.FOtherMarkField))=0 then
self.FRemoteDataSet.RTSQL.Text:='update '+FTableName+' set change_mark='+
'(select max(change_mark) from '+FTableName
+')+1,delete_mark='+FClassEndFieldValue
+' where '+FClassCodeFieldName+'='''+cur_class+
''' and '+FClassEndFieldName+'='+temp_str+' and delete_mark='+temp_str
else
self.FRemoteDataSet.RTSQL.Text:='update '+FTableName+' set change_mark='+
'(select max(change_mark) from '+FTableName
+')+1,delete_mark='+FClassEndFieldValue
+' where '+FClassCodeFieldName+'='''+cur_class+
''' and '+FClassEndFieldName+'='+temp_str+
' and '+self.FOtherMarkField+self.FOtherMarkSign+''''+
self.FOtherMarkValue+''' and delete_mark='+temp_str;
end
else
begin
showmessage('请先删除下级所有栏目!');
exit;
end;
end;
self.FRemoteDataSet.RemoteExeSQL;
if self.FRemoteDataSet.success then self.Items.Delete(self.Selected);
if self.Items.Count>0 then
begin
if self.Selected.HasChildren then
begin
self.Items[self.Selected.AbsoluteIndex].ImageIndex:=1;
self.Items[self.Selected.AbsoluteIndex].SelectedIndex:=1;
end else
begin
self.Items[self.Selected.AbsoluteIndex].ImageIndex:=2;
self.Items[self.Selected.AbsoluteIndex].SelectedIndex:=3;
end;
end;
//维护class_listcode列表
for i:=class_listcode.Count-1 downto cur_index do
begin
if leftstr(class_listcode.Strings[i],length(cur_class))=cur_class then
class_listcode.Delete(i);
end;
class_listcode.Sort;
end else showmessage('存在资料信息,不允许删除本级栏目!');
end;
function TRemoteDbTreeView.GetSelectedClassCode:string;
begin
if self.Items.Count=0 then
begin
result:='';
exit;
end;
result:=class_listcode.Strings[self.Selected.AbsoluteIndex];
end;
procedure TRemoteDbTreeView.ShowClassTree;
var
class_stream:tstringstream;
cur_class:integer;
first_class:integer;
tab_str:string;
i:integer ;
temp_str:string;
begin
if length(trim(FothermarkField))<>0 then
begin
if length(trim(FOtherMarkValue))=0 then
begin
Showmessage('OtherMarkValue属性不能够为空!');
exit;
end;
if length(trim(FOtherMarkSign))=0 then
begin
Showmessage('OtherMarkSign属性不能够为空!');
exit;
end;
end;
class_list.Text:='';
class_listcode.Text:='';
if FClassEndFieldValue='1' then temp_str:='0';
if FClassEndFieldValue='true' then temp_str:='false';
self.FRemoteDataSet.Remoteclose;
if length(trim(self.FOtherMarkField))=0 then
self.FRemoteDataSet.RTSQL.Text:='select top 100000000 * from '+FTableName+' where '+
FClassEndFieldName+'='+temp_str+' and delete_mark='+temp_str+
' order by '+FClassCodeFieldName
else
self.FRemoteDataSet.RTSQL.Text:='select top 100000000 * from '+FTableName+' where '+
FClassEndFieldName+'='+temp_str+' and delete_mark='+temp_str+
' and ('+self.FOtherMarkField+self.FOtherMarkSign+''''+
self.FOtherMarkValue+''''+
' or '+self.FOtherMarkField+' is null)'+
' order by '+FClassCodeFieldName;
self.FRemoteDataSet.RemoteOpen;
if self.FRemoteDataSet.RecordCount=0 then exit;
first_class:=trunc(length(trim(self.FRemoteDataSet.FieldValues[FClassCodeFieldName]))/FClassStep);
while not self.FRemoteDataSet.Eof do
begin
cur_class:=trunc(length(trim(self.FRemoteDataSet.FieldValues[FClassCodeFieldName]))/FClassStep)-first_class+1;
tab_str:='';
for i:=1 to cur_class-1 do
begin
tab_str:=tab_str+chr(9);
end;
class_list.Add(tab_str+self.FRemoteDataSet.fieldbyname(FClassNameFieldName).AsString);
class_listcode.Add(self.FRemoteDataSet.fieldbyname(FClassCodeFieldName).AsString);
self.FRemoteDataSet.Next;
end;
class_stream:=Tstringstream.Create(class_list.Text);
self.LoadFromStream(class_stream);
for i:=0 to self.Items.Count-1 do
begin
if i=0 then
begin
self.Items[0].imageIndex:=0;
self.Items[0].SelectedIndex:=0;
self.Items[0].Expand(true);
end else
begin
if self.Items[i].HasChildren then
begin
self.Items[i].imageIndex:=1;
self.Items[i].SelectedIndex:=1;
end else
begin
self.Items[i].imageIndex:=2;
self.Items[i].SelectedIndex:=3;
end;
end;
end;
freeandnil(class_stream);
end;
procedure TRemoteDbTreeView.ShowSelectDb;
var
temp_str:string;
fieldlist:string;
i:integer;
begin
fieldlist:='';
for i:=0 to self.FSelectFields.Count-1 do
begin
fieldlist:=fieldlist+self.FSelectFields.Strings[i]+',';
end;
if length(trim(fieldlist))>0 then
fieldlist:=leftstr(fieldlist,length(fieldlist)-1)
else fieldlist:='*';
if length(trim(FothermarkField))<>0 then
begin
if length(trim(FOtherMarkValue))=0 then
begin
Showmessage('OtherMarkValue属性不能够为空!');
exit;
end;
end;
if FClassEndFieldValue='1' then temp_str:='0';
if FClassEndFieldValue='true' then temp_str:='false';
//选取节点,查询相应的内容
self.FSelectedDataSet.Remoteclose;
if length(trim(self.FOtherMarkField))=0 then
begin
self.FSelectedDataSet.RTSQL.Text:='select top 100000000 '+fieldlist+' from '+FTableName+' where left('+FClassCodeFieldName+','+
inttostr(length(class_listcode.Strings[self.Selected.AbsoluteIndex]))+
')='''+class_listcode.Strings[self.Selected.AbsoluteIndex]+''''+
' and '+FClassEndFieldName+'='+self.FClassEndFieldValue+' and '+
'delete_mark='+temp_str+' order by '+FClassCodeFieldName;
end else
begin
self.FSelectedDataSet.RTSQL.Text:='select top 100000000 '+fieldlist+' from '+FTableName+' where left('+FClassCodeFieldName+','+
inttostr(length(class_listcode.Strings[self.Selected.AbsoluteIndex]))+
')='''+class_listcode.Strings[self.Selected.AbsoluteIndex]+''''+
' and '+FClassEndFieldName+'='+self.FClassEndFieldValue+' and '+
'delete_mark='+temp_str+' and '+self.FOtherMarkField+self.FOtherMarkSign+''''+
self.FOtherMarkValue+''' order by '+FClassCodeFieldName;
end;
self.FSelectedDataSet.RemoteOpen;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -