📄 abfwabdemomain.~pas
字号:
if i >= abfWAB.Items.Count then i := abfWAB.Items.Count - 1;
RefreshListView(i);
end else
RefreshListView(-1);
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.abfWABDeletingItem(Sender: TObject;
var AllowDelete: Boolean);
begin
AllowDelete := MessageDlg('Delete "' +
abfWAB.Items[lvItems.Selected.Index].DisplayName +
'" item?', mtConfirmation, [mbYes, mbNo], 0) = mrYes;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.lvItemsDblClick(Sender: TObject);
begin
tbtnProperties.Click;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.lvItemsChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin
if Change = ctState then RefreshButtons;
end;
//------------------------------------------------------------------------------
// Shows drop-down popup menu
procedure TfrmWabDemoMain.tbtnNewClick(Sender: TObject);
var
APoint: TPoint;
begin
SendCancelMode(nil);
APoint := tbtnNew.ClientToScreen(Point(0, tbtnNew.ClientHeight));
{$IfDef D4}
if pmNew.IsRightToLeft then Inc(APoint.X, tbtnNew.Width);
{$EndIf D4}
pmNew.Popup(APoint.X, APoint.Y);
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.tbtnPropertiesClick(Sender: TObject);
var
i: Integer;
begin
if Assigned(lvItems.Selected) then
begin
abfWAB.OnChangeAddressBook := nil;
try
i := lvItems.Selected.Index;
if abfWAB.ItemDetails(i) then RefreshListView(i);
finally
abfWAB.OnChangeAddressBook := abfWABChangeAddressBook;
end;
end;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.tbtnDeleteClick(Sender: TObject);
var
IndexesArr: Variant;
Len, i, a: Integer;
SavePos: Integer;
begin
if lvItems.SelCount > 0 then
begin
SavePos := lvItems.Selected.Index;
if lvItems.SelCount > 1 then
begin
if MessageDlg('Delete these items?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
abfWAB.OnChangeAddressBook := nil;
abfWAB.OnDeletingItem := nil;
try
if lvItems.Items.Count <> lvItems.SelCount then
begin
Len := lvItems.SelCount;
a := 0;
IndexesArr := VarArrayCreate([0, Len - 1], varInteger);
for i := 0 to lvItems.Items.Count - 1 do
if lvItems.Items[i].Selected then
begin
IndexesArr[a] := lvItems.Items[i].Index;
Inc(a);
end;
abfWAB.DeleteItems(IndexesArr);
end
else
abfWAB.DeleteAllItems;
finally
abfWAB.OnDeletingItem := abfWABDeletingItem;
abfWAB.OnChangeAddressBook := abfWABChangeAddressBook;
end;
if SavePos >= abfWAB.Items.Count then SavePos := abfWAB.Items.Count - 1;
RefreshListView(SavePos);
end
end else
begin
abfWAB.OnChangeAddressBook := nil;
try
abfWAB.DeleteItems(SavePos);
finally
abfWAB.OnChangeAddressBook := abfWABChangeAddressBook;
end;
if SavePos >= abfWAB.Items.Count then
SavePos := abfWAB.Items.Count - 1;
RefreshListView(SavePos);
end;
end;
end;{procedure TfrmMain.tbtnDeleteClick}
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.tbtnFindPeopleClick(Sender: TObject);
begin
abfWAB.Find;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.tbtnSelectAddressesClick(Sender: TObject);
begin
abfWABAddrDlg.Execute;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.pmMainPopup(Sender: TObject);
begin
RefreshButtons;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miNewContactClick(Sender: TObject);
var
i: Integer;
begin
abfWAB.OnChangeAddressBook := nil;
try
i := abfWAB.NewContact;
if i < 0 then Exit;
i := abfWAB.GetItemIndex(abfWAB.Contacts[i].EntryID);
if i >= 0 then RefreshListView(i);
finally
abfWAB.OnChangeAddressBook := abfWABChangeAddressBook;
end;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miNewGroupClick(Sender: TObject);
var
i: Integer;
begin
abfWAB.OnChangeAddressBook := nil;
try
i := abfWAB.NewGroup;
if i < 0 then Exit;
i := abfWAB.GetItemIndex(abfWAB.Groups[i].EntryID);
if i >= 0 then RefreshListView(i);
finally
abfWAB.OnChangeAddressBook := abfWABChangeAddressBook;
end;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miSelectAllClick(Sender: TObject);
var
i: Integer;
begin
with lvItems.Items do
begin
BeginUpdate;
try
for i := 0 to lvItems.Items.Count - 1 do
if not lvItems.Items[i].Selected then
lvItems.Items[i].Selected := True;
finally
EndUpdate;
end;
end;
RefreshButtons;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miRefreshClick(Sender: TObject);
var
SavePos: Integer;
begin
if lvItems.Selected <> nil then
SavePos := lvItems.Selected.Index
else
SavePos := -1;
abfWAB.Refresh;
RefreshListView(SavePos);
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miFileClick(Sender: TObject);
begin
SwitchWABMode;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miCurrWABClick(Sender: TObject);
begin
abfWAB.WABMode := wmCurrentWAB;
abfWAB.Open;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miWABFileClick(Sender: TObject);
begin
dlgOpenWABFile.FileName := abfWAB.FileName;
if dlgOpenWABFile.Execute then
begin
abfWAB.WABMode := wmWABFile;
abfWAB.FileName := dlgOpenWABFile.FileName;
abfWAB.Open;
end;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miExitClick(Sender: TObject);
begin
Close;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miProfileClick(Sender: TObject);
begin
abfWAB.SetMeContact(-1, True);
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miProfileFolderClick(Sender: TObject);
begin
abfWAB.AddToFolder := wafProfileFolder;
miProfileFolder.Checked := True;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miSharedFolderClick(Sender: TObject);
begin
abfWAB.AddToFolder := wafSharedFolder;
miSharedFolder.Checked := True;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miAllContentsClick(Sender: TObject);
var
SaveState: Boolean;
begin
SaveState := abfWAB.Active;
abfWAB.ContentsFilter := wcfAllContents;
miAllContents.Checked := True;
abfWAB.Active := SaveState;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miProfileContactsClick(Sender: TObject);
var
SaveState: Boolean;
begin
SaveState := abfWAB.Active;
abfWAB.ContentsFilter := wcfProfileFolderOnly;
miProfileContacts.Checked := True;
abfWAB.Active := SaveState;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miSharedContactsClick(Sender: TObject);
var
SaveState: Boolean;
begin
SaveState := abfWAB.Active;
abfWAB.ContentsFilter := wcfSharedFolderOnly;
miSharedContacts.Checked := True;
abfWAB.Active := SaveState;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miOptionsClick(Sender: TObject);
begin
SwitchWABMode;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miUseProfilesClick(Sender: TObject);
begin
abfWAB.EnableProfiles := not miUseProfiles.Checked;
abfWAB.Open;
miUseProfiles.Checked := abfWAB.EnableProfiles;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.miAboutClick(Sender: TObject);
begin
abfApplicationAbout(Application.Title);
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.rmUseOutlookChange;
begin
tmRegistryTimer.Enabled := True;
end;
//------------------------------------------------------------------------------
procedure TfrmWabDemoMain.tmRegistryTimerTimer(Sender: TObject);
var
TempBool: Boolean;
begin
if IsWindowEnabled(Self.Handle) then
begin
tmRegistryTimer.Enabled := False;
TempBool := abfIsOutlookSharedMode;
if FUseOutlook <> TempBool then
begin
FUseOutlook := TempBool;
abfWAB.Open;
end;
end;
end;
//------------------------------------------------------------------------------
end{unit abfWABForm}.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -