📄 mainfrm.pas
字号:
Constellation := CardTinyTable.FieldByName('Constellation').AsInteger;
BloodType := CardTinyTable.FieldByName('BloodType').AsInteger;
Taste := CardTinyTable.FieldByName('Taste').AsString;
Homepage := CardTinyTable.FieldByName('Homepage').AsString;
HomeZip := CardTinyTable.FieldByName('HomeZip').AsString;
HomeAddr := CardTinyTable.FieldByName('HomeAddr').AsString;
HomeTel1 := CardTinyTable.FieldByName('HomeTel1').AsString;
HomeTel2 := CardTinyTable.FieldByName('HomeTel2').AsString;
HomeFax := CardTinyTable.FieldByName('HomeFax').AsString;
CorpZip := CardTinyTable.FieldByName('CorpZip').AsString;
CorpAddr := CardTinyTable.FieldByName('CorpAddr').AsString;
CorpJob := CardTinyTable.FieldByName('CorpJob').AsString;
CorpDept := CardTinyTable.FieldByName('CorpDept').AsString;
CorpTel1 := CardTinyTable.FieldByName('CorpTel1').AsString;
CorpTel2 := CardTinyTable.FieldByName('CorpTel2').AsString;
CorpFax := CardTinyTable.FieldByName('CorpFax').AsString;
CorpHomepage := CardTinyTable.FieldByName('CorpHomepage').AsString;
ExtMemo := CardTinyTable.FieldByName('ExtMemo').AsString;
end;
end;
procedure TMainForm.SaveCardData(CardData: TCardFormData);
begin
with CardData do
begin
CardTinyTable.FieldByName('Name').AsString := Name;
CardTinyTable.FieldByName('Nickname').AsString := Nickname;
CardTinyTable.FieldByName('Emails').AsString := Emails;
CardTinyTable.FieldByName('HandTel').AsString := HandTel;
CardTinyTable.FieldByName('BP').AsString := BP;
CardTinyTable.FieldByName('Oicq').AsString := Oicq;
CardTinyTable.FieldByName('Icq').AsString := Icq;
CardTinyTable.FieldByName('Sex').AsInteger := Sex;
CardTinyTable.FieldByName('Birthday').AsDateTime := Birthday;
CardTinyTable.FieldByName('UseBirth').AsBoolean := UseBirth;
CardTinyTable.FieldByName('Constellation').AsInteger := Constellation;
CardTinyTable.FieldByName('BloodType').AsInteger := BloodType;
CardTinyTable.FieldByName('Taste').AsString := Taste;
CardTinyTable.FieldByName('Homepage').AsString := Homepage;
CardTinyTable.FieldByName('HomeZip').AsString := HomeZip;
CardTinyTable.FieldByName('HomeAddr').AsString := HomeAddr;
CardTinyTable.FieldByName('HomeTel1').AsString := HomeTel1;
CardTinyTable.FieldByName('HomeTel2').AsString := HomeTel2;
CardTinyTable.FieldByName('HomeFax').AsString := HomeFax;
CardTinyTable.FieldByName('CorpZip').AsString := CorpZip;
CardTinyTable.FieldByName('CorpAddr').AsString := CorpAddr;
CardTinyTable.FieldByName('CorpJob').AsString := CorpJob;
CardTinyTable.FieldByName('CorpDept').AsString := CorpDept;
CardTinyTable.FieldByName('CorpTel1').AsString := CorpTel1;
CardTinyTable.FieldByName('CorpTel2').AsString := CorpTel2;
CardTinyTable.FieldByName('CorpFax').AsString := CorpFax;
CardTinyTable.FieldByName('CorpHomepage').AsString := CorpHomepage;
CardTinyTable.FieldByName('ExtMemo').AsString := ExtMemo;
end;
end;
procedure TMainForm.FormCreate(Sender: TObject);
var
DBFileName: string;
begin
DBFileName := GetDBFileName;
if not FileExists(DBFileName) then
begin
if not CreateDatabase then
begin
MessageBox(Application.Handle, PChar(SFailToCreateDb), PChar(Application.Title), 16);
Application.Terminate;
end;
end;
if not OpenDatabase then
begin
Application.Terminate;
end;
FillFolderTreeView;
NameSearchEdit.Text := '';
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
CardTinyTable.Close;
FolderTinyTable.Close;
end;
procedure TMainForm.NewCardActionExecute(Sender: TObject);
var
CardData: TCardFormData;
FolderID: Integer;
begin
if TreeView.Selected = nil then
TreeView.Items[1].Selected := True;
if TreeView.Selected.AbsoluteIndex = 0 then
TreeView.Items[1].Selected := True;
FolderID := Integer(TreeView.Selected.Data);
if FolderID < 1 then FolderID := 1;
CardData.UseBirth := False;
if ShowCardForm(CardData) then
begin
CardTinyTable.Filtered := False;
CardTinyTable.Append;
CardTinyTable.FieldByName('FolderID').AsInteger := FolderID;
SaveCardData(CardData);
CardTinyTable.Post;
FillListView(FolderID);
end;
end;
procedure TMainForm.NewFolderActionExecute(Sender: TObject);
var
ParentID: Integer;
FolderName: string;
TreeNode: TTreeNode;
begin
if TreeView.Selected = nil then Exit;
ParentID := Integer(TreeView.Selected.Data);
if ShowInputForm(FolderName, SNewFolder, SFolderName) then
begin
FolderTinyTable.Filtered := False;
FolderTinyTable.Append;
FolderTinyTable.FieldByName('ParentID').AsInteger := ParentID;
FolderTinyTable.FieldByName('Name').AsString := FolderName;
FolderTinyTable.Post;
TreeNode := TreeView.Items.AddChild(TreeView.Selected, FolderName);
TreeNode.Data := Pointer(FolderTinyTable.FieldByName('ID').AsInteger);
TreeNode.ImageIndex := 1;
TreeNode.SelectedIndex := 1;
TreeNode.MakeVisible;
TreeNode.Selected := True;
end;
end;
procedure TMainForm.PropertyActionExecute(Sender: TObject);
var
ListItem: TListItem;
CardID: Integer;
CardData: TCardFormData;
begin
if ListView.Selected = nil then Exit;
ListItem := ListView.Selected;
CardID := Integer(ListItem.Data);
CardTinyTable.Filtered := False;
CardTinyTable.IndexName := '';
if CardTinyTable.FindKey([CardID]) then
begin
LoadCardData(CardData);
if ShowCardForm(CardData) then
begin
CardTinyTable.Edit;
SaveCardData(CardData);
CardTinyTable.Post;
UpdateListItem(ListItem, CardData);
end;
end;
end;
procedure TMainForm.DeleteCardActionExecute(Sender: TObject);
var
CardID: Integer;
R: Integer;
begin
if ListView.Selected = nil then Exit;
R := MessageBox(Application.Handle, PChar(SQueryDeleteCard), PChar(Application.Title), 36);
if R = ID_NO then Exit;
CardID := Integer(ListView.Selected.Data);
CardTinyTable.Filtered := False;
CardTinyTable.IndexName := '';
if CardTinyTable.FindKey([CardID]) then
begin
CardTinyTable.Delete;
ListView.Selected.Delete;
end;
end;
procedure TMainForm.EncryptActionExecute(Sender: TObject);
var
Data: TChgPwdFormData;
begin
Data.CheckPwd := TinyDatabase.Encrypted;
if ShowChgPwdForm(Data) then
begin
if TinyDatabase.ChangePassword(Data.Password, Data.CheckPwd) then
begin
MessageBox(Handle, PChar(SChgPwdSucc), PChar(Application.Title), 48)
end else
MessageBox(Handle, PChar(SChgPwdFail), PChar(Application.Title), 48);
end;
end;
procedure TMainForm.FileExitItemClick(Sender: TObject);
begin
Close;
end;
procedure TMainForm.ViewToolBarItemClick(Sender: TObject);
begin
ViewToolBarItem.Checked := not ViewToolBarItem.Checked;
ToolBar.Visible := ViewToolBarItem.Checked;
end;
procedure TMainForm.ViewStatusBarItemClick(Sender: TObject);
begin
ViewStatusBarItem.Checked := not ViewStatusBarItem.Checked;
StatusBar.Visible := ViewStatusBarItem.Checked;
end;
procedure TMainForm.ViewLargeIconItemClick(Sender: TObject);
begin
(Sender as TMenuItem).Checked := True;
ListView.ViewStyle := TViewStyle((Sender as TMenuItem).Tag);
end;
procedure TMainForm.ViewRefreshItemClick(Sender: TObject);
begin
if TreeView.Selected = nil then Exit;
FillListView(Integer(TreeView.Selected.Data));
end;
procedure TMainForm.HelpAboutItemClick(Sender: TObject);
begin
ShowAboutForm;
end;
{$WRITEABLECONST ON}
procedure TMainForm.TreeViewChange(Sender: TObject; Node: TTreeNode);
const
OldFolderID: Integer = -1;
var
FolderID: Integer;
begin
FolderID := Integer(Node.Data);
if FolderID = OldFolderID then Exit;
OldFolderID := FolderID;
FillListView(FolderID);
end;
procedure TMainForm.TreePopDeleteFolderItemClick(Sender: TObject);
var
TreeNode: TTreeNode;
FolderID, R: Integer;
begin
if TreeView.Selected = nil then Exit;
TreeNode := TreeView.Selected;
if TreeNode.AbsoluteIndex in [0,1] then Exit;
R := MessageBox(Application.Handle, PChar(SQueryDeleteFolder), PChar(Application.Title), 36);
if R = ID_NO then Exit;
FolderID := Integer(TreeNode.Data);
FolderTinyTable.Filtered := False;
FolderTinyTable.IndexName := '';
if FolderTinyTable.FindKey([FolderID]) then
begin
FolderTinyTable.Delete;
CardTinyTable.Filtered := False;
CardTinyTable.IndexName := 'ByFolderID';
while CardTinyTable.FindKey([FolderID]) do
begin
CardTinyTable.Delete;
end;
TreeNode.Delete;
end;
end;
procedure TMainForm.TreeViewEditing(Sender: TObject; Node: TTreeNode;
var AllowEdit: Boolean);
begin
if Node.AbsoluteIndex in [0, 1] then AllowEdit := False
else AllowEdit := True;
end;
procedure TMainForm.TreeViewEdited(Sender: TObject; Node: TTreeNode;
var S: String);
var
FolderID: Integer;
begin
FolderID := Integer(Node.Data);
FolderTinyTable.Filtered := False;
FolderTinyTable.IndexName := '';
if FolderTinyTable.FindKey([FolderID]) then
begin
FolderTinyTable.Edit;
FolderTinyTable.FieldByName('Name').AsString := S;
FolderTinyTable.Post;
Node.Text := FolderTinyTable.FieldByName('Name').AsString;
end;
end;
procedure TMainForm.TreeViewMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Node: TTreeNode;
HitTest: THitTests;
begin
HitTest := TreeView.GetHitTestInfoAt(X, Y);
if (htOnIcon in HitTest) or (htOnLabel in HitTest)then
begin
Node := TreeView.GetNodeAt(X, Y);
if Node <> nil then Node.Selected := True;
end;
end;
procedure TMainForm.TreeViewPopupMenuPopup(Sender: TObject);
begin
TreePopDeleteFolderItem.Enabled := not (TreeView.Selected.AbsoluteIndex in [0,1]);
end;
procedure TMainForm.ListViewPopupMenuPopup(Sender: TObject);
var
Selected: Boolean;
begin
Selected := (ListView.Selected <> nil);
ListPopDeleteCardItem.Enabled := Selected;
ListPopPropertyItem.Enabled := Selected;
end;
procedure TMainForm.ListViewChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
NameSearchEdit.Text := Item.Caption;
end;
procedure TMainForm.NameSearchPanelResize(Sender: TObject);
begin
NameSearchEdit.Width := NameSearchPanel.ClientWidth;
end;
procedure TMainForm.NameSearchEditKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
I: Integer;
begin
if Key = VK_RETURN then
begin
KillMessage(Handle, WM_CHAR);
NameSearchEdit.SelectAll;
for I := 0 to ListView.Items.Count - 1 do
begin
if CompareText(ListView.Items[I].Caption, NameSearchEdit.Text) = 0 then
begin
ListView.Items[I].MakeVisible(False);
ListView.Items[I].Selected := True;
NameSearchEdit.SelectAll;
Exit;
end;
end;
MessageBeep(0);
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -