📄 dxjsaddtform.pas
字号:
////////////////////////////////////////////////////////////////////////////
// Component: TDXJSAddTForm
// Author: Alexander Baranovsky (ab@virtlabor.donbass.com)
// G.E. Ozz Nixon Jr. (staff@bpdx.com)
// ========================================================================
// Source Owner: DX, Inc. 2002, 2004
// Copyright: All code is the property of DX, Inc. Licensed for
// resell by Brain Patchwork DX (tm) and part of the
// DX (r) product lines, which are (c) 1999-2002
// DX, Inc. Source may not be distributed without
// written permission from both Brain Patchwork DX,
// and DX, Inc.
// License: (Reminder), None of this code can be added to other
// developer products without permission. This includes
// but not limited to DCU's, DCP's, DLL's, OCX's, or
// any other form of merging our technologies. All of
// your products released to a public consumer be it
// shareware, freeware, commercial, etc. must contain a
// license notification somewhere visible in the
// application.
// Code Version: (3rd Generation)
// ========================================================================
// Description: Implement TForm support to instance of javascript that is
// specified in the javascript property. Introduces the parent TForm, and
// all associated constants for TForm, plus a couple of the public methods.
// ========================================================================
////////////////////////////////////////////////////////////////////////////
unit DXJSAddTForm;
interface
uses
DXJavaScript,
Forms,
Classes;
type
TDXJSAddTForm = class(TComponent)
private
fParent:TForm;
fJavaScript:TDXJavaScript;
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner:TComponent); override;
destructor Destroy; override;
Procedure RegisterWithJavaScript;
published
{ Published declarations }
Property JavaScript:TDXJavaScript read fJavaScript write fJavaScript;
end;
//procedure Register;
implementation
Uses
Controls,
Graphics,
SysUtils;
{
procedure Register;
begin
RegisterComponents('BPDX JavaScript', [TDXJSAddTForm]);
end;
}
constructor TDXJSAddTForm.Create(AOwner:TComponent);
Begin
inherited Create(AOwner);
if (AOwner=Nil) or
Not (AOwner is TForm) then Begin
Raise Exception.Create('Parent must be TForm!');
Exit;
End;
fParent:=AOwner as TForm;
End;
destructor TDXJSAddTForm.Destroy;
Begin
inherited Destroy;
End;
///////////////////////////////////////////////////////////////////////////////
// DXJavaScript Call back hooks!
// ============================================================================
// methods
///////////////////////////////////////////////////////////////////////////////
function __BringToFront(Instance: TObject; const Parameters: array of Variant): Variant;
begin
TForm(Instance).BringToFront;
end;
function __TextOut(Instance: TObject; const Parameters: array of Variant): Variant;
begin
TCanvas(Instance).TextOut(Parameters[0], Parameters[1], Parameters[2]);
end;
function __TForm_Hide(Instance: TObject; const Parameters: array of Variant): Variant;
begin
TForm(Instance).Hide;
end;
///////////////////////////////////////////////////////////////////////////////
// non-published property
///////////////////////////////////////////////////////////////////////////////
function __TForm_GetCanvas(Instance: TObject; const Parameters: array of Variant): Variant;
begin
result := TDXJavaScript.DelphiObjectToVariant(TForm(Instance).Canvas);
end;
function __TForm_GetFont(Instance: TObject; const Parameters: array of Variant): Variant;
begin
result := TDXJavaScript.DelphiObjectToVariant(TForm(Instance).Font);
end;
///////////////////////////////////////////////////////////////////////////////
// assign these hooks to DXJavaScript
///////////////////////////////////////////////////////////////////////////////
Procedure TDXJSAddTForm.RegisterWithJavaScript;
Begin
if Assigned(fJavaScript) then Begin
// Constants (for some of the Properties)
With fJavaScript do Begin
// .TWindowState
AddConstant('wsNormal',0);
AddConstant('wsMinimized',1);
AddConstant('wsMaximized',2);
// .TFormBorderStyle
AddConstant('bsNone',0);
AddConstant('bsSingle',1);
AddConstant('bsSizeable',2);
AddConstant('bsDialog',3);
AddConstant('bsToolWindow',4);
AddConstant('bsSizeToolWin',5);
// Set of TBorderIcon as TBorderIcons
AddConstant('biSystemMenu',0);
AddConstant('biMinimize',1);
AddConstant('biMaximize',2);
AddConstant('biHelp',3);
// .TScrollBarKind
AddConstant('sbHorizontal',0);
AddConstant('sbVertical',1);
// .TScrollBarStyle
AddConstant('ssRegular',0);
AddConstant('ssFlat',1);
AddConstant('ssHotTrack',2);
// .TFormStyle
AddConstant('fsNormal',0);
AddConstant('fsMDIChild',1);
AddConstant('fsMDIForm',2);
AddConstant('fsStayOnTop',3);
// .TPosition
AddConstant('poDesigned',0);
AddConstant('poDefault',1);
AddConstant('poDefaultPosOnly',2);
AddConstant('poDefaultSizeOnly',3);
AddConstant('poScreenCenter',4);
AddConstant('poDesktopCenter',5);
AddConstant('poMainFormCenter',6);
AddConstant('poOwnerFormCenter',7);
// .TDefaultMonitor
AddConstant('dmDesktop',0);
AddConstant('dmPrimary',1);
AddConstant('dmMainForm',2);
AddConstant('dmActiveForm',3);
// .TPrintScale
AddConstant('poNone',0);
AddConstant('poProportional',1);
AddConstant('poPrintToFit',2);
// .TShowAction
AddConstant('saIgnore',0);
AddConstant('saRestore',1);
AddConstant('saMinimize',2);
AddConstant('saMaximize',3);
// .TTileMode
AddConstant('tbHorizontal',0);
AddConstant('tbVertical',1);
// .TCloseAction
AddConstant('caNone',0);
AddConstant('caHide',1);
AddConstant('caFree',2);
AddConstant('caMinimize',3);
// Add methods
AddMethod(TControl, 'BringToFront', @__BringToFront);
AddMethod(TCanvas, 'TextOut', @__TextOut);
// AddMethod(TForm, 'Hide', @__TForm_Hide);
// Add non-published property
AddProperty(TForm, 'Canvas', @__TForm_GetCanvas, nil);
AddObject(fParent.Name,fParent);
End;
End;
End;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -