home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Freelog 11
/
Freelog011.iso
/
BestOf
/
PhoenixMail
/
Source
/
phoenix
/
FMMailOptions.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1999-02-10
|
12KB
|
417 lines
{*****************************************************************************
*
* FMMailOptions.pas - Properties form for EMails (25-July-1998)
*
* Copyright (c) 1998-99 Michael Haller
*
* Author: Michael Haller
* E-mail: michael@discountdrive.com
* Homepage: http://www.discountdrive.com/sunrise
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation;
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
*
*----------------------------------------------------------------------------
*
* Revision history:
*
* DATE REV DESCRIPTION
* ----------- --- ----------------------------------------------------------
*
*****************************************************************************}
unit FMMailOptions;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Buttons, ExtCtrls, StdCtrls, Grids, ComCtrls, FlyOverControl, Menus,
MailParser, ComboBoxEx, PXStuff, FMAddress, ParserSup, LangSup;
type
TMailOptionsForm = class(TForm)
Button1: TButton;
Button2: TButton;
Label4: TLabel;
Bevel2: TBevel;
Notebook1: TNotebook;
Notebook2: TNotebook;
SpeedButton6: TSpeedButton;
Label6: TLabel;
Label13: TLabel;
SpeedButton8: TSpeedButton;
Label19: TLabel;
Label17: TLabel;
Label16: TLabel;
Edit5: TEdit;
Edit6: TEdit;
StringGrid1: TStringGrid;
Bevel1: TBevel;
Label7: TLabel;
Label8: TLabel;
Bevel3: TBevel;
Label9: TLabel;
Bevel4: TBevel;
Label10: TLabel;
Bevel5: TBevel;
Panel3: TPanel;
Image2: TImage;
Label11: TLabel;
Label15: TLabel;
Bevel6: TBevel;
Notebook3: TNotebook;
Memo1: TMemo;
SpeedButton5: TSpeedButton;
Memo2: TMemo;
SpeedButton7: TSpeedButton;
Memo3: TMemo;
SpeedButton9: TSpeedButton;
FlyOverControl1: TFlyOverControl;
ComboBox1: TComboBoxEx;
SpeedButton10: TSpeedButton;
SpeedButton11: TSpeedButton;
DateTimePicker1: TDateTimePicker;
DateTimePicker2: TDateTimePicker;
Label14: TLabel;
SpeedButton1: TSpeedButton;
SpeedButton13: TSpeedButton;
SpeedButton14: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton4: TSpeedButton;
Label2: TLabel;
Bevel7: TBevel;
Label3: TLabel;
Bevel8: TBevel;
ComboBox2: TComboBox;
procedure FormCreate(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure FlyOverControl1ControlChange(Sender: TObject;
Control: TControl);
procedure FormShow(Sender: TObject);
procedure SpeedButton10Click(Sender: TObject);
procedure SpeedButton11Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Memo3Change(Sender: TObject);
procedure StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: String);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
procedure SpeedButton9Click(Sender: TObject);
procedure SpeedButton8Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton13Click(Sender: TObject);
procedure SpeedButton14Click(Sender: TObject);
procedure Label11Click(Sender: TObject);
private
{ Private declarations }
ReceiverIndex: Integer;
public
{ Public declarations }
procedure SetFields(Index: Integer);
procedure LoadMailHeader;
procedure SaveMailHeader;
end;
var
MailOptionsForm: TMailOptionsForm;
implementation
{$R *.DFM}
uses
Main;
var
ReceiverButtonLabels: array [0..2] of String;
procedure TMailOptionsForm.LoadMailHeader;
var
I: Integer;
B: Boolean;
S: String;
begin
ComboBox2.Items.Clear;
for I := 0 to MainForm.TreeView1.Items.Count-1 do
if MainForm.TreeView1.Items[I].StateIndex = 1 then
if Assigned(Mainform.TreeView1.Items[I].Data) then begin
S := PAccountData(Mainform.TreeView1.Items[I].Data)^.FromDesc+' <'+PAccountData(Mainform.TreeView1.Items[I].Data)^.FromMail+'>';
if ExtractEMailAddress(S) <> '' then
if Combobox2.Items.IndexOf(S) = -1 then
ComboBox2.Items.Add(S);
S := PAccountData(Mainform.TreeView1.Items[I].Data)^.ReplyDesc+' <'+PAccountData(Mainform.TreeView1.Items[I].Data)^.ReplyMail+'>';
if ExtractEMailAddress(S) <> '' then
if Combobox2.Items.IndexOf(S) = -1 then
ComboBox2.Items.Add(S);
end;
B := SaveMessage;
with CurrentEMail do begin
Memo1.Lines.Assign(ToReceiver);
Memo2.Lines.Assign(CC);
Memo3.Lines.Assign(BCC);
StringGrid1.RowCount := Fields.Count+1;
for I := 1 to Fields.Count do begin
StringGrid1.Cells[0, I] := Fields[I-1];
StringGrid1.Cells[1, I] := FieldValues[I-1];
end;
Edit5.Text := Subject;
Edit6.Text := Keywords;
ComboBox2.Text := From;
ComboBox1.Value := LowerCase(Priority);
DateTimePicker1.Date := ADate;
DateTimePicker2.Time := ATime;
end;
SaveMessage := B;
end;
procedure TMailOptionsForm.SaveMailHeader;
begin
with CurrentEMail do begin
ToReceiver.Assign(Memo1.Lines);
CC.Assign(Memo2.Lines);
BCC.Assign(Memo3.Lines);
Fields.Assign(StringGrid1.Cols[0]);
Fields.Delete(0);
FieldValues.Assign(StringGrid1.Cols[1]);
FieldValues.Delete(0);
Subject := Edit5.Text;
Keywords := Edit6.Text;
From := ComboBox2.Text;
Priority := ComboBox1.Values[ComboBox1.ItemIndex];
Priority[1] := UpCase(Priority[1]);
ADate := DateTimePicker1.Date;
ATime := DateTimePicker2.Time;
end;
end;
procedure TMailOptionsForm.SetFields(Index: Integer);
begin
case Index of
0: begin
NoteBook2.PageIndex := 0;
NoteBook1.PageIndex := 0;
ReceiverIndex := 0;
NoteBook3.PageIndex := 0;
SpeedButton6.Caption := ReceiverButtonLabels[ReceiverIndex];
SpeedButton3.Down := True;
end;
1: begin
NoteBook2.PageIndex := 1;
NoteBook1.PageIndex := 0;
SpeedButton2.Down := True;
end;
2: begin
NoteBook1.PageIndex := 1;
SpeedButton4.Down := True;
end;
end;
end;
procedure TMailOptionsForm.FormCreate(Sender: TObject);
begin
AttachLanguageToForm(Self);
if bOfficeFonts then Font.Name := sOfficeFontName;
if bFlatButtons = False then begin
Set3DButtons(False, Self);
Bevel8.Visible := False;
end;
ReceiverButtonLabels[0] := MainForm.ListBox1.Items[52];
ReceiverButtonLabels[1] := MainForm.ListBox1.Items[53];
ReceiverButtonLabels[2] := MainForm.ListBox1.Items[54];
SpeedButton6.Caption := ReceiverButtonLabels[0];
Image2.Hint := Label11.Hint;
Panel3.Hint := Label11.Hint;
Label10.Caption := Label10.Caption+' ';
Label8.Caption := Label8.Caption+' ';
Label7.Caption := Label7.Caption+' ';
Label9.Caption := Label9.Caption+' ';
Label15.Caption := Label15.Caption+' ';
Label3.Caption := Label3.Caption+' ';
SetFields(0);
StringGrid1.Cells[0, 0] := MainForm.ListBox1.Items[55];
StringGrid1.Cells[1, 0] := MainForm.ListBox1.Items[56];
Combobox1.Images := MainForm.ImageList1;
end;
procedure TMailOptionsForm.SpeedButton2Click(Sender: TObject);
begin
SetFields(1);
end;
procedure TMailOptionsForm.SpeedButton3Click(Sender: TObject);
begin
SetFields(0);
end;
procedure TMailOptionsForm.SpeedButton4Click(Sender: TObject);
begin
SetFields(2);
end;
procedure TMailOptionsForm.SpeedButton6Click(Sender: TObject);
begin
Inc(ReceiverIndex);
if ReceiverIndex = 3 then ReceiverIndex := 0;
NoteBook3.PageIndex := ReceiverIndex;
SpeedButton6.Caption := ReceiverButtonLabels[ReceiverIndex];
end;
procedure TMailOptionsForm.FlyOverControl1ControlChange(Sender: TObject;
Control: TControl);
begin
if Assigned(Control) then
Label11.Caption := Control.Hint
else
Label11.Caption := '';
end;
procedure TMailOptionsForm.FormShow(Sender: TObject);
begin
LoadMailHeader;
if bFlatButtons then begin
Set3DButtons(True, Self);
Bevel8.Visible := True;
SpeedButton10.Flat := False;
SpeedButton11.Flat := False;
SpeedButton6.Flat := False;
end else begin
Set3DButtons(False, Self);
Bevel8.Visible := False;
end;
end;
procedure TMailOptionsForm.SpeedButton10Click(Sender: TObject);
begin
StringGrid1.RowCount := StringGrid1.RowCount+1;
StringGrid1.Invalidate;
SaveMessage := True;
end;
procedure TMailOptionsForm.SpeedButton11Click(Sender: TObject);
var
I: Integer;
begin
if (StringGrid1.Row > 0) and (StringGrid1.Col > -1) then begin
for I := StringGrid1.Row to StringGrid1.RowCount-1 do begin
StringGrid1.Cells[0, I] := StringGrid1.Cells[0, I+1];
StringGrid1.Cells[1, I] := StringGrid1.Cells[1, I+1];
end;
StringGrid1.Cells[0, StringGrid1.RowCount-1] := '';
StringGrid1.Cells[1, StringGrid1.RowCount-1] := '';
if StringGrid1.RowCount > 2 then
StringGrid1.RowCount := StringGrid1.RowCount-1;
StringGrid1.Invalidate;
SaveMessage := True;
end;
end;
procedure TMailOptionsForm.Button1Click(Sender: TObject);
begin
if (Memo1.Lines.Count = 0) and (Memo2.Lines.Count = 0) and (Memo3.Lines.Count = 0) then begin
MessageDlg(MainForm.ListBox1.Items[57], mtWarning, [mbOK], 0);
end else begin
SaveMailHeader;
ModalResult := mrOK;
end;
end;
procedure TMailOptionsForm.Memo3Change(Sender: TObject);
begin
SaveMessage := True;
end;
procedure TMailOptionsForm.StringGrid1SetEditText(Sender: TObject; ACol, ARow: Integer; const Value: String);
begin
Memo3Change(Self);
end;
procedure TMailOptionsForm.SpeedButton5Click(Sender: TObject);
var
SL: TStringList;
begin
if AddressForm.ShowModal = mrOK then begin
SL := TStringList.Create;
CommataStringToStringList(AddressForm.GetSelAddresses, SL);
Memo1.Lines.Assign(SL);
SL.Free;
end;
end;
procedure TMailOptionsForm.SpeedButton7Click(Sender: TObject);
var
SL: TStringList;
begin
if AddressForm.ShowModal = mrOK then begin
SL := TStringList.Create;
CommataStringToStringList(AddressForm.GetSelAddresses, SL);
Memo2.Lines.Assign(SL);
SL.Free;
end;
end;
procedure TMailOptionsForm.SpeedButton9Click(Sender: TObject);
var
SL: TStringList;
begin
if AddressForm.ShowModal = mrOK then begin
SL := TStringList.Create;
CommataStringToStringList(AddressForm.GetSelAddresses, SL);
Memo3.Lines.Assign(SL);
SL.Free;
end;
end;
procedure TMailOptionsForm.SpeedButton8Click(Sender: TObject);
begin
AddressForm.SetAddress(ComboBox2.Text);
end;
procedure TMailOptionsForm.SpeedButton1Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to Memo1.Lines.Count-1 do
if Memo1.Lines[I] <> '' then
if AddressForm.SetAddress(Memo1.Lines[I]) <> False then Exit;
end;
procedure TMailOptionsForm.SpeedButton13Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to Memo2.Lines.Count-1 do
if Memo2.Lines[I] <> '' then
if AddressForm.SetAddress(Memo2.Lines[I]) <> False then Exit;
end;
procedure TMailOptionsForm.SpeedButton14Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to Memo3.Lines.Count-1 do
if Memo3.Lines[I] <> '' then
if AddressForm.SetAddress(Memo3.Lines[I]) <> False then Exit;
end;
procedure TMailOptionsForm.Label11Click(Sender: TObject);
begin
Application.HelpContext(10);
end;
end.