Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  3 670

•  TDictionary Custom Sort  5 800

•  Fast Watermark Sources  5 603

•  3D Designer  8 218

•  Sik Screen Capture  5 913

•  Patch Maker  6 388

•  Айболит (remote control)  6 378

•  ListBox Drag & Drop  5 237

•  Доска для игры Реверси  94 551

•  Графические эффекты  6 570

•  Рисование по маске  5 644

•  Перетаскивание изображений  4 760

•  Canvas Drawing  5 135

•  Рисование Луны  4 863

•  Поворот изображения  4 411

•  Рисование стержней  3 116

•  Paint on Shape  2 360

•  Генератор кроссвордов  3 228

•  Головоломка Paletto  2 551

•  Теорема Монжа об окружностях  3 328

•  Пазл Numbrix  2 200

•  Заборы и коммивояжеры  2 849

•  Игра HIP  1 820

•  Игра Go (Го)  1 740

•  Симулятор лифта  2 072

•  Программа укладки плитки  1 798

•  Генератор лабиринта  2 240

•  Проверка числового ввода  1 925

•  HEX View  2 226

•  Физический маятник  1 911

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Создание приложения наподобие 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;





Похожие по теме исходники

Создание таблиц в Paradox




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте