From 3e1b059d8bb52ec6f1607020072cda688d16b391 Mon Sep 17 00:00:00 2001 From: david Date: Sun, 9 Sep 2007 19:00:47 +0000 Subject: [PATCH] git-svn-id: https://192.168.0.254/svn/Componentes.Internos.GUISDK/trunk@8 e3f7d858-3362-1a4e-b49c-1b1bd96e4488 --- Lib/D11/GUISDK_D11.bpl | Bin 0 -> 41984 bytes Lib/D11/GUISDK_D11.dcp | Bin 0 -> 30201 bytes Lib/D11/GUISDK_D11.dcu | Bin 0 -> 3421 bytes Lib/D11/uCustomEditor.dcu | Bin 0 -> 11313 bytes Lib/D11/uCustomView.dcu | Bin 0 -> 9946 bytes Lib/D11/uGUIBase.dcu | Bin 0 -> 5065 bytes Lib/D11/uGUIUtils.dcu | Bin 0 -> 1176 bytes Packages/GUISDK_D11.dpk | 45 +++ Packages/GUISDK_D11.dproj | 670 ++++++++++++++++++++++++++++++++++++ Packages/GUISDK_D11.res | Bin 0 -> 5056 bytes Packages/GUISDK_D2007.dproj | 617 +++++++++++++++++++++++++++++---- Packages/GUISDK_D2007.res | Bin 5056 -> 4396 bytes Source/uCustomEditor.dfm | 18 + Source/uCustomEditor.pas | 319 +++++++++++++++++ Source/uCustomView.dfm | 7 + Source/uCustomView.pas | 244 +++++++++++++ Source/uGUIBase.pas | 128 +++++++ Source/uGUIUtils.pas | 51 +++ 18 files changed, 2034 insertions(+), 65 deletions(-) create mode 100644 Lib/D11/GUISDK_D11.bpl create mode 100644 Lib/D11/GUISDK_D11.dcp create mode 100644 Lib/D11/GUISDK_D11.dcu create mode 100644 Lib/D11/uCustomEditor.dcu create mode 100644 Lib/D11/uCustomView.dcu create mode 100644 Lib/D11/uGUIBase.dcu create mode 100644 Lib/D11/uGUIUtils.dcu create mode 100644 Packages/GUISDK_D11.dpk create mode 100644 Packages/GUISDK_D11.dproj create mode 100644 Packages/GUISDK_D11.res create mode 100644 Source/uCustomEditor.dfm create mode 100644 Source/uCustomEditor.pas create mode 100644 Source/uCustomView.dfm create mode 100644 Source/uCustomView.pas create mode 100644 Source/uGUIBase.pas create mode 100644 Source/uGUIUtils.pas diff --git a/Lib/D11/GUISDK_D11.bpl b/Lib/D11/GUISDK_D11.bpl new file mode 100644 index 0000000000000000000000000000000000000000..5dad507bff65b409b4ff63185d72c5d161ca28e2 GIT binary patch literal 41984 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 literal 0 HcmV?d00001 diff --git a/Lib/D11/GUISDK_D11.dcp b/Lib/D11/GUISDK_D11.dcp new file mode 100644 index 0000000000000000000000000000000000000000..2d9508c0cdb0cb60b0674438e58ac69aa2fb460f GIT binary patch literal 30201 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 a2Yii$;CEQ?B6yvzM_-el{G7`#y#7DT)lDJ* literal 0 HcmV?d00001 diff --git a/Lib/D11/GUISDK_D11.dcu b/Lib/D11/GUISDK_D11.dcu new file mode 100644 index 0000000000000000000000000000000000000000..eedcdde06db1f48ab5b2764dc58c6438831392bb GIT binary patch literal 3421 zcmeHJ?`vCC7{1S4mb^*RQp*^ZF=VJnCQ_W3Ey$3xNz+!F8P~KHnYx>s)AX)4_lA2< z*0hKe86s0;{$PkmQ5jQ2L_}nWi1-T;5fKp)KM8{S7s{xfb4}MD+>=j!?EMhVd7tw> z=RNQHp7Z2(O&fZ=U(@pM96fPpb?vaG_YIHFOimXcda`)z*yXr((jVBG57+(qf5aEt zVf0yW@#@hNdTYnZ*5dQRsImC;a==+r(;DfL?V66gVshJaub*vwW3hw)CtaIMG+!~T zMYF-CJhOh~k5g|o1~x4-uCr;Qyj)&cY+N|PAF)_pyU-4}*PON4lBQX#zdIkR+uZY| zh1w$gQ8Qq2l9ZDfZaYB;&6>V#x?D^mV|&zg>)w(AB@ua-Dax4ycMmvGU2aXf^PXbo zf@1~&Q|&A=P_i8*e3~`vfcwkQ+%)c+tp(dsk(b*Jx67WZ@E)j`mE336Zsm#%Zj>3*472 z6SZ-oXq%4LP@x6KZq@vHwD10s=QkCe`^(I2D=;c}F84iUNEP4f*sA{Mn=Fo%SrCYu zrl7y2V7BBHW%Z(GEmnP|$a!M4&AI0)SP~*{MMssGSlLt+L?&FenSxgwzS*N5v8q{9 zc&5VRn6+u9Xy2g<^DX9bk(%BokBb-{uAPgnYC;BIHWfE08KUai4$f7k`Le_0vL44I z`J~Apqhp{V3l@9yw1j2zsk{Yo54ah0noiwQc*lEziMjHWd>|AXS3S|yBbCW$xL<^A zH{AaocSVs&3PMSBtrqs3x5PacpS7^h=bOW1JtVg4qSHgHPb@P<1!|@%?rvy`2~(## zPFhw=h?P*tt|4X3OM}$Ru0>|y<_6i+mWFDYZe?$ZV$8~JX&_nIoq{%KWp^vukd@sg zX$P$Ac1=5I9hcji{h0&#amKrXDuqVe3Wu#~QgyZTpsrb&9eUeE4u;4s-QA9@>6z{S z4_3p&YN@r2yd2roRd@znvr|&3#p7tNunoJYj)w z&VWO34YUY8ffLTpp+i{7;3>k>2385r#6jH{MA#bH1u$kPNj8SAE18ylJ=6WpV3|s&+xyg C3Q(N@ literal 0 HcmV?d00001 diff --git a/Lib/D11/uCustomEditor.dcu b/Lib/D11/uCustomEditor.dcu new file mode 100644 index 0000000000000000000000000000000000000000..4f11358ad6b0418a37589be62f1c87f63aebbd8b GIT binary patch literal 11313 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 Tzt?%__xc0$yTnS&%RK)J_)-Ts literal 0 HcmV?d00001 diff --git a/Lib/D11/uCustomView.dcu b/Lib/D11/uCustomView.dcu new file mode 100644 index 0000000000000000000000000000000000000000..84f3567674d4e7b2f52546e999113998eeb84e61 GIT binary patch literal 9946 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 G?fP#4Rln~5 literal 0 HcmV?d00001 diff --git a/Lib/D11/uGUIBase.dcu b/Lib/D11/uGUIBase.dcu new file mode 100644 index 0000000000000000000000000000000000000000..767050b94088c18730d071bac16667922d469bb4 GIT binary patch literal 5065 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 cHAIV@=%J9coI)hgLY1I7c#60qKuqa{vGU literal 0 HcmV?d00001 diff --git a/Packages/GUISDK_D11.dpk b/Packages/GUISDK_D11.dpk new file mode 100644 index 0000000..3570d13 --- /dev/null +++ b/Packages/GUISDK_D11.dpk @@ -0,0 +1,45 @@ +package GUISDK_D11; + +{$R *.res} +{$ALIGN 8} +{$ASSERTIONS ON} +{$BOOLEVAL OFF} +{$DEBUGINFO OFF} +{$EXTENDEDSYNTAX ON} +{$IMPORTEDDATA ON} +{$IOCHECKS ON} +{$LOCALSYMBOLS OFF} +{$LONGSTRINGS ON} +{$OPENSTRINGS ON} +{$OPTIMIZATION ON} +{$OVERFLOWCHECKS OFF} +{$RANGECHECKS OFF} +{$REFERENCEINFO OFF} +{$SAFEDIVIDE OFF} +{$STACKFRAMES OFF} +{$TYPEDADDRESS OFF} +{$VARSTRINGCHECKS ON} +{$WRITEABLECONST OFF} +{$MINENUMSIZE 1} +{$IMAGEBASE $400000} +{$DESCRIPTION 'GUI SDK para Delphi 2007'} +{$IMPLICITBUILD OFF} +{$DEFINE RELEASE} + +requires + vcl, + rtl, + designide, + vclactnband, + vclx, + ccpackD11, + cfpack_D11, + xmlrtl; + +contains + uCustomView in '..\Source\uCustomView.pas', + uCustomEditor in '..\Source\uCustomEditor.pas', + uGUIBase in '..\Source\uGUIBase.pas', + uGUIUtils in '..\Source\uGUIUtils.pas'; + +end. diff --git a/Packages/GUISDK_D11.dproj b/Packages/GUISDK_D11.dproj new file mode 100644 index 0000000..2a6150b --- /dev/null +++ b/Packages/GUISDK_D11.dproj @@ -0,0 +1,670 @@ + + + + {53bef2d1-a6c9-410c-9888-9c249cea28a3} + GUISDK_D11.dpk + Release + AnyCPU + DCC32 + ..\Lib\D11\GUISDK_D11.bpl + + + 7.0 + False + False + 0 + RELEASE + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Source + ..\Source + ..\Source + ..\Source + + + 7.0 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + ..\Lib\D11 + + + Delphi.Personality + Package + + + False + True + False + + + GUI SDK para Delphi 2007 + False + False + False + + + True + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Microsoft Office XP Sample Automation Server Wrapper Components + CodeGear WebSnap Components + CodeGear SOAP Components + Microsoft Office 2000 Sample Automation Server Wrapper Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + + + GUISDK_D11.dpk + + + + + + + MainSource + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Packages/GUISDK_D11.res b/Packages/GUISDK_D11.res new file mode 100644 index 0000000000000000000000000000000000000000..86c94e6ada7b3c85f6761b1ee234a9f34ef3c861 GIT binary patch literal 5056 zcmbW5&x;&Y5XWnifD(f4!IPI+L`3!=E9BmaF%VEA#@TDLXpF&R6XJUC)cc=I4kFSA z{{!hg%bp}hVRP_qjvmDJ`>A@>-7}euyEfF+`%$mH-*3IwZ-y~5+miKtn3_w^Pn$V^ zQ861nx4C)wN(Q~H#+K|o*@m~&(3=1I%Llk7>S*pvE7;Yjz^+ljNYba;|&8!P>=GYp<9J^QiRC`-*du(Wb zBJI+RemE@Tm2dSSKL$269_p-ia&WJ{$B|EYy#Bt1`fm?B(CB-l8nlXqgY!6fUOzP@ zr|Te|e4cZxgJWuLF8<`}dughP69?9a%ha4}r`jtX-7UCl^he&nV;_S<)Ya!2FlEJu zrr{t12%dXkNqpywX{@?Eb_MKs@29XRNI;2D%DxW zo|xv^jnf#kFIDZr^e=W==PW{#^6Ao{deqzuxId;ujOZ~3;otiwSzBXu3^t3 z&$C~D3=Umz@OQRR9+}nP>x>=u115dAI{rd2#Mbgv81-@e%IA6)a8SDwHm3Di`~F1x z)jhG~04Fd5o4f^Iah!WFIS0|E#)aohzS6onIG_;>-~Ytz3J0A}=DenTZ*cIo-Ves9 zp>qHmo5lV+rntk2He9_1!t%2yZsF;l)>iGc4jkU$0bBWEPmBKKP>uSjxhXIDsSodT z@EG|gFZa>|hHF!PaN};FzIxxlpPKT;87{i(!eu7T%H?}r^yeP=K2c}If`cyKd-3DW z_4ib`jDt-MZ?C~;z1O=EKN(!YbpFJR_c`u>(C=ph9O_Y*Jz5Z>`Zs7T9Mn$y@ay$^ z{gulxYxXwGq@TIGbG$~Hi*qk8?9|WMkNweF@MU18F;AQKZ>jcWAL86`f59r^Yh;+XfGU10gV*5=*FT)q#qz2B_Ik28(#vUlW{{>1m(1wXK3zHQ3+RoHfz^$cuqg(^F;eqz6WUMUE^m$ z9R1u2H_t9ue%}<_JcD5KB$svgjBysd-ql#|toxF$&>h1Qc)Vw6j~u{SeHg>my$i{SJtD^MnJV!{AK!ZgN9Q4bN2bs7?m1Qo zsLwc-c&GZ4_%7jWppm+9C(?(bpCye?f6Mv)ml~{r9)<=EoH5SYSxm8xsWZv%2MjL$ zd)R%{gxqI&lEaJ6!*jggJMcIz?<5?~hn@VA1Kzcrp$;C`m0CzQdy{!G?|FT$$5W3N zaydTsdE#>2dGSt*&wOX~r{!54?~lxS4gM|rOZH6mRCZMCP#!z)bEv-^up_gJ*i*BY zl>1d-%!E}5v+s{C_OF@Qj;!xrv5)P2yJ4TmKCqke`Aq-U;NJ}WpRu*&|7!3r$c7zU zF#m_6?>Cia!E%D)b;IaF{ zzPG~QEyw>z^LKm}whzS>Dx3Ct`1w98?Y5 - + - {0e5b9f0d-99ce-4dbd-9ec4-3c0e377e9009} + {53bef2d1-a6c9-410c-9888-9c249cea28a3} GUISDK_D2007.dpk Debug AnyCPU DCC32 - ..\Lib\D2007\GUISDK_D2007.bpl + C:\Documents and Settings\All Users\Documentos\RAD Studio\5.0\Bpl\GUISDK_D2007.bpl 7.0 @@ -17,18 +16,51 @@ 7.0 - DEBUG - ..\Lib\D2007 - ..\Lib\D2007 - ..\Lib\D2007 - ..\Lib\D2007 - ..\Lib\D2007 + DEBUG;DEBUG Delphi.Personality Package -FalseTrueFalseGUI SDK para Delphi 2007FalseFalseFalseTrueFalse1000FalseFalseFalseFalseFalse308212521.0.0.01.0.0.0 + + False + True + False + + + GUI SDK para Delphi 2007 + False + False + False + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 3082 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + @@ -41,64 +73,519 @@ - - - - - - - - - - - - - - - - - - - Microsoft Office 2000 Sample Automation Server Wrapper Components Microsoft Office XP Sample Automation Server Wrapper Components - GUISDK_D2007.dpk + CodeGear WebSnap Components + CodeGear SOAP Components + Microsoft Office 2000 Sample Automation Server Wrapper Components + CodeGear C++Builder Office 2000 Servers Package + CodeGear C++Builder Office XP Servers Package + + + GUISDK_D2007.dpk + + - + MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + - \ No newline at end of file + + + + diff --git a/Packages/GUISDK_D2007.res b/Packages/GUISDK_D2007.res index 86c94e6ada7b3c85f6761b1ee234a9f34ef3c861..4f907139ddab7c4037201c4f222a18f1c3263363 100644 GIT binary patch delta 7 OcmX@0zD8+-jvxRGjsl|q delta 673 zcmZ9K!AiqG5QhJh9HjIRk9v|K3L+9AcM+>l5Gz)4m7p~S+oYuH!BbvH#1{~J2A{#Z zZ(#jrHfwAac6T=O@60!|dFg-bzU{A9rUPsNSS|xjj}{OF-JTj;Oef+RV~iWFr?{du z#0VEW54oPvmhtX?{{V8|#&G+QdIA5Rr~ZUb4;Ae(3`%6kkuqF{DJBe^;~oXQuNp7J z2|^rmMuZTgJ`;KTT407b66&9clkhZg@v)~G7jr<*0=JrL&YT(VR{5Ve#2V#J98+9U zE+VTr!~xU0=>P=Os5WQvX$xUT0nX`9)hoDjf=an59$=(?8J4sWUQ?3bju&U#OFR4ELiCA9^kJ+XSTf~ff;t$bC~uD@OVrdDR#FX^NU4soEQv4T6S a=0SmN{TsBz4PIQ3KB?cswz}K<@_zwh2wZXi diff --git a/Source/uCustomEditor.dfm b/Source/uCustomEditor.dfm new file mode 100644 index 0000000..46975d9 --- /dev/null +++ b/Source/uCustomEditor.dfm @@ -0,0 +1,18 @@ +object CustomEditor: TCustomEditor + Left = 486 + Top = 435 + Width = 518 + Height = 324 + Caption = 'CustomEditor' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + OnActivate = FormActivate + OnClose = FormClose + PixelsPerInch = 96 + TextHeight = 13 +end diff --git a/Source/uCustomEditor.pas b/Source/uCustomEditor.pas new file mode 100644 index 0000000..19b793c --- /dev/null +++ b/Source/uCustomEditor.pas @@ -0,0 +1,319 @@ +unit uCustomEditor; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, uGUIBase, uCustomView; + +type + TCustomEditor = class(TForm, ICustomEditor) + private + FInstanceID: Integer; + FOnGetModified: TOnGetModifiedEvent; + FOnViewModified: TOnViewModifiedEvent; + FReadOnly: Boolean; + function FindHostForm : IHostForm; + procedure ShowEmbedded(const AParent : TWinControl); overload; + protected + FViews: TInterfaceList; + procedure UpdateActions; override; + function GetInstanceID: Integer; + function GetModified: Boolean; virtual; + procedure SetModified(const Value : Boolean); virtual; + function GetOnViewModified: TOnViewModifiedEvent; + procedure SetOnViewModified(const Value : TOnViewModifiedEvent); + function GetReadOnly: Boolean; virtual; + function GetValid: Boolean; virtual; + procedure SetInstanceID(Value: Integer); + procedure SetReadOnly(Value: Boolean); virtual; + function GetOnGetModified: TOnGetModifiedEvent; + procedure SetOnGetModified(const Value: TOnGetModifiedEvent); + public + constructor Create(AOwner: TComponent); overload; override; + destructor Destroy; override; + function CreateView(const AViewClass : TCustomViewClass): IInterface; + function FindView(const IID: TGUID): IInterface; + function GetInstance: TObject; + procedure ShowEmbedded; overload; + function CloseQuery: Boolean; override; + property Modified: Boolean read GetModified write SetModified; + published + property InstanceID: Integer read GetInstanceID write SetInstanceID; + property ReadOnly: Boolean read GetReadOnly write SetReadOnly; + property Valid: Boolean read GetValid; + property OnGetModified: TOnGetModifiedEvent read GetOnGetModified write + SetOnGetModified; + end; + + TCustomEditorClass = class of TCustomEditor; + +procedure Register; + +implementation + +uses + CustFrms, uGUIUtils; + +procedure Register; +begin + RegisterCustomFormClass(TCustomEditor); +end; + +{ +******************************** TCustomEditor ********************************* +} + +constructor TCustomEditor.Create(AOwner: TComponent); +begin +// inherited CreateNew(AOwner); + // initialize custom fields, etc., here + FViews := TInterfaceList.Create; + + GlobalNameSpace.BeginWrite; + try + CreateNew(AOwner); + if (ClassType <> TCustomEditor) and not (csDesigning in ComponentState) then + begin + Include(FFormState, fsCreating); + try + if not InitInheritedComponent(Self, TCustomEditor) then + raise EResNotFound.CreateFmt('Error %s', [ClassName]); + finally + Exclude(FFormState, fsCreating); + end; + if OldCreateOrder then DoCreate; + end; + finally + GlobalNameSpace.EndWrite; + end; + + + +{ GlobalNameSpace.BeginWrite; + try + if (ClassType <> TCustomEditor) and + not (csDesigning in ComponentState) then + begin + if not InitInheritedComponent(Self, TCustomEditor) then + raise Exception.Create('Error'); + if OldCreateOrder and Assigned(OnCreate) then + OnCreate(Self); + end; + finally + GlobalNameSpace.EndWrite; + end;} +end; + +destructor TCustomEditor.Destroy; +var + i: Integer; +begin + for i := FViews.Count - 1 downto 0 do + FViews.Delete(i); + + FreeAndNIL(FViews); + + inherited Destroy; +end; + +function TCustomEditor.CreateView(const AViewClass : TCustomViewClass): + IInterface; +begin + Result := FViews[FViews.Add(AViewClass.Create(Self))]; +end; + +function TCustomEditor.FindView(const IID: TGUID): IInterface; +var + i: Integer; + aObj: ICustomView; +begin + aObj := NIL; + Result := NIL; + for i := 0 to (FViews.Count - 1) do + begin + FViews.Items[i].QueryInterface(IID, aObj); + if Assigned(aObj) then + begin + Result := aObj; + Break; + end; + end; +end; + +function TCustomEditor.GetInstance: TObject; +begin + Result := Self; +end; + +function TCustomEditor.GetInstanceID: Integer; +begin + Result := FInstanceID; +end; + +function TCustomEditor.GetModified: Boolean; +begin + Result := ControlIsModified(Self); + if Assigned(FOnGetModified) then + FOnGetModified(Self, Result); +end; + +function TCustomEditor.GetReadOnly: Boolean; +begin + Result := FReadOnly; +end; + +function TCustomEditor.GetValid: Boolean; +var + i: Integer; + aObj: ICustomView; +begin + aObj := NIL; + Result := True; + for i := 0 to (FViews.Count - 1) do + begin + FViews.Items[i].QueryInterface(IValidable, aObj); + if Assigned(aObj) then + Result := Result AND aObj.Valid; + if not Result then + Break; + end; +end; + +procedure TCustomEditor.SetInstanceID(Value: Integer); +begin + FInstanceID := Value; +end; + +procedure TCustomEditor.SetReadOnly(Value: Boolean); +begin + FReadOnly := Value; +end; + +procedure TCustomEditor.ShowEmbedded; +var + AMainForm: IHostForm; +begin + AMainForm := NIL; + if not Supports(Application.MainForm, IHostForm, AMainForm) then + AMainForm := FindHostForm; + + if not Assigned(AMainForm) then + raise Exception.Create('No se ha encontrado el formulario principal (ShowEmbedded)') + else + AMainForm.ShowEmbedded(Self) +end; + +procedure TCustomEditor.ShowEmbedded(const AParent : TWinControl); +begin + Parent := AParent; + Align := alClient; + BorderIcons := []; + BorderStyle := bsNone; + Show; + SetFocus; +end; + +function TCustomEditor.GetOnGetModified: TOnGetModifiedEvent; +begin + Result := FOnGetModified; +end; + +function TCustomEditor.GetOnViewModified: TOnViewModifiedEvent; +begin + Result := FOnViewModified; +end; + +procedure TCustomEditor.SetOnGetModified(const Value: TOnGetModifiedEvent); +begin + FOnGetModified := Value; +end; + +procedure TCustomEditor.SetOnViewModified(const Value: TOnViewModifiedEvent); +begin + FOnViewModified := Value; +end; + +function TCustomEditor.CloseQuery: Boolean; +var + i: Integer; + aIntf: IValidable; +begin + Result := inherited CloseQuery; + if Result then + for i := 0 to FViews.Count - 1 do + begin + FViews.Items[i].QueryInterface(IValidable, aIntf); + if Assigned(aIntf) then + begin + Result := (Result and aIntf.Valid); + if not Result then + break; + end; + end; +end; + +procedure TCustomEditor.SetModified(const Value: Boolean); +begin + if Value = False then + ResetModifiedControl(Self); + + if Assigned(FOnViewModified) then + FOnViewModified(Self); +end; + +function TCustomEditor.FindHostForm: IHostForm; +var + i : integer; + AMainForm : IHostForm; +begin + Result := NIL; + for i := 0 to Application.ComponentCount do + if Supports(Application.Components[i], IHostForm, AMainForm) then + begin + Result := AMainForm; + Break; + end; +end; + +{------------------------------------------------------------------------------- + Sobreescribo 'UpdateActions' por un fallo en Delphi que hace + consumir mucha CPU cuando se usan acciones con formularios metidos + uno dentro de otro. +-------------------------------------------------------------------------------} +procedure TCustomEditor.UpdateActions; +var + I: Integer; + + procedure TraverseClients(Container: TWinControl); + var + I: Integer; + Control: TControl; + begin + Application.ProcessMessages; // <--- Modificación + if Container.Showing then + for I := 0 to Container.ControlCount - 1 do + begin + Control := Container.Controls[I]; + if (csActionClient in Control.ControlStyle) and Control.Visible then + Control.InitiateAction; + + if Control is TWinControl then + TraverseClients(TWinControl(Control)); + end; + end; + +begin + if (csDesigning in ComponentState) or not Showing then Exit; + { Update form } + InitiateAction; + { Update main menu's top-most items } + if Menu <> nil then + for I := 0 to Menu.Items.Count - 1 do + with Menu.Items[I] do + if Visible then InitiateAction; + { Update any controls } + TraverseClients(Self); +end; + +end. diff --git a/Source/uCustomView.dfm b/Source/uCustomView.dfm new file mode 100644 index 0000000..98f9074 --- /dev/null +++ b/Source/uCustomView.dfm @@ -0,0 +1,7 @@ +object CustomView: TCustomView + Left = 0 + Top = 0 + Width = 320 + Height = 240 + TabOrder = 0 +end diff --git a/Source/uCustomView.pas b/Source/uCustomView.pas new file mode 100644 index 0000000..5db151e --- /dev/null +++ b/Source/uCustomView.pas @@ -0,0 +1,244 @@ +unit uCustomView; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, uGUIBase, DesignEditors; + +type + TCustomView = class(TFrame, ICustomView) + private + FOnGetModified: TOnGetModifiedEvent; + FOnViewModified: TOnViewModifiedEvent; + FReadOnly: Boolean; + FOnCreate: TNotifyEvent; + FOnDestroy: TNotifyEvent; + FOnHide: TNotifyEvent; + FOnShow: TNotifyEvent; + procedure ShowEmbedded; overload; + procedure CMShowingChanged(var Message: TMessage); message CM_SHOWINGCHANGED; + protected + FObserver: IObserver; + function GetOnGetModified: TOnGetModifiedEvent; + procedure SetOnGetModified(const Value : TOnGetModifiedEvent); + function GetOnViewModified: TOnViewModifiedEvent; + procedure SetOnViewModified(const Value : TOnViewModifiedEvent); + procedure SetModified(const Value : Boolean); virtual; + function GetModified: Boolean; virtual; + function GetReadOnly: Boolean; virtual; + function GetValid: Boolean; virtual; + procedure Release; + procedure SetReadOnly(Value: Boolean); virtual; + procedure DoCreate; virtual; + procedure DoDestroy; virtual; + procedure DoHide; dynamic; + procedure DoShow; dynamic; + public + constructor Create(AOwner: TComponent); override; + constructor CreateEmbedded(AOwner: TComponent; AParent: TWinControl); + destructor Destroy; override; + procedure ShowEmbedded(const AParent : TWinControl); overload; virtual; + property Modified: Boolean read GetModified write SetModified; + published + property OnGetModified: TOnGetModifiedEvent read GetOnGetModified write + SetOnGetModified; + property OnViewModified: TOnViewModifiedEvent read GetOnViewModified write + SetOnViewModified; + property ReadOnly: Boolean read GetReadOnly write SetReadOnly; + property Valid: Boolean read GetValid; + property OnCreate: TNotifyEvent read FOnCreate write FOnCreate; + property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy; + property OnHide: TNotifyEvent read FOnHide write FOnHide; + property OnShow: TNotifyEvent read FOnShow write FOnShow; + end; + + TCustomViewClass = class of TCustomView; + + TCustomViewModule = class(TCustomModule) + public + function Nestable: Boolean; override; + end; + +procedure Register; + +implementation + +{$R *.dfm} + +{ TCustomView } + +uses + DesignIntf, uGUIUtils, RTLConsts; + +procedure Register; +begin + RegisterCustomModule(TCustomView, TCustomViewModule); +end; + +{ +********************************* TCustomView ********************************** +} +procedure TCustomView.CMShowingChanged(var Message: TMessage); +begin + inherited; + + if Showing then + begin + // Put your OnShow logic here. + // When this is called, the frame's window handle has already + // been created, as have the handles for the controls on the + // frame - so you can do most anything you need to do. + if Assigned(FOnShow) then + FOnShow(Self); + end + else + begin + // Put your OnHide logic here, but see the caveats below. + if Assigned(FOnHide) then + FOnHide(Self); + end; +end; + +constructor TCustomView.Create(AOwner: TComponent); +begin + inherited Create(AOwner); + FObserver := NIL; + DoCreate; +end; + +constructor TCustomView.CreateEmbedded(AOwner: TComponent; AParent: + TWinControl); +begin + Create(AOwner); + Parent := AParent; + Align := alClient; +end; + +destructor TCustomView.Destroy; +begin + DoDestroy; + inherited Destroy; +end; + +procedure TCustomView.DoCreate; +begin + if Assigned(FOnCreate) then + begin + try + FOnCreate(Self); + except + Application.HandleException(Self); + end; + end; +end; + +procedure TCustomView.DoDestroy; +begin + if Assigned(FOnDestroy) then + begin + try + FOnDestroy(Self); + except + Application.HandleException(Self); + end; + end; +end; + +procedure TCustomView.DoHide; +begin + if Assigned(FOnHide) then + begin + try + FOnHide(Self); + except + Application.HandleException(Self); + end; + end; +end; + +procedure TCustomView.DoShow; +begin + if Assigned(FOnShow) then + begin + try + FOnShow(Self); + except + Application.HandleException(Self); + end; + end; +end; + +function TCustomView.GetModified: Boolean; +begin + Result := ControlIsModified(Self); + if Assigned(FOnGetModified) then + FOnGetModified(Self, Result); +end; + +function TCustomView.GetOnGetModified: TOnGetModifiedEvent; +begin + Result := FOnGetModified; +end; + +function TCustomView.GetOnViewModified: TOnViewModifiedEvent; +begin + Result := FOnViewModified; +end; + +function TCustomView.GetReadOnly: Boolean; +begin + Result := FReadOnly; +end; + +function TCustomView.GetValid: Boolean; +begin + Result := True; +end; + +procedure TCustomView.Release; +begin + Free; +end; + +procedure TCustomView.SetModified(const Value: Boolean); +begin + if Assigned(FOnViewModified) then + FOnViewModified(Self); +end; + +procedure TCustomView.SetOnGetModified(const Value: TOnGetModifiedEvent); +begin + FOnGetModified := Value; +end; + +procedure TCustomView.SetOnViewModified(const Value: TOnViewModifiedEvent); +begin + FOnViewModified := Value; +end; + +procedure TCustomView.SetReadOnly(Value: Boolean); +begin + FReadOnly := Value; +end; + +procedure TCustomView.ShowEmbedded; +begin + Align := alClient; + Show; +end; + +procedure TCustomView.ShowEmbedded(const AParent : TWinControl); +begin + Parent := AParent; + ShowEmbedded; +end; + +{ TCustomViewModule } + +function TCustomViewModule.Nestable: Boolean; +begin + Result := True; +end; + +end. diff --git a/Source/uGUIBase.pas b/Source/uGUIBase.pas new file mode 100644 index 0000000..eb742d9 --- /dev/null +++ b/Source/uGUIBase.pas @@ -0,0 +1,128 @@ +unit uGUIBase; + +interface + +uses + Forms, Controls, Contnrs, Classes; + +type + TOnGetModifiedEvent = procedure (Sender: TObject; var Modified: Boolean) of object; + TOnViewModifiedEvent = procedure (Sender: TObject) of object; + + IEmbeddedable = interface(IInterface) + ['{A1668B17-B355-4688-A78A-B30AE3C8C81E}'] + procedure Release; + procedure ShowEmbedded; overload; + procedure ShowEmbedded(const AParent : TWinControl); overload; + end; + + IModificable = interface(IEmbeddedable) + ['{7F75A327-4ACC-4E4A-8B3D-21C1241DAFBF}'] + function GetModified: Boolean; + procedure SetModified(const Value : Boolean); + property Modified: Boolean read GetModified write SetModified; + + function GetOnGetModified: TOnGetModifiedEvent; + procedure SetOnGetModified(const Value : TOnGetModifiedEvent); + property OnGetModified: TOnGetModifiedEvent read GetOnGetModified write + SetOnGetModified; + + function GetOnViewModified: TOnViewModifiedEvent; + procedure SetOnViewModified(const Value : TOnViewModifiedEvent); + property OnViewModified: TOnViewModifiedEvent read GetOnViewModified write + SetOnViewModified; + end; + + IReadOnly = interface(IModificable) + ['{2549ECF9-270F-4F3C-9852-E488C518F590}'] + function GetReadOnly: Boolean; + procedure SetReadOnly(Value: Boolean); + property ReadOnly: Boolean read GetReadOnly write SetReadOnly; + end; + + IValidable = interface(IReadOnly) + ['{A2562A5E-E3B2-4C1B-B8FE-13A410D8B3DB}'] + function GetValid: Boolean; + property Valid: Boolean read GetValid; + end; + + IInstanceAware = interface(IValidable) + ['{B6B2676A-1D8E-4597-ADDB-43734508E6F5}'] + function GetInstance: TObject; + function GetInstanceID: Integer; + procedure SetInstanceID(Value: Integer); + property InstanceID: Integer read GetInstanceID write SetInstanceID; + end; + + ICustomEditor = interface(IInstanceAware) + ['{07A3AB52-B2B0-4DE3-B470-379834BBE7DB}'] + end; + + ICustomView = interface(IValidable) + ['{98192DE2-19C5-4DA5-B4F4-F2B3782DB6E2}'] + function CanFocus: Boolean; + function Focused: Boolean; + procedure SetFocus; + procedure Update; + end; + + + IHostForm = interface(IInterface) + ['{2091401E-1F9C-4F05-8574-E9E0532780D1}'] + function GetWorkPanel: TWinControl; + property WorkPanel: TWinControl read GetWorkPanel; + procedure OnWorkPanelChanged(AEditor : ICustomEditor); + procedure ShowEmbedded(AEditor : ICustomEditor); + end; + + + IGUIManager = interface(IInterface) + ['{D0A5D2CC-36E1-4C61-8D3B-B6D00EBA3278}'] + function FindInstance(const IID: TGUID): ICustomEditor; + function GetActiveInstance: ICustomEditor; + function GetActiveInstanceIndex: Integer; + function GetInstance(Index : Integer): ICustomEditor; + function GetWorkPanel: TWinControl; + function RegisterInstance(AInstance : ICustomEditor): Boolean; + procedure ReleaseInstance(AnInstance : ICustomEditor); + procedure SetActiveInstance(Value: ICustomEditor); + procedure SetActiveInstanceIndex(Value: Integer); + procedure SetWorkPanel(const Value: TWinControl); + property ActiveInstance: ICustomEditor read GetActiveInstance write + SetActiveInstance; + property ActiveInstanceIndex: Integer read GetActiveInstanceIndex write + SetActiveInstanceIndex; + property Instances[Index : Integer]: ICustomEditor read GetInstance; + property WorkPanel: TWinControl read GetWorkPanel write SetWorkPanel; + end; + + IObservable = interface; + TObserverEvent = procedure (AObject : IObservable) of object; + IObserver = interface(IInterface) + ['{79175C66-8435-4F2F-A3E0-A53A24554A0E}'] + function GetOnNotifyObserver: TObserverEvent; + function GetOnObserverAttached: TObserverEvent; + function GetOnObserverDettached: TObserverEvent; + procedure NotifyObserver(const AObject: IObservable); + procedure ObserverAttached(AObject : IObservable); + procedure ObserverDettached(AObject : IObservable); + procedure SetOnNotifyObserver(AValue: TObserverEvent); + procedure SetOnObserverAttached(AValue: TObserverEvent); + procedure SetOnObserverDettached(AValue: TObserverEvent); + property OnNotifyObserver: TObserverEvent read GetOnNotifyObserver write + SetOnNotifyObserver; + property OnObserverAttached: TObserverEvent read GetOnObserverAttached + write SetOnObserverAttached; + property OnObserverDettached: TObserverEvent read GetOnObserverDettached + write SetOnObserverDettached; + end; + + IObservable = interface(IInterface) + ['{1FF0F081-CBBA-4728-8689-D6F506652E80}'] + procedure AddObserver(const AObserver: IObserver); + procedure RemoveObserver(const AObserver: IObserver); + end; + +implementation + +end. diff --git a/Source/uGUIUtils.pas b/Source/uGUIUtils.pas new file mode 100644 index 0000000..c952c9b --- /dev/null +++ b/Source/uGUIUtils.pas @@ -0,0 +1,51 @@ +unit uGUIUtils; + +interface + +uses + Controls; + +function ControlIsModified(AControl : TWinControl) : Boolean; +procedure ResetModifiedControl(AControl : TWinControl); + +implementation + +uses + StdCtrls, uGUIBase, uCustomView; + +function ControlIsModified(AControl : TWinControl) : Boolean; +var + i : integer; +begin + Result := False; + + if AControl is TCustomEdit then + Result := Result OR (AControl as TCustomEdit).Modified + else + if not Result then + for i := 0 to AControl.ControlCount - 1 do + begin + if AControl.Controls[i] is TWinControl then + Result := ControlIsModified((AControl.Controls[i] as TWinControl)); + + if Result then + Exit; + end; +end; + + +procedure ResetModifiedControl(AControl : TWinControl); +var + i : integer; +begin + if AControl is TCustomEdit then + (AControl as TCustomEdit).Modified := False + else + for i := 0 to AControl.ControlCount - 1 do + begin + if AControl.Controls[i] is TWinControl then + ResetModifiedControl((AControl.Controls[i] as TWinControl)); + end; +end; + +end.