📄 di_main.pas
字号:
'';
Caption := Trim(DI_DfmDataModule1.TTableADOQuery.Fields[i].DisplayLabel) +
' :';
Width := 100;
Left := (i mod 2) * 350 + 15;
Top := (i div 2) * 30 + 22;
end;
DI_DfmMain_ActiveLabelStrings.AddObject(Mylabel.Name, MyLabel);
MyDBEdit := TDBEdit.Create(ScrollBox1);
with MyDBEdit do
begin
Parent := ScrollBox1;
Name := 'Edit' + '' + IntToStr(DI_DfmMain_ActiveComponentNumber + i) + '';
width := 200;
Left := (i mod 2) * 350 + 125;
Top := (i div 2) * 30 + 20;
Text := DI_DfmDataModule1.TTableADOQuery.Fields[i].AsString;
end;
DI_DfmMain_ActiveEditStrings.AddObject(MyDBEdit.Name, MyDBEdit);
MyDBEdit.DataSource := DI_DfmDataModule1.TTableDataSource;
MyDBEdit.DataField := DI_DfmDataModule1.TTableADOQuery.Fields[i].FieldName;
if
ReadOnlyFieldNames.IndexOf(DI_DfmDataModule1.TTableADOQuery.Fields[i].FieldName) <> -1 then
MyDBEdit.ReadOnly := True;
MyDBEdit.OnDblClick := TDBEditDoubleClick;
MyDBEdit.OnChange := TDBEditOnChange;
MyDBEdit.OnKeyDown := TDBEditKeyDown;
MyDBEdit.PopupMenu := nil;
end;
DI_DfmMain_ActiveComponentNumber := DI_DfmMain_ActiveComponentNumber + i;
DI_DfmMain_TemporaryComponentNumber := i;
DI_DfmMain_TemporaryDatabaseName := '';
DI_DfmMain_TemporaryDatabaseName :=
PNodeInformation(TreeView1.Selected.Parent.Data)^.EnglishName;
DI_DfmMain_TemporaryTableName := '';
DI_DfmMain_TemporaryTableName := 'T' +
PNodeInformation(TreeView1.Selected.Data)^.EnglishName;
DI_DfmDataModule1.TTableADOQuery.AfterScroll := TTableADOQueryScroll;
StatusBar1.Panels[0].Text := ' 当前表为 ' + '<' +
GetTableCName(Copy(DI_DfmMain_TemporaryTableName, 2,
Length(DI_DfmMain_TemporaryTableName) - 1)) + '>';
StatusBar1.Panels[1].Text := ' 共有 ' +
IntToStr(DI_DfmDataModule1.TTableADOQuery.RecordCount) + ' 条记录';
StatusBar1.Panels[2].Text := ' 现在位于第 ' +
IntToStr(DI_DfmDataModule1.TTableADOQuery.RecNo) + ' 条';
NoteBook1.ActivePage := 'DBEditPage';
end;
//关闭打开的表格================================================================
procedure TDI_DfmMain.CloseTableToolButtonClick(Sender: TObject);
var
i: integer;
begin
if TreeView1.Items.Count = 0 then
Exit;
if DI_DfmDataModule1.TTableADOQuery.Active = False then
Exit;
if DI_DfmMain_ActiveMemoNumber <> 0 then
begin
ShowMessage('存在未关闭的Memo字段显示窗口,请先关闭该窗口!');
Exit;
end;
if DI_DfmMain_ActiveBlobNumber <> 0 then
begin
ShowMessage('存在未关闭的Blob字段显示窗口,请先关闭该窗口!');
Exit;
end;
if DI_DfmMain_ActiveComponentNumber <> 0 then
begin
for i := 1 to DI_DfmMain_TemporaryComponentNumber do
begin
TDBEdit(DI_DfmMain_ActiveEditStrings.Objects[DI_DfmMain_ActiveComponentNumber - i]).Visible := False;
TDBEdit(DI_DfmMain_ActiveEditStrings.Objects[DI_DfmMain_ActiveComponentNumber - i]).DataField := '';
TLabel(DI_DfmMain_ActiveLabelStrings.Objects[DI_DfmMain_ActiveComponentNumber - i]).visible := False;
end;
end;
DI_DfmDataModule1.TTableADOQuery.Close;
DBGrid1.Visible := False;
DBGrid2.Visible := False;
Splitter2.Visible := False;
StatusBar1.Panels[0].Text := '';
StatusBar1.Panels[1].Text := '';
StatusBar1.Panels[2].Text := '';
NoteBook1.PageIndex := 1;
end;
//创建新表======================================================================
procedure TDI_DfmMain.CreateTableToolButtonClick(Sender: TObject);
var
DatabaseName: string;
DI_DfmNewTableName: TDI_DfmNewTableName;
MyNewTTableNameNode: TTreeNode;
MyNodeInformation: PNodeInformation;
begin
if TreeView1.Items.Count = 0 then
Exit;
if ((TreeView1.Selected = nil) or (TreeView1.Selected.Level = 0) or
(TreeView1.Selected.Level = 2)) then
Exit;
DatabaseName := PNodeInformation(TreeView1.Selected.Data)^.EnglishName;
DI_DfmNewTableName := TDI_DfmNewTableName.Create(Self, DatabaseName,
DI_DfmMain_ServerName);
DI_DfmNewTableName.ShowModal;
if DI_DfmNewTableName.CreateTableSuceed then
begin
New(MyNodeInformation);
MyNodeInformation^.EnglishName := DI_DfmNewTableName.NewTableBackName;
MyNodeInformation^.ChineseName := DI_DfmNewTableName.NewTableBackName;
MyNewTTableNameNode := TreeView1.Items.AddChildObject(TreeView1.Selected,
MyNodeInformation^.ChineseName, MyNodeInformation);
MyNewTTableNameNode.ImageIndex := 14;
MyNewTTableNameNode.SelectedIndex := 14;
DI_DfmNewTableName.Free;
MyNewTTableNameNode.Selected := True;
if MessageDlg('是否现在就编辑此表?', mtConfirmation, [mbYes, mbNo], 0) =
mrNo then
Exit;
OpenTableToolButtonClick(Self);
end;
end;
//删除表格======================================================================
procedure TDI_DfmMain.DeleteToolButtonClick(Sender: TObject);
var
DatabaseName: string;
TemporaryTableNames: TStrings;
DropTableName: string;
begin
if TreeView1.Items.Count = 0 then
Exit;
if ((TreeView1.Selected = nil) or (TreeView1.Selected.Level = 0) or
(TreeView1.Selected.Level = 1)) then
Exit;
DatabaseName := PNodeInformation(TreeView1.Selected.Parent.Data)^.EnglishName;
DropTableName := PNodeInformation(TreeView1.Selected.Data)^.EnglishName;
if MessageDlg('确认删除文件<' + DropTableName + '>吗?', mtConfirmation,
[mbYes, mbNo], 0) = mrNo then
Exit;
if ((DropTableName = Copy(DI_DfmMain_TemporaryTableName, 2,
Length(DI_DfmMain_TemporaryTableName) - 1)) and
(DI_DfmDataModule1.TTableADOQuery.Active = True)) then
begin
ShowMessage('该表已被打开,请先关闭!');
Exit;
end;
TemporaryTableNames := TStringList.Create;
DI_DfmDataModule1.CreateTableADOConnection.Close;
DI_DfmDataModule1.CreateTableADOConnection.ConnectionString :=
'Provider=SQLOLEDB.1;Persist Security Info=False;Password=' +
PublicUnit.DBPass
+ ';User ID=' + PublicUnit.DBUser + ';Initial Catalog=' + PublicUnit.DbName
+
';Data Source=' + PublicUnit.ServerName;
DI_DfmDataModule1.CreateTableADOConnection.GetTableNames(TemporaryTableNames,
False);
if TemporaryTableNames.IndexOf('D' + DropTableName) <> -1 then
begin
with DI_DfmDataModule1.DropTableADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Drop Table ' + 'D' + DropTableName);
try
ExecSQL;
except
ShowMessage('error');
Exit;
end;
end;
end;
TemporaryTableNames.Free;
with DI_DfmDataModule1.DropTableADOQuery do
begin
Close;
Sql.Clear;
Sql.Add('Drop Table ' + 'T' + DropTableName);
try
ExecSQL;
except
ShowMessage('error');
Exit;
end;
end;
DI_DfmDataModule1.DropTableADOQuery.Close;
DI_DfmDataModule1.CreateTableADOConnection.Close;
TreeView1.Selected.Delete;
end;
//关于按钮事件==================================================================
procedure TDI_DfmMain.ToolButton7Click(Sender: TObject);
var
FrmDI_KHZL: TFrmDI_KHZL;
begin
Application.CreateForm(TFrmDI_KHZL, FrmDI_KHZL);
FrmDI_KHZL.ShowModal;
FrmDI_KHZL.Free;
end;
//字段拷贝======================================================================
procedure TDI_DfmMain.FieldCopyToolButtonClick(Sender: TObject);
var
DI_DfmFieldCopy: TDI_DfmFieldCopy;
TemporaryFieldValue: variant;
CurrentRecordNumber, DestinationFirstRecordNumber,
DestinationLastRecordNumber: integer;
begin
if (DBGrid1.SelectedField = nil) or (DBGrid1.Focused = False) then
Exit;
TemporaryFieldValue := DBGrid1.SelectedField.AsVariant;
DI_DfmFieldCopy := TDI_DfmFieldCopy.Create(Self);
DI_DfmFieldCopy.ShowModal;
if not DI_DfmFieldCopy.ConfirmCopy then
begin
DI_DfmFieldCopy.Free;
Exit;
end;
//复制到整个表=============================================
if DI_DfmFieldCopy.FieldCopyMode = 'CopyToWholeTable' then
begin
DI_DfmDataModule1.TTableADOQuery.DisableControls;
CurrentRecordNumber := DI_DfmDataModule1.TTableADOQuery.RecNo;
DI_DfmDataModule1.TTableADOQuery.First;
while not DI_DfmDataModule1.TTableADOQuery.Eof do
begin
DI_DfmDataModule1.TTableADOQuery.Edit;
DI_DfmDataModule1.TTableADOQuery.Fields[DBGrid1.SelectedField.FieldNo -
1].AsVariant := TemporaryFieldValue;
DI_DfmDataModule1.TTableADOQuery.Post;
DI_DfmDataModule1.TTableADOQuery.Next;
end;
DI_DfmDataModule1.TTableADOQuery.First;
while DI_DfmDataModule1.TTableADOQuery.RecNo <> CurrentRecordNumber do
DI_DfmDataModule1.TTableADOQuery.Next;
DI_DfmDataModule1.TTableADOQuery.EnableControls;
end;
//复制到表头===============================================
if DI_DfmFieldCopy.FieldCopyMode = 'CopyToTableHead' then
begin
DI_DfmDataModule1.TTableADOQuery.DisableControls;
CurrentRecordNumber := DI_DfmDataModule1.TTableADOQuery.RecNo;
DI_DfmDataModule1.TTableADOQuery.First;
while DI_DfmDataModule1.TTableADOQuery.RecNo <> CurrentRecordNumber do
begin
DI_DfmDataModule1.TTableADOQuery.Edit;
DI_DfmDataModule1.TTableADOQuery.Fields[DBGrid1.SelectedField.FieldNo -
1].AsVariant := TemporaryFieldValue;
DI_DfmDataModule1.TTableADOQuery.Post;
DI_DfmDataModule1.TTableADOQuery.Next;
end;
DI_DfmDataModule1.TTableADOQuery.First;
DI_DfmDataModule1.TTableADOQuery.EnableControls;
end;
//复制到表尾===============================================
if DI_DfmFieldCopy.FieldCopyMode = 'CopyToTableTail' then
begin
DI_DfmDataModule1.TTableADOQuery.DisableControls;
while not DI_DfmDataModule1.TTableADOQuery.Eof do
begin
DI_DfmDataModule1.TTableADOQuery.Edit;
DI_DfmDataModule1.TTableADOQuery.Fields[DBGrid1.SelectedField.FieldNo -
1].AsVariant := TemporaryFieldValue;
DI_DfmDataModule1.TTableADOQuery.Post;
DI_DfmDataModule1.TTableADOQuery.Next;
end;
DI_DfmDataModule1.TTableADOQuery.Last;
DI_DfmDataModule1.TTableADOQuery.EnableControls;
end;
//复制到指定区域===========================================
if DI_DfmFieldCopy.FieldCopyMode = 'CopyToSelectExtent' then
begin
if DI_DfmDataModule1.TTableADOQuery.RecordCount <
DI_DfmFieldCopy.StartNumberSpinEdit.Value then
Exit;
DI_DfmDataModule1.TTableADOQuery.DisableControls;
CurrentRecordNumber := DI_DfmDataModule1.TTableADOQuery.RecNo;
DestinationFirstRecordNumber := DI_DfmFieldCopy.StartNumberSpinEdit.Value;
DestinationLastRecordNumber :=
DI_DfmFieldCopy.TerminiteNumberSpinEdit.Value;
DI_DfmDataModule1.TTableADOQuery.First;
while DI_DfmDataModule1.TTableADOQuery.RecNo <> DestinationFirstRecordNumber
do
DI_DfmDataModule1.TTableADOQuery.Next;
while not ((DI_DfmDataModule1.TTableADOQuery.RecNo =
DestinationLastRecordNumber + 1) or (DI_DfmDataModule1.TTableADOQuery.Eof))
do
begin
DI_DfmDataModule1.TTableADOQuery.Edit;
DI_DfmDataModule1.TTableADOQuery.Fields[DBGrid1.SelectedField.FieldNo -
1].AsVariant := TemporaryFieldValue;
DI_DfmDataModule1.TTableADOQuery.Post;
DI_DfmDataModule1.TTableADOQuery.Next;
end;
DI_DfmDataModule1.TTableADOQuery.First;
while DI_DfmDataModule1.TTableADOQuery.RecNo <> CurrentRecordNumber do
DI_DfmDataModule1.TTableADOQuery.Next;
DI_DfmDataModule1.TTableADOQuery.EnableControls;
end;
DI_DfmFieldCopy.Free;
end;
//报错事件======================================================================
procedure TDI_DfmMain.TADOQueryDeleteError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
Exit;
end;
procedure TDI_DfmMain.TADOQueryEditError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
Exit;
end;
procedure TDI_DfmMain.TADOQueryPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
Exit;
end;
//监控纪录状态==================================================================
procedure TDI_DfmMain.DBNavigator1Click(Sender: TObject;
Button: TNavigateBtn);
begin
TDBRecordNumber(sender);
end;
procedure TDI_DfmMain.DBGrid1CellClick(Column: TColumn);
begin
StatusBar1.Panels[2].Text := ' 现在位于第 ' +
IntToStr(DI_DfmDataModule1.TTableADOQuery.RecNo) + ' 条';
end;
procedure TDI_DfmMain.DBGrid2DblClick(Sender: TObject);
begin
if DbGrid2.Align = alClient then
begin
DbGrid2.Align := alBottom;
DbGrid2.Height := 214;
Splitter2.Top := 402;
end
else
DbGrid2.Align := alClient;
end;
procedure TDI_DfmMain.ToolButton3Click(Sender: TObject);
begin
Function_DB_ReadRight.UserOrUserGroupName := UserName;
Function_DB_ReadRight.UserOrUserGroupIdentify := '用户';
Function_DB_ReadRight.FunctionResourceName := '售餐统计';
if Function_DB_ReadRight.GetFunctionResourceRight <> 1 then
begin
MessageDlg('对不起,您没有权限执行当前工作!', mtInformation, [mbOk], 0);
Exit;
end;
WriteToHistroy('统计分析', Now, Time, '用户《' + FrmMain.UserName +
'》于服务器' +
FrmMain.ServerName + '执行了<售餐统计>', FrmMain.UserName);
AG_Main.SetWork('售餐查询统计');
end;
procedure TDI_DfmMain.ToolButton4Click(Sender: TObject);
begin
Function_DB_ReadRight.UserOrUserGroupName := UserName;
Function_DB_ReadRight.UserOrUserGroupIdentify := '用户';
Function_DB_ReadRight.FunctionResourceName := '售卡统计';
if Function_DB_ReadRight.GetFunctionResourceRight <> 1 then
begin
MessageDlg('对不起,您没有权限执行当前工作!', mtInformation, [mbOk], 0);
Exit;
end;
WriteToHistroy('统计分析', Now, Time, '用户《' + FrmMain.UserName +
'》于服务器' +
FrmMain.ServerName + '执行了<售卡统计>', UserName);
AG_Main.SetWork('售卡查询统计');
end;
procedure TDI_DfmMain.ToolButton5Click(Sender: TObject);
var
ReportHistroyCName, ReportHistroyEName: string;
begin
Function_DB_ReadRight.UserOrUserGroupName := UserName;
Function_DB_ReadRight.UserOrUserGroupIdentify := '用户';
Function_DB_ReadRight.FunctionResourceName := '历史结果';
if Function_DB_ReadRight.GetFunctionResourceRight <> 1 then
begin
MessageDlg('对不起,您没有权限执行当前工作!', mtInformation, [mbOk], 0);
Exit;
end;
WriteToHistroy('统计分析', Now, Time, '用户《' + FrmMain.UserName +
'》于服务器' +
FrmMain.ServerName + '执行了<历史结果>', FrmMain.UserName);
if not AG_HistroyList.SetWork(ReportHistroyCName, ReportHistroyEName) then
Exit;
if not FileExists(ReportHistroyEName) then
begin
ShowMessage('所需的统计分析源文件丢失,不能进行该项工作!');
Exit;
end;
AG_Main.SetWork('历史结果/' + ReportHistroyCName + '/' + ReportHistroyEName);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -