home *** CD-ROM | disk | FTP | other *** search
/ Freelog 11 / Freelog011.iso / BestOf / PhoenixMail / Source / phoenix / FMEnviro.pas < prev    next >
Pascal/Delphi Source File  |  1998-12-04  |  21KB  |  663 lines

  1. {*****************************************************************************
  2.  *
  3.  *  FMEnviro.pas - Environment Options Form  (16-August-1998)
  4.  *
  5.  *  Copyright (c) 1998-99 Michael Haller
  6.  *
  7.  *  Author:     Michael Haller
  8.  *  E-mail:     michael@discountdrive.com
  9.  *  Homepage:   http://www.discountdrive.com/sunrise
  10.  *
  11.  *  This program is free software; you can redistribute it and/or
  12.  *  modify it under the terms of the GNU General Public License
  13.  *  as published by the Free Software Foundation;
  14.  *
  15.  *  This program is distributed in the hope that it will be useful,
  16.  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  *  GNU General Public License for more details.
  19.  *
  20.  *  You should have received a copy of the GNU General Public License
  21.  *  along with this program; if not, write to the Free Software
  22.  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
  23.  *
  24.  *----------------------------------------------------------------------------
  25.  *
  26.  *  Revision history:
  27.  *
  28.  *     DATE     REV                 DESCRIPTION
  29.  *  ----------- --- ----------------------------------------------------------
  30.  *
  31.  *****************************************************************************}
  32.  
  33. unit FMEnviro;
  34.  
  35. interface
  36.  
  37. uses
  38.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  39.   StdCtrls, PXStuff, ExtCtrls, ComCtrls, Buttons, LangSup, NumEdit, FMDirectory,
  40.   FileCtrl, ComboBoxEx, Mask, ParserSup, StatusBarEx;
  41.  
  42. type
  43.   TEnviroForm = class(TForm)
  44.     Panel1: TPanel;
  45.     PageControl1: TPageControl;
  46.     TabSheet1: TTabSheet;
  47.     Bevel5: TBevel;
  48.     Label16: TLabel;
  49.     Panel2: TPanel;
  50.     Image1: TImage;
  51.     Image2: TImage;
  52.     Label24: TLabel;
  53.     Button3: TButton;
  54.     Button4: TButton;
  55.     Button5: TButton;
  56.     CheckBox1: TCheckBox;
  57.     OpenDialog1: TOpenDialog;
  58.     CheckBox6: TCheckBox;
  59.     TabSheet3: TTabSheet;
  60.     FontDialog1: TFontDialog;
  61.     Label8: TLabel;
  62.     Bevel4: TBevel;
  63.     CheckBox5: TCheckBox;
  64.     CheckBox7: TCheckBox;
  65.     TabSheet4: TTabSheet;
  66.     Label9: TLabel;
  67.     Bevel6: TBevel;
  68.     CheckBox8: TCheckBox;
  69.     Label10: TLabel;
  70.     Bevel7: TBevel;
  71.     CheckBox9: TCheckBox;
  72.     Label2: TLabel;
  73.     Bevel1: TBevel;
  74.     Label7: TLabel;
  75.     SpeedButton1: TSpeedButton;
  76.     Panel3: TPanel;
  77.     Label11: TLabel;
  78.     Label12: TLabel;
  79.     CheckBox10: TCheckBox;
  80.     CheckBox11: TCheckBox;
  81.     CheckBox12: TCheckBox;
  82.     CheckBox13: TCheckBox;
  83.     CheckBox14: TCheckBox;
  84.     UpDown1: TUpDown;
  85.     CheckBox15: TCheckBox;
  86.     Edit3: TNumEdit;
  87.     TabSheet5: TTabSheet;
  88.     Label14: TLabel;
  89.     Bevel8: TBevel;
  90.     Label1: TLabel;
  91.     Bevel2: TBevel;
  92.     Label3: TLabel;
  93.     Edit1: TEdit;
  94.     Edit2: TEdit;
  95.     Label4: TLabel;
  96.     CheckBox3: TCheckBox;
  97.     SpeedButton5: TSpeedButton;
  98.     Label15: TLabel;
  99.     Edit4: TEdit;
  100.     SpeedButton2: TSpeedButton;
  101.     Label17: TLabel;
  102.     Label18: TLabel;
  103.     Bevel9: TBevel;
  104.     Label19: TLabel;
  105.     NumEdit1: TNumEdit;
  106.     UpDown2: TUpDown;
  107.     Label20: TLabel;
  108.     CheckBox16: TCheckBox;
  109.     TabSheet2: TTabSheet;
  110.     Label5: TLabel;
  111.     Bevel3: TBevel;
  112.     Label21: TLabel;
  113.     Edit5: TEdit;
  114.     Label6: TLabel;
  115.     Edit6: TEdit;
  116.     Label22: TLabel;
  117.     CheckBox17: TCheckBox;
  118.     ComboBoxEx1: TComboBoxEx;
  119.     MaskEdit1: TMaskEdit;
  120.     MaskEdit2: TMaskEdit;
  121.     NumEdit2: TNumEdit;
  122.     UpDown3: TUpDown;
  123.     Label26: TLabel;
  124.     CheckBox2: TCheckBox;
  125.     CheckBox4: TCheckBox;
  126.     CheckBox18: TCheckBox;
  127.     TabSheet6: TTabSheet;
  128.     Label23: TLabel;
  129.     Bevel10: TBevel;
  130.     Label25: TLabel;
  131.     Edit7: TEdit;
  132.     SpeedButton3: TSpeedButton;
  133.     Label27: TLabel;
  134.     Edit8: TEdit;
  135.     SpeedButton4: TSpeedButton;
  136.     OpenDialog2: TOpenDialog;
  137.     Label28: TLabel;
  138.     Label29: TLabel;
  139.     CheckBox19: TCheckBox;
  140.     Bevel12: TBevel;
  141.     Label30: TLabel;
  142.     Bevel13: TBevel;
  143.     Label31: TLabel;
  144.     Edit9: TEdit;
  145.     Label32: TLabel;
  146.     Edit10: TEdit;
  147.     Label33: TLabel;
  148.     Edit11: TEdit;
  149.     Label34: TLabel;
  150.     Edit12: TEdit;
  151.     SpeedButton6: TSpeedButton;
  152.     TabSheet7: TTabSheet;
  153.     Label13: TLabel;
  154.     Label35: TLabel;
  155.     Label36: TLabel;
  156.     ListView1: TListView;
  157.     ListView2: TListView;
  158.     ImageList1: TImageList;
  159.     Label37: TLabel;
  160.     Bevel11: TBevel;
  161.     TabSheet8: TTabSheet;
  162.     Label38: TLabel;
  163.     Bevel14: TBevel;
  164.     CheckBox20: TCheckBox;
  165.     CheckBox21: TCheckBox;
  166.     Label39: TLabel;
  167.     Edit13: TEdit;
  168.     SpeedButton7: TSpeedButton;
  169.     OpenDialog3: TOpenDialog;
  170.     CheckBox22: TCheckBox;
  171.     CheckBox23: TCheckBox;
  172.     CheckBox24: TCheckBox;
  173.     procedure FormShow(Sender: TObject);
  174.     procedure Button1Click(Sender: TObject);
  175.     procedure SpeedButton5Click(Sender: TObject);
  176.     procedure FormCreate(Sender: TObject);
  177.     procedure SpeedButton1Click(Sender: TObject);
  178.     procedure CheckBox11Click(Sender: TObject);
  179.     procedure SpeedButton2Click(Sender: TObject);
  180.     procedure Button5Click(Sender: TObject);
  181.     procedure CheckBox17Click(Sender: TObject);
  182.     procedure SpeedButton3Click(Sender: TObject);
  183.     procedure SpeedButton4Click(Sender: TObject);
  184.     procedure SpeedButton6Click(Sender: TObject);
  185.     procedure ListView1DragOver(Sender, Source: TObject; X, Y: Integer;
  186.       State: TDragState; var Accept: Boolean);
  187.     procedure ListView2DragOver(Sender, Source: TObject; X, Y: Integer;
  188.       State: TDragState; var Accept: Boolean);
  189.     procedure ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
  190.     procedure ListView2DragDrop(Sender, Source: TObject; X, Y: Integer);
  191.     procedure ListView2Compare(Sender: TObject; Item1, Item2: TListItem;
  192.       Data: Integer; var Compare: Integer);
  193.     procedure SpeedButton7Click(Sender: TObject);
  194.   private
  195.     { Private declarations }
  196.   public
  197.     { Public declarations }
  198.     procedure GetOptions;
  199.     procedure SetOptions;
  200.   end;
  201.  
  202. var
  203.   EnviroForm: TEnviroForm;
  204.  
  205. implementation
  206.  
  207. {$R *.DFM}
  208.  
  209. uses
  210.   Main, FMAddress, FMMailOptions;
  211.  
  212. procedure TEnviroForm.GetOptions;
  213. var
  214.   I, E, ImageIndex: Integer;
  215.   B: TSpeedButtonEx;
  216.   Item: TListItem;
  217.   SL: TStringList;
  218. begin
  219.   CheckBox1.Checked := bMakeProtocol;
  220.   CheckBox3.Checked := bVirusMin;
  221.   CheckBox8.Checked := bFriendlyPrinter;
  222.   CheckBox9.Checked := bAskForLanguage;
  223.   Edit1.Text := sVirusProg;
  224.   Edit2.Text := sVirusParams;
  225.   CheckBox4.Checked := bAskToGoOffline;
  226.   CheckBox6.Checked := bAskForDelFromServer;
  227.   Panel3.Caption := ' '+sMessageFont+'   '+IntToStr(iFontSize);
  228.   FontDialog1.Font.Name := sMessageFont;
  229.   FontDialog1.Font.Size := iFontSize;
  230.   FontDialog1.Font.Color := iFontColor;
  231.   FontDialog1.Font.CharSet := iFontCharSet;
  232.   CheckBox7.Checked := bGoOnlineAtStart;
  233.   CheckBox5.Checked := bStartAtWindowsStart;
  234.   CheckBox11.Checked := bScheduleC1;
  235.   CheckBox12.Checked := bScheduleC2;
  236.   CheckBox13.Checked := bScheduleC3;
  237.   CheckBox14.Checked := bScheduleC4;
  238.   CheckBox10.Checked := bScheduleC5;
  239.   MaskEdit1.Text := sScheduleS2;
  240.   MaskEdit2.Text := sScheduleS3;
  241.   CheckBox15.Checked := bCheckForStdEMail;
  242.   CheckBox11Click(Self);
  243.   Edit4.Text := sCustAddressBook;
  244.   CheckBox16.Checked := bListMailsAtDownload;
  245.   ComboBoxEx1.ItemIndex := ComboBoxEx1.Values.IndexOf(sDUNConnection);
  246.   Edit5.Text := sDUNUsername;
  247.   Edit6.Text := sDUNPassword;
  248.   Checkbox17.Checked := bDUNAskForPassword;
  249.   UpDown1.Position := sScheduleS1;
  250.   UpDown2.Position := iMarkAsReadSec;
  251.   UpDown3.Position := iDUNAutoQuitTime;
  252.   CheckBox2.Checked := bDUNAutoQuit;
  253.   CheckBox18.Checked := bViewStatusAtEnd;
  254.   Edit7.Text := sSoundFile1;
  255.   Edit8.Text := sSoundFile2;
  256.   Edit12.Text := sSoundFile3;
  257.   CheckBox19.Checked := bDUNNormalQuit;
  258.   Edit9.Text := sAccountsCaption;
  259.   Edit10.Text := sTrashBagCaption;
  260.   Edit11.Text := sRepositoryCaption;
  261.   CheckBox20.Checked := bOfficeFonts;
  262.   CheckBox21.Checked := bFlatButtons;
  263.   Edit13.Text := sToolbarBKBitmap;
  264.   CheckBox22.Checked := bSmallToolbarButtons;
  265.   CheckBox23.Checked := bShowCntInBrackets;
  266.   CheckBox24.Checked := bHideAnimations;
  267.  
  268.   TabSheet2.TabVisible := MainForm.DialUp1.RasInstalled;
  269.   if not MainForm.DialUp1.RasInstalled then begin
  270.     CheckBox19.Checked := False;
  271.     CheckBox2.Checked := False;
  272.     CheckBox10.Checked := False;
  273.     CheckBox4.Checked := False;
  274.     CheckBox19.Visible := False;
  275.     CheckBox2.Visible := False;
  276.     CheckBox10.Visible := False;
  277.     CheckBox4.Visible := False;
  278.     Label29.Visible := False;
  279.     Label26.Visible := False;
  280.     NumEdit2.Visible := False;
  281.     UpDown3.Visible := False;
  282.   end;
  283.  
  284.   CheckBox17Click(Self);
  285.  
  286.   ListView1.Items.Clear;
  287.   ListView2.Items.Clear;
  288.   Item := ListView2.Items.Add;
  289.   Item.Caption := MainForm.ListBox1.Items[91];
  290.   MainForm.GetToolbarButttonByIndex(0, I);
  291.   Item.ImageIndex := I;
  292.   Item.StateIndex := 0;
  293.   SL := TStringList.Create;
  294.   CommataStringToStringList(sToolbarButtons, SL);
  295.   for I := 0 to SL.Count-1 do begin
  296.     E := StrToInt(SL.Strings[I]);
  297.     B := MainForm.GetToolbarButttonByIndex(E, ImageIndex);
  298.     Item := ListView1.Items.Add;
  299.     Item.ImageIndex := ImageIndex;
  300.     Item.StateIndex := E;
  301.     if B = nil then Item.Caption := MainForm.ListBox1.Items[91] else Item.Caption := B.Comment;
  302.   end;
  303.   for I := 1 to iToolbarButtonCount do begin
  304.     if SL.IndexOf(IntToStr(I)) = -1 then begin
  305.       B := MainForm.GetToolbarButttonByIndex(I, ImageIndex);
  306.       Item := ListView2.Items.Add;
  307.       Item.Caption := B.Comment;
  308.       Item.ImageIndex := ImageIndex;
  309.       Item.StateIndex := I;
  310.     end;
  311.   end;
  312.   ListView2.SortType := stText;
  313.   ListView2.AlphaSort;
  314.   SL.Free;
  315. end;
  316.  
  317. procedure TEnviroForm.SetOptions;
  318. var
  319.   I, E: Integer;
  320.   P: TPoint;
  321.   SL1, SL2: TStringList;
  322.   B: Boolean;
  323. begin
  324.   bMakeProtocol := CheckBox1.Checked;
  325.   bVirusMin := CheckBox3.Checked;
  326.   bFriendlyPrinter := CheckBox8.Checked;
  327.   bAskForLanguage := CheckBox9.Checked;
  328.   sVirusProg := Edit1.Text;
  329.   sVirusParams := Edit2.Text;
  330.   bAskToGoOffline := CheckBox4.Checked;
  331.   bAskForDelFromServer := CheckBox6.Checked;
  332.   sMessageFont := FontDialog1.Font.Name;
  333.   iFontSize := FontDialog1.Font.Size;
  334.   iFontColor := FontDialog1.Font.Color;
  335.   iFontCharSet := FontDialog1.Font.CharSet;
  336.   bGoOnlineAtStart := CheckBox7.Checked;
  337.   bStartAtWindowsStart := CheckBox5.Checked;
  338.   bScheduleC1 := CheckBox11.Checked;
  339.   bScheduleC2 := CheckBox12.Checked;
  340.   bScheduleC3 := CheckBox13.Checked;
  341.   bScheduleC4 := CheckBox14.Checked;
  342.   bScheduleC5 := CheckBox10.Checked;
  343.   sScheduleS2 := MaskEdit1.Text;
  344.   sScheduleS3 := MaskEdit2.Text;
  345.   bCheckForStdEMail := CheckBox15.Checked;
  346.   sCustAddressBook := Edit4.Text;
  347.   bListMailsAtDownload := CheckBox16.Checked;
  348.   sDUNConnection := ComboBoxEx1.Values[ComboBoxEx1.ItemIndex];
  349.   sDUNUsername := Edit5.Text;
  350.   sDUNPassword := Edit6.Text;
  351.   bDUNAskForPassword := Checkbox17.Checked;
  352.   bDUNAutoQuit := CheckBox2.Checked;
  353.   bViewStatusAtEnd := CheckBox18.Checked;
  354.   sScheduleS1 := UpDown1.Position;
  355.   iMarkAsReadSec := UpDown2.Position;
  356.   iDUNAutoQuitTime := UpDown3.Position;
  357.   sSoundFile1 := Edit7.Text;
  358.   sSoundFile2 := Edit8.Text;
  359.   sSoundFile3 := Edit12.Text;
  360.   bDUNNormalQuit := Checkbox19.Checked;
  361.   sAccountsCaption := Edit9.Text;
  362.   sTrashBagCaption := Edit10.Text;
  363.   sRepositoryCaption := Edit11.Text;
  364.   bOfficeFonts := CheckBox20.Checked;
  365.   bFlatButtons := CheckBox21.Checked;
  366.   sToolbarBKBitmap := Edit13.Text;
  367.   bSmallToolbarButtons := CheckBox22.Checked;
  368.   bHideAnimations := CheckBox24.Checked;
  369.  
  370.   if bShowCntInBrackets <> CheckBox23.Checked then begin
  371.     bShowCntInBrackets := CheckBox23.Checked;
  372.     for I := 0 to MainForm.TreeView1.Items.Count-1 do SetPXTreeNodeName(MainForm.TreeView1.Items[I]);
  373.   end;
  374.  
  375.   if bOfficeFonts then begin
  376.     MainForm.Font.Name := sOfficeFontName;
  377.     AddressForm.Font.Name := sOfficeFontName;
  378.     MailOptionsForm.Font.Name := sOfficeFontName;
  379.   end else begin
  380.     MainForm.Font.Name := 'MS Sans Serif';
  381.     AddressForm.Font.Name := 'MS Sans Serif';
  382.     MailOptionsForm.Font.Name := 'MS Sans Serif';
  383.   end;
  384.  
  385.   MainForm.RepositoryNode.Text := sRepositoryCaption;
  386.   MainForm.TrashNode.Text := sTrashBagCaption;
  387.   MainForm.AccountsNode.Text := sAccountsCaption;
  388.  
  389.   SL1 := TStringList.Create;
  390.   SL2 := TStringList.Create;
  391.   for I := 0 to ListView1.Items.Count-1 do begin
  392.     P := ListView1.Items[I].GetPosition;
  393.     B := True;
  394.     for E := 0 to SL1.Count-1 do
  395.       if P.X < StrToInt(SL1.Strings[E]) then begin
  396.         SL1.Insert(E, IntToStr(P.X));
  397.         SL2.Insert(E, IntToStr(ListView1.Items[I].StateIndex));
  398.         B := False; Break;
  399.       end;
  400.     if B then begin
  401.       SL1.Add(IntToStr(P.X));
  402.       SL2.Add(IntToStr(ListView1.Items[I].StateIndex));
  403.     end;
  404.   end;
  405.   sToolbarButtons := StringListToCommataString(SL2, False);
  406.   SL1.Free; SL2.Free;
  407.  
  408.   MainForm.SetToolbarButtonOrder;
  409.  
  410.   MainForm.DefaultFont.Name := sMessageFont;
  411.   MainForm.DefaultFont.Size := iFontSize;
  412.   MainForm.DefaultFont.Color := iFontColor;
  413.   MainForm.RichEdit1.DefAttributes.Assign(MainForm.DefaultFont);
  414.   MainForm.RichEdit1.SelAttributes.Assign(MainForm.DefaultFont);
  415. end;
  416.  
  417. procedure TEnviroForm.FormShow(Sender: TObject);
  418. begin
  419.   GetOptions;
  420. end;
  421.  
  422. procedure TEnviroForm.Button1Click(Sender: TObject);
  423. begin
  424.   SetOptions;
  425. end;
  426.  
  427. procedure TEnviroForm.SpeedButton5Click(Sender: TObject);
  428. begin
  429.   OpenDialog1.FileName := Edit1.Text;
  430.   if OpenDialog1.Execute then Edit1.Text := OpenDialog1.Filename;
  431. end;
  432.  
  433. function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric; FontType: Integer; Data: Pointer): Integer; stdcall;
  434. begin
  435.   TStrings(Data).Add(LogFont.lfFaceName);
  436.   Result := 1;
  437. end;
  438.  
  439. procedure TEnviroForm.FormCreate(Sender: TObject);
  440. var
  441.   I: Integer;
  442. begin
  443.   AttachLanguageToForm(Self);
  444.   if bOfficeFonts then Font.Name := sOfficeFontName;
  445.   if bFlatButtons = False then Set3DButtons(False, Self);
  446.   ImageList1.ResourceLoad(rtBitmap, 'PX505', clFuchsia);
  447.   Image1.Picture.Bitmap := MainForm.Image5.Picture.Bitmap;
  448.   Label8.Caption := Label8.Caption+' ';
  449.   Label16.Caption := Label16.Caption+' ';
  450.   Label1.Caption := Label1.Caption+' ';
  451.   Label10.Caption := Label10.Caption+' ';
  452.   Label18.Caption := Label18.Caption+' ';
  453.   Label9.Caption := Label9.Caption+' ';
  454.   Label2.Caption := Label2.Caption+' ';
  455.   Label14.Caption := Label14.Caption+' ';
  456.   Label5.Caption := Label5.Caption+' ';
  457.   Label23.Caption := Label23.Caption+' ';
  458.   Label30.Caption := Label30.Caption+' ';
  459.   Label37.Caption := Label37.Caption+' ';
  460.   Label38.Caption := Label38.Caption+' ';
  461.   UpDown1.Min := Edit3.Min;
  462.   UpDown1.Max := Edit3.Max;
  463.   UpDown2.Min := NumEdit1.Min;
  464.   UpDown2.Max := NumEdit1.Max;
  465.   UpDown3.Min := NumEdit2.Min;
  466.   UpDown3.Max := NumEdit2.Max;
  467.  
  468.   NumEdit1.Left := Label19.Left+Label19.Width+4;
  469.   UpDown2.Left :=  NumEdit1.Left+NumEdit1.Width;
  470.   Label20.Left := UpDown2.Left+UpDown2.Width+4;
  471.  
  472.   Edit3.Left := Label11.Left+Label11.Width+4;
  473.   UpDown1.Left :=  Edit3.Left+Edit3.Width;
  474.   Label12.Left := UpDown1.Left+UpDown1.Width+4;
  475.  
  476.   NumEdit2.Left := Label29.Left+Label29.Width+4;
  477.   UpDown3.Left :=  NumEdit2.Left+NumEdit2.Width;
  478.   Label26.Left := UpDown3.Left+UpDown3.Width+4;
  479.  
  480.   if MainForm.DialUp1.RasInstalled then begin
  481.     ComboBoxEx1.Items.Assign(MainForm.DialUp1.PossibleConnections);
  482.     ComboBoxEx1.Values.Assign(MainForm.DialUp1.PossibleConnections);
  483.   end;
  484.   ComboBoxEx1.Items.Insert(0, MainForm.ListBox1.Items[79]);
  485.   ComboBoxEx1.Values.Insert(0, '');
  486.   ComboBoxEx1.ItemIndex := 0;
  487.   ComboBoxEx1.ImgIndexes.Add('13');
  488.   for I := 0 to ComboBoxEx1.Items.Count-1 do ComboBoxEx1.ImgIndexes.Add('12');
  489.  
  490.   if iColorDepth <= 8 then begin
  491.     Label39.Enabled := False;
  492.     Edit3.Enabled := False;
  493.     SpeedButton7.Enabled := False;
  494.   end;
  495.  
  496.   Edit6.PasswordChar := '*';
  497.  
  498.   ListView1.Width := Label35.Width;
  499.   ListView1.Height := Label36.Top-Label35.Top-Label35.Height-6;
  500.   ListView2.Width := ListView1.Width;
  501.   ListView2.Height := ListView1.Height;
  502. end;
  503.  
  504. procedure TEnviroForm.SpeedButton1Click(Sender: TObject);
  505. begin
  506.   FontDialog1.Font.Style := [];
  507.   if FontDialog1.Execute then begin
  508.     Panel3.Caption := ' '+FontDialog1.Font.Name+'   '+IntToStr(FontDialog1.Font.Size);
  509.   end;
  510. end;
  511.  
  512. procedure TEnviroForm.CheckBox11Click(Sender: TObject);
  513. begin
  514.   Label11.Enabled := CheckBox11.Checked;
  515.   Label12.Enabled := CheckBox11.Checked;
  516.   Edit3.Enabled := CheckBox11.Checked;
  517.   UpDown1.Enabled := CheckBox11.Checked;
  518.   CheckBox13.Enabled := CheckBox12.Checked;
  519.   CheckBox14.Enabled := CheckBox12.Checked;
  520.   if not CheckBox13.Enabled then CheckBox13.Checked := False;
  521.   if not CheckBox14.Enabled then CheckBox14.Checked := False;
  522.   MaskEdit1.Enabled := CheckBox13.Checked;
  523.   MaskEdit2.Enabled := CheckBox14.Checked;
  524.   Label29.Enabled := CheckBox2.Checked;
  525.   Label26.Enabled := CheckBox2.Checked;
  526.   NumEdit2.Enabled := CheckBox2.Checked;
  527.   UpDown3.Enabled := CheckBox2.Checked;
  528. end;
  529.  
  530. procedure TEnviroForm.SpeedButton2Click(Sender: TObject);
  531. begin
  532.   DirectoryForm := TDirectoryForm.Create(Self);
  533.   if DirectoryExists(Edit4.Text) then
  534.     DirectoryForm.RzDirectoryListBox1.Directory := sLastAttSaveDir
  535.   else
  536.     DirectoryForm.RzDirectoryListBox1.Directory := sAddressBookFolder;
  537.   if DirectoryForm.ShowModal = mrOK then
  538.     Edit4.Text := MakeValidDirname(DirectoryForm.RzDirectoryListBox1.Directory);
  539. end;
  540.  
  541. procedure TEnviroForm.Button5Click(Sender: TObject);
  542. begin
  543.   Application.HelpContext(4);
  544. end;
  545.  
  546. procedure TEnviroForm.CheckBox17Click(Sender: TObject);
  547. var
  548.   B: Boolean;
  549. begin
  550.   B := (ComboBoxEx1.Values[ComboBoxEx1.ItemIndex] <> '');
  551.   Label6.Enabled := B;
  552.   Label22.Enabled := B;
  553.   Edit5.Enabled := B;
  554.   Edit6.Enabled := B;
  555.   Checkbox17.Enabled := B;
  556.   if B then Edit6.Enabled := not CheckBox17.Checked;
  557. end;
  558.  
  559. procedure TEnviroForm.SpeedButton3Click(Sender: TObject);
  560. begin
  561.   OpenDialog2.FileName := Edit7.Text;
  562.   if OpenDialog2.Execute then Edit7.Text := OpenDialog2.Filename;
  563. end;
  564.  
  565. procedure TEnviroForm.SpeedButton4Click(Sender: TObject);
  566. begin
  567.   OpenDialog2.FileName := Edit8.Text;
  568.   if OpenDialog2.Execute then Edit8.Text := OpenDialog2.Filename;
  569. end;
  570.  
  571. procedure TEnviroForm.SpeedButton6Click(Sender: TObject);
  572. begin
  573.   OpenDialog2.FileName := Edit12.Text;
  574.   if OpenDialog2.Execute then Edit12.Text := OpenDialog2.Filename;
  575. end;
  576.  
  577. procedure TEnviroForm.ListView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
  578. begin
  579.   Accept := (Source = ListView1) or (Source = ListView2);
  580. end;
  581.  
  582. procedure TEnviroForm.ListView2DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
  583. begin
  584.   Accept := (Source = ListView1);
  585. end;
  586.  
  587. procedure TEnviroForm.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer);
  588. var
  589.   Item, AItem: TListItem;
  590.   P: TPoint;
  591. begin
  592.   //Showmessage('<<< P.X: '+inttostr(p.x)+'  X:'+inttostr(X)+'  '+ListView1.Selected.Caption);
  593.   if Source = ListView2 then begin
  594.     AItem := ListView1.GetNearestItem(Point(X, 10), sdAll);
  595.     Item := ListView1.Items.Add;
  596.     Item.Caption := ListView2.Selected.Caption;
  597.     Item.ImageIndex := ListView2.Selected.ImageIndex;
  598.     Item.StateIndex := ListView2.Selected.StateIndex;
  599.     if not Assigned(AItem) then P.X := 0 else P := AItem.GetPosition;
  600.     Item.SetPosition(Point(P.X, 10));
  601.     if ListView2.Selected.StateIndex <> 0 then ListView2.Selected.Delete;
  602.     Item.MakeVisible(False);
  603.   end;
  604.   if Source = ListView1 then begin
  605.     Item := ListView1.GetNearestItem(Point(X, 10), sdAll);
  606.     if not Assigned(Item) then Exit;
  607.     if Item = ListView1.Selected then Exit;
  608.     P := Item.GetPosition;
  609.     X := P.X;
  610.     P := ListView1.Selected.GetPosition;
  611.     if X < P.X then begin
  612.       ListView1.Selected.SetPosition(Point(X, 10));
  613.       P := Item.GetPosition;
  614.       Item.SetPosition(Point(P.X+ImageList1.Width*2, 10));
  615.     end else begin
  616.       ListView1.Selected.SetPosition(Point(X, 10));
  617.     end;
  618.   end;
  619.   ListView1.Invalidate;
  620.   ListView2.Invalidate;
  621.   Label36.Invalidate;
  622.   TabSheet7.Invalidate;
  623. end;
  624.  
  625. procedure TEnviroForm.ListView2DragDrop(Sender, Source: TObject; X, Y: Integer);
  626. var
  627.   Item: TListItem;
  628. begin
  629.   if Source = ListView1 then begin
  630.     if ListView1.Selected.StateIndex <> 0 then begin
  631.       Item := ListView2.Items.Add;
  632.       Item.Caption := ListView1.Selected.Caption;
  633.       Item.ImageIndex := ListView1.Selected.ImageIndex;
  634.       Item.StateIndex := ListView1.Selected.StateIndex;
  635.     end;
  636.     ListView1.Selected.Delete;
  637.   end;
  638.   ListView2.AlphaSort;
  639.   ListView1.Invalidate;
  640.   ListView2.Invalidate;
  641.   Label36.Invalidate;
  642.   TabSheet7.Invalidate;
  643. end;
  644.  
  645. procedure TEnviroForm.ListView2Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);
  646. begin
  647.   Compare := AnsiStrIComp(PChar(Item1.Caption), PChar(Item2.Caption));
  648.   if Item1.StateIndex = 0 then Compare := 0;
  649. end;
  650.  
  651.  
  652.  
  653.  
  654. procedure TEnviroForm.SpeedButton7Click(Sender: TObject);
  655. begin
  656.   OpenDialog3.FileName := Edit13.Text;
  657.   if OpenDialog3.Execute then Edit13.Text := OpenDialog3.Filename;
  658. end;
  659.  
  660.  
  661.  
  662. end.
  663.