Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Создание приложения наподобие MS Outlook

Delphi , Программа и Интерфейс , Интерфейс

Создание приложения наподобие MS Outlook


Outlook Express: "Ваше сообщение не может быть отправлено, так как работник ФСБ, проверяющий вашу почту временно отсутствует!"

У Вас возникла необходимость создать многооконное приложение, но не хочется захламлять экран большим количеством окошек ? Создайте формы как обычно, но в каждой форме, за исключением основной, установите BorderStyle=bsNone. Затем на основную форму перетащите панель которая будет управлять заполнением Ваших форм данными и полями ввода. В Основной форме нужно добавить примерно такой код:

acXxxxx - это действие, которое будет выполняться при нажатии на элемент (пункт меню, кнопка, акселератор и т.д.) ассоциированный с этим действием через свойство Action.


private
  // используется для заполнения всего экрана
  procedure WMSettingChange(var Msg: TMessage); message WM_SETTINGCHANGE;
public
  ActiveDetailForm: TForm; // Форма, которая активна в данный момент
  procedure SetActiveDetailForm(F: TForm; ParentControl: TWinControl);
end;

var
  frmIMMain: TfrmIMMain;

implementation

uses
  imdata, imSoftL, imSuppl, imEqDet, imDesk, imSpareP, imCateg,
  imLocL, imUserL, imEqList, imEqByUsr, imImpBlb, imSftLic, imSupL,
  imEqDetR, imRptPrm, imdmRep, imSftLicRepPrm, imSparePR, imSparePPrm,
  imSftDetR, imSoftDetRPrmDlg;

{$R *.DFM}

function GetWindowsWorkArea: TRect;
begin
  SystemParametersInfo(SPI_GETWORKAREA, 0, @Result, 0);
end;

procedure TfrmIMMain.WMSettingChange( var Msg: TMessage);
var
  R: TRect;
begin
  if (Msg.WParam=SPI_SETWORKAREA) then
  begin
    R:=GetWindowsWorkArea;
    SetBounds(R.Left, R.Top, R.Right-R.Left, R.Bottom-R.Top);
  end;
  Msg.Result:=0;
end;

procedure TfrmIMMain.FormCreate(Sender: TObject);
var
  R: TRect;
begin
  // заполняем весь экран...
  R:=GetWindowsWorkArea;
  SetBounds(R.Left, R.Top, R.Right-R.Left, R.Bottom-R.Top);
end;

// показываем форму списка Software
procedure TfrmIMMain.acSoftwareListExecute(Sender: TObject);
begin
  if (Sender is TAction) then
  begin
    (Sender as TAction).Checked:=True;
    fcbSoftList.Down:=True;
  end;
  //paWorkArea это панель, которая использется, как управляющая для форм
  SetActiveDetailForm(frmIMSoftList, paWorkArea);
end;

// показываем форму "Оборудование"...
procedure TfrmIMMain.acEquipmentDetailsExecute(Sender: TObject);
begin
  if (Sender is TAction) then
  begin
    (Sender as TAction).Checked:=True;
    fcbEqDet.Down:=True;
  end;
  SetActiveDetailForm(frmIMEqDet, paWorkArea);
end;

// устанавливаем активную форму, чтобы выглядело как в MS outlook.......
// ParentControl это TPanel, но это может быть любой оконный элемент
// управления (который имеет оконное свойство Handle)
procedure TfrmIMMain.SetActiveDetailForm(F: TForm; ParentControl:
TWinControl);
begin
  if ActiveDetailForm<>F then
  begin
    if Assigned(ActiveDetailForm) then
      ActiveDetailForm.Hide;
    //следующие две линии делают то, что нам нужно...
    F.Parent:=ParentControl;
    F.Align:=alClient;
    ActiveDetailForm:=F;
    F.Show;
  end;
end;

procedure TfrmIMMain.FormActivate(Sender: TObject);
begin
  //устанавливаем форму по умолчанию при запуске.
  if not Assigned(ActiveDetailForm) then
    acEquipmentDetailsExecute(acEquipmentDetails);
end;

Перевод:

Это приложение на языке Delphi, которое стремится создать клиент электронной почты, похожий на Outlook, с множеством форм и панелями для управления разными задачами. Код, предоставленный, является начальным пунктом, но он lacks some важная функциональность.

Распределение кода:

  1. WMSettingChange procedure: Это обработчик Windows-сообщения, который обновляет границы формы при изменении разрешения экрана или рабочей области.
  2. FormCreate procedure: Это инициализирует основную форму и устанавливает ее границы в соответствии с доступной рабочей областью на экране.
  3. Action procedures: Эти обработчики событий для различных действий (например, "Список программного обеспечения" и "Детали оборудования"). Когда действие запускается, оно устанавливает соответствующую форму как активную и делает ее видимой.
  4. SetActiveDetailForm procedure: Это метод, который устанавливает новую активную детальную форму и обновляет ее родительский контроль, выравнивание и видимость.

Некоторые предложения по улучшению кода:

  • Рассмотрите использование более robust способа управления формами, например, с помощью TFrame или TFormCollection, вместо использования множества форм с разными действиями.
  • Вместо жесткого кодирования имен действий рассмотрите использование enum или списка действий для улучшения maintainability и flexibility кода.
  • Можете добавить некоторые обработчики ошибок для случаев, когда активная детальная форма не устанавливается правильно.
  • Рассмотрите добавление более функциональности в WMSettingChange procedure, например, обновления других форм и контролов при изменении разрешения экрана.

Чтобы создать более Outlook-напоминающее пользовательское интерфейсе, вы можете рассмотреть реализацию следующих функций:

  • Сайдбар или панель навигации с кнопками или меню, позволяющими пользователям переключаться между различными видами (например, почта, контакты, календарь).
  • Основная область содержимого, отображающая активную форму.
  • Панели инструментов и меню, предоставляющие дополнительные функциональности (например, отправка электронной почты, создание нового контакта).

Помните о соблюдении лучших практик разработки Delphi, таких как использование описательных имен переменных, разделение кода на логические блоки и тестирование приложения тщательно.

Создание приложения наподобие MS Outlook: создайте формы как обычно, а затем на основную форму перетащите панель, управляющую заполнением форм данными и полями ввода.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Интерфейс ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-29 03:14:09/0.0037679672241211/0