Текст модуля (см ниже) содержит необходимые комментарии.
// Этот проект разработал в 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б)