📄 mainf.pas
字号:
procedure TfmMain.actAddCategoryExecute(Sender: TObject);
var
CurrentNodeObj: PTreeNodeObj;
CurrentNode: TTreeNode;
CurrentListItemObj: PListItemObj;
CurrentListItem: TListItem;
begin
OpenCategory('');
fmDocumentsType := TfmDocumentsType.Create(Application);
fmDocumentsType.OperType := otInsert;
fmDocumentsType.ParentCategoryCode := PTreeNodeObj(trvCategory.Selected.Data)^.CategoryCode;
try
if fmDocumentsType.ShowModal = mrOK then
begin
dmMain.dsCategoryTree.Close;
dmMain.dsCategoryTree.Open;
with dmMain.dsCategory do
begin
//Add Tree Node
CurrentNodeObj := CreateTreeNodeObj(FieldByName('TypeCode').AsString, FieldByName('TypeName').AsString,
FieldByName('ParentTypeCode').AsString, FieldByName('Remarks').AsString, FieldByName('Creator').AsString,
FieldByName('LastModifier').AsString, FieldByName('CreateDate').AsDateTime,
FieldByName('LastModifyDate').AsDateTime, FieldByName('ModifyTimes').AsInteger);
CurrentNode := trvCategory.Items.AddChildObject(trvCategory.Selected, FieldByName('TypeName').AsString, CurrentNodeObj);
CurrentNode.ImageIndex := 1;
CurrentNode.SelectedIndex := 1;
CurrentNode.StateIndex := 1;
//Add List Item
CurrentListItem := lsvDocuments.Items.Add;
CurrentListItem.Caption := FieldByName('TypeName').AsString;
CurrentListItem.SubItems.Add('');
CurrentListItem.SubItems.Add('');
CurrentListItem.SubItems.Add(FieldByName('Creator').AsString);
CurrentListItem.SubItems.Add(FieldByName('CreateDate').AsString);
CurrentListItemObj := CreateListItemObj(itCategory, FieldByName('TypeCode').AsString,
'', FieldByName('TypeName').AsString, '', '', '', '', FieldByName('Creator').AsString,
FieldByName('LastModifier').AsString, FieldByName('CreateDate').AsDateTime,
FieldByName('LastModifyDate').AsDateTime, FieldByName('ModifyTimes').AsInteger, 0.0);
CurrentListItem.Data := CurrentListItemObj;
CurrentListItem.ImageIndex := FolderIndex;
//Refresh Image Of Current Node
CurrentNode := trvCategory.Selected;
CurrentNode.ImageIndex := 0;
CurrentNode.SelectedIndex := 0;
CurrentNode.StateIndex := 0;
end;
end;
finally
fmDocumentsType.Free;
end;
end;
procedure TfmMain.actEditCategoryExecute(Sender: TObject);
begin
OpenCategory(PTreeNodeObj(trvCategory.Selected.Data)^.CategoryCode);
fmDocumentsType := TfmDocumentsType.Create(Application);
fmDocumentsType.OperType := otEdit;
try
if fmDocumentsType.ShowModal = mrOk then
begin
dmMain.dsCategoryTree.Close;
dmMain.dsCategoryTree.Open;
with dmMain.dsCategory, PTreeNodeObj(trvCategory.Selected.Data)^ do
begin
CategoryCode := FieldByName('TypeCode').AsString;
CategoryName := FieldByName('TypeName').AsString;
ParentCategoryCode := FieldByName('ParentTypeCode').AsString;
Remarks := FieldByName('Remarks').AsString;
Creator := FieldByName('Creator').AsString;
CreateDate := FieldByName('CreateDate').AsDateTime;
LastModifier := FieldByName('LastModifier').AsString;
LastModifyDate := FieldByName('LastModifyDate').AsDateTime;
ModifyTimes := FieldByName('ModifyTimes').AsInteger;
trvCategory.Selected.Text := CategoryName;
end;
RefreshAddress(trvCategory.Selected);
end;
finally
fmDocumentsType.Free;
end;
end;
procedure TfmMain.actDeleteCategoryExecute(Sender: TObject);
begin
if ShowYesNo('Are you sure to delete this category?') then
begin
dmMain.adcSystem.BeginTrans;
if DeleteCategory(trvCategory.Selected) then
begin
lsvDocuments.Items.Clear;
dmMain.adcSystem.CommitTrans;
dmMain.dsCategoryTree.Close;
dmMain.dsCategoryTree.Open;
trvCategory.OnChange(trvCategory, trvCategory.Selected);
end
else
begin
dmMain.adcSystem.RollbackTrans;
InitTreeView;
end;
end;
end;
{-----------------------------------------------------------------------------
Procedure: DeleteCategory
Purpose: Delete Documents Type
Arguments: ATreeNode: TTreeNode
Result: Boolean
Author: Cyclone
History: 2004-6-11 0:00:25
-----------------------------------------------------------------------------}
function TfmMain.DeleteCategory(ATreeNode: TTreeNode): Boolean;
var
ChildNode: TTreeNode;
OriginalCursor: TCursor;
begin
Result := True;
OriginalCursor := Screen.Cursor;
Screen.Cursor := crHourGlass;
try
try
//Delete Children Type
if ATreeNode.HasChildren then
begin
ChildNode := ATreeNode.getFirstChild;
while ChildNode <> nil do
begin
DeleteCategory(ChildNode);
ChildNode := ATreeNode.getFirstChild;
end;
end;
//Delete Documents
// with lsvDocuments.Items do
// begin
// for i := Count - 1 downto 0 do
// begin
// Application.ProcessMessages;
// if Item[i].Data <> nil then
// begin
// dmMain.DeleteCYCFile(PListItemObj(Item[i].Data)^.FileName, PListItemObj(Item[i].Data)^.DocType, PListItemObj(Item[i].Data)^.DocNo);
// Dispose(Item[i].Data);
// Item[i].Delete;
// end;
// end;
// end;
with dmMain.dsDocumentsList do
begin
if Active then
Close;
Parameters.ParamByName('DocType').Value := PTreeNodeObj(ATreeNode.Data)^.CategoryCode;
Open;
try
while not Eof do
begin
Application.ProcessMessages;
dmMain.DeleteCYCFile(FieldByName('FileName').AsString, FieldByName('DocType').AsString, FieldByName('DocNo').AsString);
Next;
end;
finally
Close;
end;
end;
//Delete Current category
if ATreeNode.Data <> nil then
begin
ExecuteSQL('DELETE FROM Documents WHERE DocType=' + QuotedStr(PTreeNodeObj(ATreeNode.Data)^.CategoryCode));
ExecuteSQL('DELETE FROM DocumentsType WHERE TypeCode=' + QuotedStr(PTreeNodeObj(ATreeNode.Data)^.CategoryCode));
Dispose(ATreeNode.Data);
end;
ATreeNode.Delete;
except
Result := False;
end;
finally
Screen.Cursor := OriginalCursor;
end;
end;
{-----------------------------------------------------------------------------
Procedure: InitTreeView
Purpose: Initialize TreeView
Arguments: None
Result: None
Author: Cyclone
History: 2004-6-11 0:00:16
-----------------------------------------------------------------------------}
procedure TfmMain.InitTreeView;
var
CurrentNodeObj: PTreeNodeObj;
begin
trvCategory.Items.Clear;
CurrentNodeObj := CreateTreeNodeObj('', pSystemName, '', '', '', '', Date, Date, 0);
trvCategory.Items.AddChildObject(nil, pSystemName, CurrentNodeObj);
dmMain.dsCategoryTree.Close;
dmMain.dsCategoryTree.Open;
InitCategoryTree(trvCategory, trvCategory.TopItem, dmMain.dsCategoryTree, 'TypeCode', 'ParentTypeCode', '', 'TypeName');
trvCategory.TopItem.Expand(False);
trvCategory.TopItem.Selected := True;
end;
{-----------------------------------------------------------------------------
Procedure: OpenCategory
Purpose: Open Documents Type
Arguments: const CategoryCode: String
Result: None
Author: Cyclone
History: 2004-6-11 0:00:04
-----------------------------------------------------------------------------}
procedure TfmMain.OpenCategory(const CategoryCode: String);
begin
with dmMain.dsCategory do
begin
if Active then
Close;
Parameters.ParamByName('TypeCode').Value := CategoryCode;
Open;
end;
end;
{-----------------------------------------------------------------------------
Procedure: OpenDocuments
Purpose: Open Documents
Arguments: const DocNo: String
Result: None
Author: Cyclone
History: 2004-6-17 23:12:23
-----------------------------------------------------------------------------}
procedure TfmMain.OpenDocuments(const DocNo: String);
begin
with dmMain.dsDocuments do
begin
if Active then
Close;
Parameters.ParamByName('DocNo').Value := DocNo;
Open;
end;
end;
procedure TfmMain.lsvDocumentsDblClick(Sender: TObject);
var
SelTreeNode: TTreeNode;
NewItemIndex: Integer;
begin
if lsvDocuments.SelCount = 1 then
begin
//Category
if PListItemObj(lsvDocuments.Selected.Data)^.ItemType = itCategory then
begin
SelTreeNode := FindTreeNodeByCategoryCode(PListItemObj(lsvDocuments.Selected.Data)^.DocNo);
if SelTreeNode <> nil then
begin
SelTreeNode.Expand(False);
SelTreeNode.Selected := True;
//trvCategory.SetFocus;
end;
end
else
//Documents
begin
if not FileExists(pRootPath + PListItemObj(lsvDocuments.Selected.Data)^.FileName) then
begin
ShowError('Cannot find file: ' + pRootPath + PListItemObj(lsvDocuments.Selected.Data)^.FileName);
Exit;
end;
if IsImage(lsvDocuments.Selected) then
begin
Hide;
fmImageViewer := TfmImageViewer.Create(Application);
try
//fmImageViewer.MainFormHandle := Self.Handle;
fmImageViewer.ImageList := lsvDocuments;
fmImageViewer.CurrentAbsoluteIndex := lsvDocuments.ItemIndex;
fmImageViewer.ShowModal;
finally
NewItemIndex := fmImageViewer.CurrentAbsoluteIndex;
FreeAndNil(fmImageViewer);
Show;
if lsvDocuments.ItemIndex <> NewItemIndex then
begin
lsvDocuments.Selected.Selected := False;
lsvDocuments.Items[NewItemIndex].Selected := True;
lsvDocuments.Items[NewItemIndex].Focused := True;
end;
lsvDocuments.SetFocus;
end;
end
else
begin
ShellOpenFile(lsvDocuments.Selected);
end;
end;
end;
end;
{-----------------------------------------------------------------------------
Procedure: FindTreeNodeByCategoryCode
Purpose: Find TreeNode By Category Code
Arguments: const CategoryCode: String
Result: TTreeNode
Author: Cyclone
History: 2004-6-11 0:22:19
-----------------------------------------------------------------------------}
function TfmMain.FindTreeNodeByCategoryCode(const CategoryCode: String): TTreeNode;
var
i: Integer;
begin
Result := nil;
with trvCategory.Items do
begin
for i := 0 to Count - 1 do
begin
if PTreeNodeObj(Item[i].Data)^.CategoryCode = CategoryCode then
begin
Result := Item[i];
Break;
end;
end;
end;
end;
procedure TfmMain.actAddDocumentExecute(Sender: TObject);
begin
AddADocument;
end;
procedure TfmMain.actEditDocumentExecute(Sender: TObject);
begin
OpenDocuments(PListItemObj(lsvDocuments.Selected.Data)^.DocNo);
fmDocuments := TfmDocuments.Create(Application);
fmDocuments.OperType := otEdit;
fmDocuments.CategoryCode := PListItemObj(lsvDocuments.Selected.Data)^.DocType;
fmDocuments.CategoryName := dmMain.GetCategoryName(fmDocuments.CategoryCode);
try
if fmDocuments.ShowModal = mrOK then
begin
with dmMain.dsDocuments, PListItemObj(lsvDocuments.Selected.Data)^ do
begin
DocNo := FieldByName('DocNo').AsString;
DocType := FieldByName('DocType').AsString;
DocName := FieldByName('DocName').AsString;
FileName := FieldByName('FileName').AsString;
FileSize := FieldByName('FileSize').AsFloat;
OriginalExtName := FieldByName('OriginalExtName').AsString;
Version := FieldByName('Version').AsString;
Creator := FieldByName('Creator').AsString;
LastModifier := FieldByName('LastModifier').AsString;
CreateDate := FieldByName('CreateDate').AsDateTime;
LastModifyDate := FieldByName('LastModifyDate').AsDateTime;
ModifyTimes := FieldByName('ModifyTimes').AsInteger;
lsvDocuments.Selected.SubItems.Clear;
lsvDocuments.Selected.Caption := FieldByName('DocName').AsString;
lsvDocuments.Selected.SubItems.Add(FieldByName('FileName').AsString);
lsvDocuments.Selected.SubItems.Add(FieldByName('Version').AsString);
lsvDocuments.Selected.SubItems.Add(FieldByName('Creator').AsString);
lsvDocuments.Selected.SubItems.Add(FieldByName('CreateDate').AsString);
end;
end;
finally
fmDocuments.Free;
end;
end;
procedure TfmMain.actDeleteDocumentExecute(Sender: TObject);
begin
if ShowYesNo('Are you sure to delete these Documents?') then
begin
dmMain.adcSystem.BeginTrans;
try
if DeleteDocuments then
begin
dmMain.adcSystem.CommitTrans;
end
else
begin
dmMain.adcSystem.RollbackTrans;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -