⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 setmess.pas

📁 一个由Tlistview写的通讯录
💻 PAS
字号:
unit SetMess;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  QDialogs, StdCtrls, ExtCtrls;

type
  TSetupf = class(TForm)
    GroupBox1: TGroupBox;
    NameCheck: TCheckBox;
    BirthdayCheck: TCheckBox;
    MoveTelCheck: TCheckBox;
    HomeTelCheck: TCheckBox;
    OfficeTelCheck: TCheckBox;
    FaxCheck: TCheckBox;
    CompanyCheck: TCheckBox;
    PostcodeCheck: TCheckBox;
    AddressCheck: TCheckBox;
    EmailCheck: TCheckBox;
    WebCheck: TCheckBox;
    Panel1: TPanel;
    Label1: TLabel;
    Button1: TButton;
    Button2: TButton;
    AddBtn: TButton;
    GroupBox2: TGroupBox;
    ListBox: TListBox;
    NewFieldEdit: TEdit;
    DelBtn: TButton;
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure ListBoxClick(Sender: TObject);
    procedure AddBtnClick(Sender: TObject);
    procedure DelBtnClick(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    FieldList:TStringList;
    TabOrderIndex:Byte;
    CheckBoxX,CheckboxY:Word;
    CheckBoxs:Array of TCheckBox;
  public
    { Public declarations }
  end;

var
  Setupf: TSetupf;

implementation

uses Note;

{$R *.dfm}

procedure TSetupf.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  Release;
end;

procedure TSetupf.ListBoxClick(Sender: TObject);
begin
  if ListBox.Selected[ListBox.ItemIndex] then DelBtn.Enabled:=True
  else DelBtn.Enabled:=False;
end;

procedure TSetupf.AddBtnClick(Sender: TObject);
begin
  if NewFieldEdit.Text<>'' then
  begin
    ListBox.Items.Append(NewFieldEdit.Text);
    Inc(FieldCount);
    Setlength(CheckBoxs,FieldCount);
    CheckBoxs[FieldCount-1]:=TCheckBox.Create(Setupf);
    CheckBoxs[FieldCount-1].Font:=NameCheck.Font;
    CheckBoxs[FieldCount-1].Parent:=GroupBox1;
//      CheckBoxs[i].Width:=NameEdit.Width;
    CheckBoxs[FieldCount-1].Left:=CheckBoxX;
    CheckBoxs[FieldCount-1].Top:=CheckBoxY;
    CheckBoxs[FieldCount-1].Caption :=NewFieldEdit.Text ;
    CheckBoxs[FieldCount-1].TabOrder:=TabOrderIndex;
    Inc(TabOrderIndex);
    Inc(CheckBoxX,99);
    if CheckBoxX>322 then
    begin
      Inc(CheckBoxY,26);
      CheckBoxX:=25;
      Height:=Height+26;
      GroupBox1.Height:=GroupBox1.Height+26;
    end;
    NewFieldEdit.Clear;
    NewFieldEdit.SetFocus;
  end;
end;

procedure TSetupf.DelBtnClick(Sender: TObject);
begin
 if MessageDlg('警告','您确实要删除段的所有内容吗?',mtWarning,[mbYes,mbNo],0,mbNo,nil)=3 then
  ListBox.Items.Delete(ListBox.ItemIndex);
end;

procedure TSetupf.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#27 then
    Close;
end;

procedure TSetupf.Button1Click(Sender: TObject);
var
  i:Byte;
  j:Integer;
begin
 i:=ListBox.Items.Count;
 FileSeek(CfgFile,50,0);
 FileWrite(CfgFile,i,1);
 SetLength(Fields,i);
 for j:=0 to CustomCount-1 do
 begin
  if j<ListBox.Items.Count then
  begin
    FieldName:=ListBox.Items.Strings[j];
    Fields[j]:=FieldName;
  end
  else FieldName:='';
  FileWrite(CfgFile,FieldName,20);
 end;
 if (i>FieldCount)and(FieldCount=0) then
  begin
  for j:=0 to MainForm.ListView.Items.Count-1 do
  begin
    for i:=0 to CustomCount-1 do
      FieldText[i]:='';
    FileSeek(CfgFile,1000+1000*j,0);
    FileWrite(CfgFile,FieldText,1000);
  end;
 end
 else begin
   for j:=0 to MainForm.ListView.Items.Count-1 do
   begin
     FileSeek(CfgFile,1000+1000*j,0);
     FileRead(CfgFile,FieldText,1000);
     for i:=0 to CustomCount-1 do
     begin
       if FieldList.IndexOf(Fields[i])>=0 then
         FieldText[i]:=FieldText[FieldList.IndexOf(Fields[i])]
       else FieldText[i]:='';
     end;
     FileSeek(CfgFile,-1000,1);
     FileWrite(CfgFile,FieldText,1000);
   end;
 end;
 FieldCount:=ListBox.Items.Count;
 for j:=0 to ComponentCount-1 do
  if Components[j] is TCheckBox then
  begin
    if TCheckBox(Components[j]).Checked then
      FieldShow[TCheckBox(Components[j]).TabOrder]:=0
    else FieldShow[TCheckBox(Components[j]).TabOrder]:=1;
  end;
 FileSeek(Cfgfile,900,0);
 FileWrite(CfgFile,FieldShow,11+CustomCount);
 Close;
 MainForm.SetListViewColume;
 MainForm.ListViewLoadData(False,0);

end;

procedure TSetupf.FormShow(Sender: TObject);
var
  i:Integer;
begin
  ListBox.Clear ;
  FieldList:=TStringList.Create;
  FieldList.Clear ;
  for i:=0 to FieldCount-1 do
  begin
    ListBox.Items.Add(Fields[i]);
    FieldList.Add(Fields[i]);
  end;
  DelBtn.Enabled:=False;
 for i:=0 to ComponentCount-1 do
  if Components[i] is TCheckBox then
   if FieldShow[TCheckBox(Components[i]).TabOrder]=0 then
    TCheckBox(Components[i]).Checked:=True
   else TCheckBox(Components[i]).Checked:=False;
end;

procedure TSetupf.FormCreate(Sender: TObject);
var
  i:Byte;
begin
  CheckBoxY:=75;
  CheckBoxX:=321;
  TabOrderIndex:=11;
  if FieldCount>0 then
  begin
    SetLength(CheckBoxs,FieldCount);
    for i:=0 to FieldCount-1 do
    begin
      CheckBoxs[i]:=TCheckBox.Create(Setupf);
      CheckBoxs[i].Font:=NameCheck.Font;
      CheckBoxs[i].Parent:=GroupBox1;
//      CheckBoxs[i].Width:=NameEdit.Width;
      CheckBoxs[i].Left:=CheckBoxX;
      CheckBoxs[i].Top:=CheckBoxY;
      CheckBoxs[i].Caption :=Fields[i];
      CheckBoxs[i].TabOrder:=TabOrderIndex;
      Inc(TabOrderIndex);
      if (i mod 4=0)or((i=FieldCount-1)and(i mod 4=1)) then
      begin
        Inc(CheckBoxY,26);
        CheckBoxX:=25;
      end
      else Inc(CheckBoxX,99);
    end;
  end;
  i:=(FieldCount-1) div 4;
  if (FieldCount-1) mod 4>0 then Inc(i);
  Height:=Height+26*i;
  GroupBox1.Height:=GroupBox1.Height+26*i;
end;

procedure TSetupf.Button2Click(Sender: TObject);
begin
  FieldCount:=FieldList.Count;
end;

procedure TSetupf.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  FieldList.Free;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -