📄 unit_main.pas
字号:
Reg.Free;
TmpStrList := TStringList.Create;
// TmpStrList.Sorted := True;
Session.GetAliasNames(TmpStrList);
TmpStrList.Sort;
// AddSubStrings(TreeViewEn1.Items[0],TmpStrList);
if TmpStrList.Count>0 then
begin
TmpNode := TreeView1.Items.AddChildObjectFirst(TreeView1.Items.Item[0],TmpStrList.Strings[0],0);
TreeView1.Items.AddChildObjectFirst(TmpNode,'Tables',0);
For i:= 1 to TmpStrList.Count-1 do
begin
TmpNode := TreeView1.Items.AddChildObject(TreeView1.Items[0],TmpStrList.Strings[i],0);
TreeView1.Items.AddChildObjectFirst(TmpNode,'Tables',0);
end;
end;
show;
end;
procedure TFormMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
I:integer;
Reg : TInifile;
begin
For I:=0 to 31 do if HistorySql[i]<>nil then HistorySql[i].Free;
if TreeView1.Tag <> -1 then
if MessageDlg(#13#10+'需要保存所做的编辑吗?',mtInformation,[mbYes,mbNo],0)=mrYes
then Apply1Click(nil);
TmpStrList.Free;
BBStream.Free;
Reg:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'UsSearch0.ini');
Reg.WriteInteger('SavedSize','State',Integer(Windowstate));
if WindowState = wsNormal then
begin
Reg.WriteInteger('SavedSize','Left',Left);
Reg.WriteInteger('SavedSize','Top',Top);
Reg.WriteInteger('SavedSize','Width',Width);
Reg.WriteInteger('SavedSize','Height',Height);
end;
end;
procedure TFormMain.N8Click(Sender: TObject);
var
Reg : TIniFile;
Str:String;
begin
if GetSelectedDir('',Str) then
try
// Str:=ExtractFilePath(ParamStr(0))+'UsZSGLSearch.ini';
Reg:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'UsSearch0.ini');
Reg.WriteString('SaveDir','Dir1',Str);
OpenDialog1.InitialDir:=Str;
SaveDialog1.InitialDir:=Str;
finally
reg.Free;
end;
end;
procedure TFormMain.N5Click(Sender: TObject);
begin
RichEdit1.CutToClipboard;
end;
procedure TFormMain.N6Click(Sender: TObject);
begin
RichEdit1.CopyToClipboard;
end;
procedure TFormMain.N7Click(Sender: TObject);
begin
RichEdit1.SelText := ClipBoard.Astext;
end;
procedure TFormMain.PopupMenu1Popup(Sender: TObject);
begin
if PopupMenu1.Tag =0 then
begin
N5.Enabled:=RichEdit1.SelLength>0;
N6.Enabled:=N5.Enabled;
N7.Enabled:=Clipboard.AsText<>'';
end
else begin
N5.Enabled:=RichEdit1.SelLength>0;
N6.Enabled:=N5.Enabled;
N7.Enabled:=Clipboard.AsText<>'';
end;
N1.Enabled:=RichEdit1.Text<>'';
end;
procedure TFormMain.TreeView1GetImageIndex(Sender: TObject;
Node: TTreeNode);
var
Tmp_Str: String;
begin
// Tmp_Str := TreeViewEn1.GetPath(Node);
node.ImageIndex := node.Level+1;
end;
const
FieldTypeStr :array[0..35]of string = ('Unknown','String','Smallint','Integer','Word','Boolean','Float','Currency','BCD','Date','Time','DateTime','Bytes','VarBytes','AutoInc','Blob','Memo','Graphic','FmtMemo','ParadoxOle','DBaseOle','TypedBinary','Cursor','FixedChar','WideString','Largeint','ADT','Array','Reference','DataSet','OraBlob','OraClob','Variant','Interface','IDispatch','Guid');
procedure TFormMain.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
i : integer;
procedure ChangeDatabase;
var
TD :TDataBase;
begin
// if CurrAliasNode.Data=Pointer(0) then Exit;
if Query1.Active then Query1.Close;
if Assigned(CurrAliasNode) and Assigned(OldAliasNode) then
begin
if OldAliasNode.Data<>Pointer(0) then begin
TD := Session.FindDatabase(OldAliasNode.Text);
if TD<>nil then TD.Close;
Query1.DatabaseName := CurrAliasNode.Text;
try
Session.OpenDatabase(OldAliasNode.Text);
except
with OldAliasNode do
if Integer(Data)=1 then
begin
Collapse(False);
Item[0].DeleteChildren;
Data := 0;
Item[0].Data := 0;
end;
end;
end else Query1.DatabaseName := CurrAliasNode.Text;
end
else if Assigned(CurrAliasNode) then Query1.DatabaseName := CurrAliasNode.Text
else Query1.DatabaseName := '';
end;
begin
TmpNode := GetAliasNode(Node);
if CurrAliasNode<>TmpNode then
begin
OldAliasNode := CurrAliasNode;
CurrAliasNode := TmpNode;
ChangeDatabase;
end;
if (Node.Level<4) and Table1.Active then Table1.Close;
case node.Level of
0: begin
PageControl1.Pages[0].TabVisible := False;
PageControl1.Pages[1].TabVisible := False;
PageControl1.Pages[2].TabVisible := False;
// DBNavigator1.DataSource := nil;
end;
1: begin
PageControl1.Pages[0].TabVisible := True;
PageControl1.Pages[1].TabVisible := False;
PageControl1.Pages[2].TabVisible := Node.Data=Pointer(1);
// if not PageControl1.Pages[2].TabVisible then
// DBNavigator1.DataSource := nil;
ShapeEx1.ActiveArea.Items[0,0] := 'TYPE';
ShapeEx1.ActiveArea.Items[0,1] := Session.GetAliasDriverName(Node.Text);
Session.GetAliasParams(Node.Text,TmpStrList);
TmpStrList.Sort;
ShapeEx1.ActiveArea.RowCount := TmpStrList.Count+1;
ShapeEx1.ActiveArea.ColCount := 2;
ShapeEx1.ActiveArea.ColWidth[1] := 300;
For i:= 0 to TmpStrList.Count-1 do
begin
ShapeEx1.ActiveArea.Items[i+1,0] := TmpStrList.Names[i];
ShapeEx1.ActiveArea.Items[i+1,1] := TmpStrList.Values[TmpStrList.Names[i]];
end;
ShapeEx1.ShowBtnType:=sbtNone;
ShapeEx1.ShowButton;
end;
2: begin
PageControl1.Pages[0].TabVisible := False;
PageControl1.Pages[1].TabVisible := False;
PageControl1.Pages[2].TabVisible := True;
// DBNavigator1.DataSource := nil;
end;
3: begin
PageControl1.Pages[0].TabVisible := False;
PageControl1.Pages[1].TabVisible := True;
PageControl1.Pages[2].TabVisible := True;
if Node.Parent.Index = 0 then
begin
//Table1.Close;
if Table1.Filtered then
begin
Table1.Filter := '';
Table1.Filtered := False;
end;
Table1.DatabaseName := Node.Parent.Parent.Text;
Table1.TableName := Node.Text;
Table1.Open;
if TreeView1.Selected.Data=Pointer(0) then
begin
TreeView1.Items.AddChildFirst( TreeView1.Selected,'Fields');
TreeView1.Items.AddChild(TreeView1.Selected,'Indexes');
TreeView1.Selected.Data := Pointer(1);
end;
// TreeView1.Selected.Expand;
end;
{ ELSE begin
DataSource1.DataSet := StoredProc1;
StoredProc1.Close;
StoredProc1.DatabaseName := Node.Parent.Parent.Text;
StoredProc1.StoredProcName := Node.Text;
StoredProc1.Open;
StoredProc1.GetResults;
end; }
end;
4: begin
PageControl1.Pages[0].TabVisible := True;
PageControl1.Pages[1].TabVisible := False;
PageControl1.Pages[2].TabVisible := False;
if not Table1.Active then
begin
if Table1.Filtered then
begin
Table1.Filter := '';
Table1.Filtered := False;
end;
Table1.DatabaseName := Node.Parent.Parent.Parent.Text;
Table1.TableName := Node.Parent.Text;
Table1.Open;
end;
if TreeView1.Selected.Text='Fields' then
begin
ShapeEx1.ActiveArea.RowCount := Table1.FieldDefs.Count+1;
ShapeEx1.ActiveArea.ColCount := 4;
ShapeEx1.ActiveArea.Items[0,0] := 'Name(名称)';
ShapeEx1.ActiveArea.Items[0,1] := 'Type(类型)';
ShapeEx1.ActiveArea.Items[0,2] := 'Size(尺寸)';
ShapeEx1.ActiveArea.Items[0,3] := 'Real Size(实尺寸)';
ShapeEx1.ActiveArea.ColWidth[1] := 150;
ShapeEx1.ActiveArea.ColWidth[1] := 100;
ShapeEx1.ActiveArea.ColWidth[3] := 120;
with Table1.FieldDefs do
For i := 0 to Count-1 do
begin
ShapeEx1.ActiveArea.Items[i+1,0] := Items[i].Name;
ShapeEx1.ActiveArea.Items[i+1,1] := FieldTypeStr[Ord(Items[i].DataType)];
ShapeEx1.ActiveArea.Items[i+1,2] := IntToStr(items[i].Size);
ShapeEx1.ActiveArea.Items[i+1,3] := IntToStr(Table1.Fields[i].DataSize);
end;
end
else if TreeView1.Selected.Text='Indexes' then
begin
Table1.IndexDefs.Update;
ShapeEx1.ActiveArea.RowCount := Table1.IndexDefs.Count+1;
ShapeEx1.ActiveArea.ColCount := 4;
ShapeEx1.ActiveArea.Items[0,0] := 'Name(名称)';
ShapeEx1.ActiveArea.Items[0,1] := 'Index Fields(索引域)';
ShapeEx1.ActiveArea.Items[0,2] := 'Primary Key(主键)';
ShapeEx1.ActiveArea.Items[0,3] := 'Unique(唯一)';
ShapeEx1.ActiveArea.ColWidth[1] := 150;
ShapeEx1.ActiveArea.ColWidth[1] := 100;
ShapeEx1.ActiveArea.ColWidth[3] := 100;
with Table1.IndexDefs do
For i := 0 to Count-1 do
begin
ShapeEx1.ActiveArea.Items[i+1,0] := Items[i].Name;
ShapeEx1.ActiveArea.Items[i+1,1] := Items[i].Fields;
if ixPrimary in Items[i].Options then
ShapeEx1.ActiveArea.Items[i+1,2] := 'Yes' else ShapeEx1.ActiveArea.Items[i+1,2]:='No';
if ixUnique in Items[i].Options then
ShapeEx1.ActiveArea.Items[i+1,3] := 'Yes' else ShapeEx1.ActiveArea.Items[i+1,3]:='No';
end;
end;
end;
end;
PageControl1Change(nil); // if Assigned(PageControl1) then
end;
procedure TFormMain.TreeView1Expanding(Sender: TObject; Node: TTreeNode;
var AllowExpansion: Boolean);
var
i:integer;
TD :TDataBase;
NeedExtName : Boolean;
//TmpNode : TTreeNode;
begin
if TreeView1.Tag <> -1 then
begin
i := MsgBox2('您已经修改了配置参数;'+#13#10+'您需要确认或取消修改吗?'+#13#10+'“是”确认修改;“否”返回;“取消”取消修改。',MB_YESNOCANCEL or MB_ICONQUESTION);
case i of
ID_YES: Apply1Click(nil);
ID_NO: ;
ID_CANCEL: Cancerl1Click(nil);
end;
if i<>ID_NO then TreeView1.Selected.Expand(False);
AllowExpansion := False;
Exit;
end;
case Node.Level of
1: if Integer(Node.Data)=0 then begin
{ TRY
Session.FindDatabase(Node.Text).Connected := TRUE;
AllowExpansion := TRUE;
Except
AllowExpansion := false;
end; }
// if Node.Count=0 then TreeViewEn1.Items.AddChildObjectFirst(Node,'Tables',0);
if (Node.Item[0].Data=Pointer(0)) and (Node.Item[0].Count=0) then TreeView1.Items.AddChildObjectFirst(Node.Item[0],'X',Pointer(10));
// if Session.GetAliasDriverName(Node.Text)<>'STANDARD' then
try
Session.OpenDatabase(Node.Text);
Node.Data := Pointer(1);
PageControl1.Pages[2].TabVisible := True;
// TmpNode := TreeView1.Items.AddChildObject(Node,'StoredProcs',Pointer(0));
// TreeView1.Items.AddChildObjectFirst(TmpNode,'X',Pointer(10));
except
AllowExpansion := False;
end;
// else Session.OpenDatabase(Node.Text);
// if AllowExpansion then Node.Data := Pointer(1);
// PageControl1.Pages[2].TabVisible := AllowExpansion;
end;
2: if (Node.Count=1) and (Integer(Node.Data)=0) then
if Node.Index = 0 then
begin
Node.item[0].Delete;
Node.Data := Pointer(1);
TmpStrList.Clear;
TmpStrList.BeginUpdate;
NeedExtName := not Session.FindDatabase(Node.Parent.Text).IsSQLBased;
TmpStrList.EndUpdate;
Session.GetTableNames(Node.Parent.Text,'',NeedExtName,False,TmpStrList);
if TmpStrList.Count>0 then
begin
TmpStrList.Sort;
AddSubStrings(Node,TmpStrList);
end
else AllowExpansion := False;
end;{
else begin
Node.item[0].Delete;
Node.Data := Pointer(1);
TmpStrList.Clear;
TmpStrList.BeginUpdate;
Session.GetStoredProcNames(Node.Parent.Text,TmpStrList);
TmpStrList.EndUpdate;
if TmpStrList.Count>0 then
begin
TmpStrList.Sort;
AddSubStrings(Node,TmpStrList);
end
else AllowExpansion := False;
end; }
end;
end;
procedure TFormMain.AddSubStrings(Node: TTreeNode; StrList: TStrings);
var
TmpNode : TTreeNode;
i,j,Low:integer;
begin
if StrList.Count>0 then
begin
TreeView1.Items.BeginUpdate;
j := Node.Count;
if j=0 then
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -