spiegel-keyman/windows/src/developer/setup/SetupForm.pas
Marc Durdin b65b982584 Keyman Desktop and Keyman Developer open source 10.0 alpha seed (#121)
* Keyman for Windows 10.0 Open Source

* Squashed 'windows/src/ext/jedi/jedi/' content from commit f444ad2

git-subtree-dir: windows/src/ext/jedi/jedi
git-subtree-split: f444ad2da4693851e523f1ea6bd541f701904c24

* Squashed 'windows/src/ext/jedi/jcl/' content from commit d63d3c9fd

git-subtree-dir: windows/src/ext/jedi/jcl
git-subtree-split: d63d3c9fd9ff84efdd8159084ec6a60313644243

* Squashed 'windows/src/ext/jedi/jvcl/' content from commit bee19f3b4

git-subtree-dir: windows/src/ext/jedi/jvcl
git-subtree-split: bee19f3b46909fde2fa92c06cd2706f41d99f6c3

* Add required .res files

* Add required .res files

* Add docbook files (forced)

* Add required libxslt

* Add required jedi files

* Add installation files

* Tweak .gitignore for open

* CI

* Remove KMW from Developer source (#122)

* Remove KMW from Developer source (copies during build)

* Remove KMW from Developer source (copies during build)

* Remove KMW from Developer source (copies during build)

* Fixup release build and copy license, readme from kmw during build

* Remove obsolete build help documentation

* Keyman Engine 10 on Windows regression for shift states (#129)

* Improve #128 -- cleaner debug messages

* Fixes #127, shift state now resets correctly; and more work for #128

* Fixes #130 (#131)
2017-07-25 10:53:06 +07:00

131 lines
2.9 KiB
ObjectPascal

(*
Name: SetupForm
Copyright: Copyright (C) SIL International.
Documentation:
Description:
Create Date: 19 Jun 2007
Modified Date: 18 May 2012
Authors: mcdurdin
Related Files:
Dependencies:
Bugs:
Todo:
Notes:
History: 19 Jun 2007 - mcdurdin - I817 - Translate to Unicode and remove Forms dependence
23 Aug 2007 - mcdurdin - Initial version from Desktop
18 May 2012 - mcdurdin - I3306 - V9.0 - Remove TntControls + Win9x support
*)
unit SetupForm; // I3306
interface
uses
Windows,
Classes,
Messages,
TntDialogHelp;
type
TSetupForm = class(TComponent)
private
FHandle: HWND;
FModalResult: Integer;
DlgFunc: Pointer;
procedure IntDlgMain(var Message: TMessage);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
function ShowModal: Integer;
property Handle: HWND read FHandle;
property ModalResult: Integer read FModalResult write FModalResult;
public
function DialogID: Integer; virtual; abstract;
procedure FormCreate(Sender: TObject); virtual;
procedure FormShow(Sender: TObject); virtual;
function ProcessCommand(ID, NotificationCode: Integer; hControl: HWND): Boolean; virtual;
procedure DlgMain(var Message: TMessage); virtual;
end;
implementation
uses
SysUtils;
{ TSetupForm }
constructor TSetupForm.Create(AOwner: TComponent);
begin
inherited;
DlgFunc := MakeObjectInstance(IntDlgMain);
FHandle := CreateDialog(HInstance, MakeIntResourceW(DialogID), 0, DlgFunc);
if Handle = 0 then RaiseLastOSError;
FormCreate(Self);
end;
destructor TSetupForm.Destroy;
begin
DestroyWindow(Handle);
FreeObjectInstance(DlgFunc);
inherited Destroy;
end;
procedure TSetupForm.DlgMain(var Message: TMessage);
begin
case Message.Msg of
WM_INITDIALOG:
Message.Result := 1;
WM_COMMAND:
if ProcessCommand(LOWORD(Message.WParam), HIWORD(Message.WParam), Message.LParam)
then Message.Result := 1
else Message.Result := 0;
else
Message.Result := 0;
end;
end;
procedure TSetupForm.IntDlgMain(var Message: TMessage);
begin
DlgMain(Message);
end;
procedure TSetupForm.FormCreate(Sender: TObject);
begin
end;
procedure TSetupForm.FormShow(Sender: TObject);
begin
end;
function TSetupForm.ProcessCommand(ID, NotificationCode: Integer;
hControl: HWND): Boolean;
begin
Result := False;
end;
function TSetupForm.ShowModal: Integer;
var
msg: TMsg;
begin
ShowWindow(Handle, SW_SHOWNORMAL);
FormShow(Self);
repeat
if not GetMessage(msg, 0, 0, 0) then ModalResult := mrCancel
else
begin
if not IsDialogMessage(Handle, msg) then
begin
TranslateMessage(msg);
DispatchMessage(msg);
end;
end;
if ModalResult <> 0 then ShowWindow(Handle, SW_HIDE);
until ModalResult <> 0;
Result := ModalResult;
end;
end.