uphonehistory.pas
来自「FMA is a free1 powerful phone editing to」· PAS 代码 · 共 165 行
PAS
165 行
unit uPhoneHistory;
{
*******************************************************************************
* Descriptions: Phone Numbers History editor
* $Source: /cvsroot/fma/fma/uPhoneHistory.pas,v $
* $Locker: $
*
* Todo:
*
* Change Log:
* $Log: uPhoneHistory.pas,v $
*
*******************************************************************************
}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TntStdCtrls, ComCtrls, TntComCtrls, ExtCtrls,
TntExtCtrls;
type
TfrmPhoneHistory = class(TForm)
lvPhones: TTntListView;
NewButton: TTntButton;
EditButton: TTntButton;
DeleteButton: TTntButton;
TntBevel1: TTntBevel;
OkButton: TTntButton;
CancelButton: TTntButton;
procedure lvPhonesSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure DeleteButtonClick(Sender: TObject);
procedure NewButtonClick(Sender: TObject);
procedure EditButtonClick(Sender: TObject);
procedure lvPhonesDblClick(Sender: TObject);
procedure lvPhonesKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure CheckNumber(Num: String);
function GetNums: WideString;
procedure SetNums(const Value: WideString);
public
{ Public declarations }
property Numbers: WideString read GetNums write SetNums;
end;
var
frmPhoneHistory: TfrmPhoneHistory;
implementation
uses
gnugettext, gnugettexthelpers,
uGlobal, uDialogs, uInputQuery;
{$R *.dfm}
procedure TfrmPhoneHistory.lvPhonesSelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
EditButton.Enabled := lvPhones.SelCount = 1;
DeleteButton.Enabled := lvPhones.SelCount <> 0;
end;
procedure TfrmPhoneHistory.CheckNumber(Num: String);
var
i: Integer;
begin
for i := 1 to Length(Num) do
if not (Num[i] in ['+','0'..'9','#','*','p']) then begin // do not localize
MessageDlgW(_('Incorrect phone number specified!'),mtError,MB_OK);
Abort;
end;
end;
procedure TfrmPhoneHistory.DeleteButtonClick(Sender: TObject);
var
i: Integer;
begin
if MessageDlgW(WideFormat(_('Deleting %d %s. Are you sure?'),
[lvPhones.SelCount,ngettext('number','numbers',lvPhones.SelCount)]),
mtConfirmation,MB_YESNO or MB_DEFBUTTON2) = ID_YES then begin
for i := lvPhones.Items.Count-1 downto 0 do
if lvPhones.Items[i].Selected then lvPhones.Items[i].Delete;
end;
end;
procedure TfrmPhoneHistory.NewButtonClick(Sender: TObject);
var
s: WideString;
begin
s := '';
if WideInputQuery(_('New Number'),_('Enter number:'),s) then begin
s := Trim(s);
CheckNumber(s);
lvPhones.Items.Add.Caption := s;
end;
end;
procedure TfrmPhoneHistory.EditButtonClick(Sender: TObject);
var
s: WideString;
begin
s := lvPhones.Selected.Caption;
if WideInputQuery(_('Edit Number'),_('Enter number:'),s) then begin
s := Trim(s);
CheckNumber(s);
lvPhones.Selected.Caption := s;
end;
end;
function TfrmPhoneHistory.GetNums: WideString;
var
s: WideString;
i: Integer;
begin
s := '';
for i := 0 to lvPhones.Items.Count-1 do begin
if i <> 0 then s := s + '|';
s := s + lvPhones.Items[i].Caption;
end;
Result := s;
end;
procedure TfrmPhoneHistory.SetNums(const Value: WideString);
var
s,n: WideString;
begin
lvPhones.Items.Clear;
s := Value;
repeat
n := GetFirstToken(s,'|');
if n = '' then break;
lvPhones.Items.Add.Caption := n;
until s = '';
end;
procedure TfrmPhoneHistory.lvPhonesDblClick(Sender: TObject);
begin
if EditButton.Enabled then EditButton.Click;
end;
procedure TfrmPhoneHistory.lvPhonesKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_RETURN then
if EditButton.Enabled then EditButton.Click;
if Key = VK_DELETE then
if DeleteButton.Enabled then DeleteButton.Click;
if (Key = Ord('A')) and (ssCtrl in Shift) then
lvPhones.SelectAll;
end;
procedure TfrmPhoneHistory.FormCreate(Sender: TObject);
begin
gghTranslateComponent(self);
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?