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

•  TDictionary Custom Sort  1 852

•  Fast Watermark Sources  1 881

•  3D Designer  3 310

•  Sik Screen Capture  2 302

•  Patch Maker  2 476

•  Айболит (remote control)  2 298

•  ListBox Drag & Drop  1 900

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

•  Графические эффекты  2 499

•  Рисование по маске  2 034

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

•  Canvas Drawing  1 594

•  Рисование Луны  1 610

•  Поворот изображения  1 230

•  Рисование стержней  1 277

•  Paint on Shape  913

•  Генератор кроссвордов  1 425

•  Головоломка Paletto  1 107

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

•  Пазл Numbrix  1 029

•  Заборы и коммивояжеры  1 303

•  Игра HIP  869

•  Игра Go (Го)  830

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

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

•  Генератор лабиринта  967

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

•  HEX View  1 000

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

•  Задача коммивояжера  921

 
скрыть


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

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



Размещать свои элементы управления в диалоге печати



Оформил: DeeCo

// Unit for TExtendedPrintDialog 

unit Unit1;

 interface

 uses
   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
   ExtDlgs, extctrls, stdctrls, CommDlg, Dlgs;

 type
   TExtendedPrintDialog = class(TPrintDialog)
   private
     fExtendedPanel: TPanel;
     fCheckBoxOne,
     fCheckBoxTwo: TCheckbox;
     fButton: TButton;
   protected
     procedure DoShow; override;
     function GetStaticRect: TRect;
     function TaskModalDialog(DialogFunc: Pointer; var DialogData): Bool;
       override;
   public
     constructor Create(AOwner: TComponent); override;
     function Execute: Boolean; override;
   end;

 implementation

 constructor TExtendedPrintDialog.Create(AOwner: TComponent);
 var
   iTop: Integer;
 begin
   inherited;
   fExtendedPanel := TPanel.Create(Self);
   with fExtendedPanel do
   begin
     Name    := 'ExtendedPanel';
     Caption := '';
     SetBounds(0, 0, 169, 200);  // (204, 5, 169, 200); 
    BevelOuter  := bvNone;
     BorderWidth := 6;
     TabOrder    := 1;
     fButton     := TButton.Create(Self);
     with fButton do
     begin
       Name    := 'SomeButton';
       Caption := '&Options';
       SetBounds(0, 10, 50, 21);
       Parent := fExtendedPanel;
     end;
     fCheckBoxOne := TCheckbox.Create(Self);
     with fCheckBoxOne do
     begin
       Name    := 'CheckboxOne';
       Caption := 'Upside-down print';
       SetBounds(fButton.Left + fButton.Width + 10, 3, 110, 21);
       fCheckBoxOne.Parent := fExtendedPanel;
     end;
     fCheckBoxTwo := TCheckbox.Create(Self);
     with fCheckBoxTwo do
     begin
       Name    := 'CheckboxTwo';
       Caption := 'Sideways print';
       SetBounds(fButton.Left + fButton.Width + 10, 23, 100, 21);
       Parent := fExtendedPanel;
     end;
   end
 end;

 procedure TExtendedPrintDialog.DoShow;
 var
   PreviewRect, StaticRect: TRect;
 begin
   { Set preview area to entire dialog }
   GetClientRect(Handle, PreviewRect);
   StaticRect := GetStaticRect;
   { Move extended area to right of static area }
   PreviewRect.Left := StaticRect.Left;
   PreviewRect.Top  := StaticRect.Bottom;
   Inc(PreviewRect.Top, 4);
   fExtendedPanel.BoundsRect   := PreviewRect;
   fExtendedPanel.ParentWindow := Handle;
   inherited DoShow;
 end;

 function TExtendedPrintDialog.Execute: Boolean;
 begin
   Template := 'DLGTEMPLATE';// this is in the extdlgs.rc 
  Result   := inherited Execute;
 end;

 function TExtendedPrintDialog.GetStaticRect: TRect;
 begin
   if Handle <> 0 then
   begin
     GetWindowRect(GetDlgItem(Handle, grp1), Result); // print range group box 
    MapWindowPoints(0, Handle, Result, 2);
   end
   else
     Result := Rect(0, 0, 0, 0)
 end;

 function TExtendedPrintDialog.TaskModalDialog(DialogFunc: Pointer;
   var DialogData): Bool;
 begin
   TPrintDlg(DialogData).Flags := TPrintDlg(DialogData).Flags or
     PD_ENABLESETUPTEMPLATE;
   TPrintDlg(DialogData).lpSetupTemplateName := Template;
   Result := inherited TaskModalDialog(DialogFunc, DialogData);
 end;

 end.

 //Example, Beispiel: 

uses
   Unit2;

 procedure TForm1.Button1Click(Sender: TObject);
 var
   PrintDialog: TExtendedPrintDialog;
 begin
   PrintDialog := TExtendedPrintDialog.Create(nil);
   if PrintDialog.Execute then
     {do soemthing}
 end;







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

Группа ВКонтакте   Facebook   Ссылка на Twitter   Ссылка на Telegram