unit PrintDialogEx; //---------------------------------------------------------------------------- // //---------------------------------------------------------------------------- interface uses //---------------------------------------------------------------------------- // //----------------------------------------------------------------------------
language,Utilities, //---------------------------------------------------------------------------- // //----------------------------------------------------------------------------
Windows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,
ExtDlgs,extctrls,stdctrls,CommDlg,Dlgs,Strutils,Menus; //---------------------------------------------------------------------------- // //---------------------------------------------------------------------------- type
{ TPrintDialogEx }
TPrintDialogEx= class(TPrintDialog) private
FExtendedPanel:TPanel;
FComboBox:TComboBox;
FComboBoxVisible:Boolean;
FComboBoxEnabled:Boolean;
FComboBoxItem:TStringlist;
FComboBoxIndex:Integer; procedure FComboBoxChange(Sender:TObject); procedure SetComboBoxItem(const Value:TStringlist);
protected procedure DoShow;override; function GetStaticRect:TRect; function TaskModalDialog(DialogFunc:Pointer;var DialogData):Bool;override; public constructor Create(AOwner:TComponent);override; destructor Destroy;override; property ComboBoxIndex:Integer read FComboBoxIndex;
published property ComboBoxVisible
:Boolean read FComboBoxVisible write FComboBoxVisible; property ComboBoxEnabled
:Boolean read FComboBoxEnabled write FComboBoxEnabled; property ComboBoxItem:TStringlist read FComboBoxItem write SetComboBoxItem; end; //---------------------------------------------------------------------------- // //---------------------------------------------------------------------------- procedure Register; //---------------------------------------------------------------------------- // //---------------------------------------------------------------------------- implementation //---------------------------------------------------------------------------- // //---------------------------------------------------------------------------- constructor TPrintDialogEx.Create(AOwner:TComponent); begin inherited;
FComboBoxVisible:=false;
FComboBoxEnabled:=True;
FComboBoxItem:=TStringlist.Create;
FComboBoxItem.Add('All Pages');
FComboBoxItem.Add('Odd Pages');
FComboBoxItem.Add('Even Pages');
FExtendedPanel:=TPanel.Create(self); with FExtendedPanel dobegin
Name:=''; //Caption:='';
SetBounds(0,0,169,200);//(204, 5, 169, 200);
BevelOuter:=bvNone;
BorderWidth:=6;
TabOrder:=1;
FComboBox:=TComboBox.Create(self); with FComboBox dobegin
Name:='ComboBox1';
Text:='';
SetBounds(2,7,180,28);
Style:=csDropDownList;
Parent:=FExtendedPanel; end; end;
FComboBoxIndex:=0; end; //---------------------------------------------------------------------------- // //---------------------------------------------------------------------------- destructor TPrintDialogEx.Destroy; begin
FComboBoxItem.Free;
FExtendedPanel.Free; inherited Free; end; //---------------------------------------------------------------------------- // //the callback function patch text for Labels // //---------------------------------------------------------------------------- function EnumProc(AHandle:HWND;Lines:TStrings):Boolean;stdcall; var
buf,Caption: Array [0..255] ofchar;
CN:String;
V:String; procedure settle(n:Integer;S:String); begin if V=S thenbegin
CN:=trans(lang,n,S); if (n=200) and (lang=german) then//Markierung
CN:='Aktuelle Seite';
SetWindowText(AHandle,pchar(CN)); end; end; begin
result:=True;
GetClassname(AHandle,buf,256);
GetWindowText(AHandle,Caption,256);
V:=Caption;
settle(200,'&Markierung');
settle(201,'Druckbereich');
settle(202,'A&lles');
settle(203,'&Seiten');
settle(204,'&von:');
settle(205,'&bis:');
settle(206,'Exemplare');
settle(207,'An&zahl Exemplare:');
settle(208,'OK');
settle(209,'Abbrechen');
settle(210,'Standort:');
settle(211,'Abbrechen');
settle(212,'Drucker');
settle(213,'&Name:');
settle(214,'&Eigenschaften...');
settle(215,'Status:');
settle(216,'Bereit');
settle(217,'Typ:');
settle(218,'Kommentar:');
settle(219,'S&ortieren');
settle(220,'Drucken'); end; //---------------------------------------------------------------------------- // //---------------------------------------------------------------------------- procedure TPrintDialogEx.DoShow; var
PreviewRect,StaticRect:TRect; begin
EnumChildWindows(Handle,@EnumProc,0);
{ 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;
FComboBox.Items.Assign(FComboBoxItem); with FComboBox dobegin
Enabled:=FComboBoxEnabled;
Visible:=FComboBoxVisible; try
ItemIndex:=FComboBoxIndex; except
on Exception do
ItemIndex:=0; end;
OnChange:=FComboBoxChange; end; inherited DoShow; end; //---------------------------------------------------------------------------- // //---------------------------------------------------------------------------- procedure TPrintDialogEx.FComboBoxChange(Sender:TObject); begin
FComboBoxIndex:=FComboBox.ItemIndex; end; //---------------------------------------------------------------------------- // //---------------------------------------------------------------------------- function TPrintDialogEx.GetStaticRect:TRect; begin if Handle<>0 thenbegin
GetWindowRect(GetDlgItem(Handle,grp1),result);//print range group box
MapWindowPoints(0,Handle,result,2); end else
result:=Rect(0,0,0,0) end; //---------------------------------------------------------------------------- // //---------------------------------------------------------------------------- procedure TPrintDialogEx.SetComboBoxItem(const Value:TStringlist); begin if Assigned(FComboBoxItem) then
FComboBoxItem.Assign(Value) else
FComboBoxItem:=Value; end; //---------------------------------------------------------------------------- // //---------------------------------------------------------------------------- function TPrintDialogEx.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; //---------------------------------------------------------------------------- // //---------------------------------------------------------------------------- procedure Register; begin
RegisterComponents('LS',[TPrintDialogEx]); end; end. //---------------------------------------------------------------------------- //Ende dieser Quelle //----------------------------------------------------------------------------
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.17Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.