Текст модуля (см ниже) содержит необходимые комментарии.
// Этот проект разработал в 2006 г студент 4-го курса
// факультета "Компьютерные технологии и автоматизированные системы"
// КубГТУ (г. Краснодар) Орёл Роман.
// Проект имеет оригинальный интерфейс:
// Форма и кнопки выполнены как рисунки .jpeg,
// причем кнопки - в виде компонентов TImage. Для работы кнопок
// используются обработчики событий MouseDown и MouseUp.
// Здесь сохранен только интерфейс, остальное (работа в сети) будет показано,
// если будет добавлен раздел о компьютерных сетях
// (если кому-то нужно это уже сейчас - пишите)
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, jpeg, ExtDlgs;
type
TForm1 = class(TForm)
SubjectEdit: TEdit;
FromEdit: TEdit;
HostEdit: TEdit;
LoginEdit: TEdit;
PasswordEdit: TEdit;
ListAddr: TListBox;
reMessageText: TRichEdit;
ListLog: TListBox;
NameEdit: TEdit;
PortEdit: TEdit;
Image1: TImage;
AddImage: TImage;
FindImage: TImage;
DeleteImage: TImage;
SendImage: TImage;
ComboBox: TComboBox;
Label1: TLabel;
Label2: TLabel;
procedure SendImageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure SendImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure DeleteImageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure DeleteImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FindImageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FindImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure AddImageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure AddImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
FileName:String;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//1 При создании формы выполняем следующие действия
procedure TForm1.FormCreate(Sender: TObject);
begin
// Загружаем список сохраненных ранее адресов
FileName := ChangeFileExt (Application.ExeName, '.txt');
ListAddr.Items.LoadFromFile (FileName);
ListLog.Items.Add ('Addresses: ' + IntToStr (ListAddr.Items.Count));
// select the first item
ListAddr.ItemIndex := 0;
end;
//2 При закрытии формы выполняем следующие действия
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
// Сохраняем лист адресов
ListAddr.Items.SaveToFile (FileName);
end;
//3 При активизации IdSMTPClient выполняем следующие действия
//4 При начале посылки IdSMTPClient'ом выполняем следующие действия
//5 При начале завершении посылки IdSMTPClient'ом выполняем следующие действия
//6 При нажатии на кнопку "Добавить" выполняем следующие действия
procedure TForm1.AddImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
AddImage.Picture.LoadFromFile('add_down.jpg');//Перегружаем картинку
ListAddr.ItemIndex:=ListAddr.Items.Add(NameEdit.Text);
//Добавляем адрес из строки адреса в список контактов
end;
//7 При отпускании кнопки "Добавить" выполняем следующие действия
procedure TForm1.AddImageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
AddImage.Picture.LoadFromFile('add_normal.jpg');//Перегружаем картинку
end;
//8 При нажатии на кнопку "Найти" выполняем следующие действия
procedure TForm1.FindImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
I:Integer;//счетчик для цикла
begin
FindImage.Picture.LoadFromFile('find_down.jpg');//Перегружаем картинку
for I:=0 to ListAddr.Items.Count-1 do//...
if Pos (NameEdit.Text,ListAddr.Items[I])>0 then//...
begin//...
ListAddr.ItemIndex:=I;//Добавили позицию
Break;
end;
Beep;//попищали
end;
//9 При отпускании кнопки "Найти" выполняем следующие действия
procedure TForm1.FindImageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FindImage.Picture.LoadFromFile('find_normal.jpg');//Перегружаем картинку
end;
//10 При нажатии на кнопку "Удалить" выполняем следующие действия
procedure TForm1.DeleteImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
DeleteImage.Picture.LoadFromFile('delete_down.jpg');//Перегружаем картинку
// копируем запись в nameedit и при надобности стираем или редактируем
NameEdit.Text:=ListAddr.Items[ListAddr.ItemIndex];
ListAddr.Items.Delete(ListAddr.ItemIndex);
end;
//11 При отпускании кнопки "Удалить" выполняем следующие действия
procedure TForm1.DeleteImageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
DeleteImage.Picture.LoadFromFile('delete_normal.jpg');//Перегружаем картинку
end;
//12 При нажатии на кнопку "Послать" выполняем следующие действия
procedure TForm1.SendImageMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
SendImage.Picture.LoadFromFile('send_down.jpg');//Перегружаем картинку
end;
//13 При отпускании кнопки "Послать" выполняем следующие действия
procedure TForm1.SendImageMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
nItem:Integer;
Res:Word;
begin
SendImage.Picture.LoadFromFile('send_normal.jpg');//Перегружаем картинку
if ComboBox.ItemIndex=0 then
//Если выбран режим использования SMTP-компонента,то делаем
begin
//Выводим окно для подверждения указанного адреса
Res:=MessageDlg('Начать отправку элемента '+
IntToStr(ListAddr.ItemIndex)+' ('+
ListAddr.Items[ListAddr.ItemIndex]+')?'#13 +
'(Не начинать с 0)',mtConfirmation,
[mbYes,mbNo,mbCancel],0);
if Res=mrCancel then
Exit;
if Res=mrYes then
nItem:=ListAddr.ItemIndex
else
nItem:=0;
//соединение SMTP-клиента с сервером
ListLog.Items.Add('Connected to host'+HostEdit.Text);
//соответствующее сообщение в лог-листе
try
//устанавливаем фиксированную часть заголовка
Application.ProcessMessages;
//показываем в списке контактов выбранного адресата
ListAddr.ItemIndex:=nItem;
//посылаем пакет
finally
//отсоединяемся
ListLog.Items.Add('Disconnected from host'+HostEdit.Text);
//соответствующее сообщение лог-листа
end;
end
else//если выбран режим соединения через IdTCPClient
begin
//то же, что и с SMTP
Res:=MessageDlg('Начать отправку элемента '+
IntToStr(ListAddr.ItemIndex)+' ('+
ListAddr.Items[ListAddr.ItemIndex]+')?'#13 +
'(Не начинать с 0)',mtConfirmation,
[mbYes,mbNo,mbCancel],0);
if Res=mrCancel then
Exit;
if Res=mrYes then
nItem:=ListAddr.ItemIndex
else
nItem:=0;
//производим соединение
{ TCP.Host:=HostEdit.Text; }
ListLog.Items.Add('Connected to host'+HostEdit.Text);
//соответствующее сообщение лог-листа
try//начинаем посылать стандартные SMTP-команды
{ TCP.IOHandler.WriteLn('HELO '+HostEdit.Text);
//Запрос на установление соединения}
Application.ProcessMessages;
ListAddr.ItemIndex:=nItem;
finally
// TCP.Disconnect;//отсоединяемся
ListLog.Items.Add('Disconnected from host'+HostEdit.Text);
end;
end;
end;
end.
Скачать RAR-архив проекта + .exe(0.73 Mб)