Program U_InputQueryDemo; //http://www.delphiforfun.org/Programs/Delphi_Techniques/Draw%20Moon.htm //migrate to maXbox by mX - #locs:140 //DONE: b.pixelformat:=pf24bit; {to force true black background} {interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;} //type {TForm1 = class(TForm) PBox: TPaintBox; CloseBtn: TButton; MoonBtn: TButton; procedure FormActivate(Sender: TObject); procedure PBoxPaint(Sender: TObject); procedure CloseBtnClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure MoonBtnClick(Sender: TObject); private Private declarations } //public var moonphase:single; {fraction of moon visible: 0 to 1} b:TBitmap; {moon image} PBox: TPaintBox; Form1: TForm; //implementation //uses math; //{$R *.DFM} function mInputQuery(const ACaption, APrompt: string; var Value: string): Boolean; var Form: TForm; Prompt: TLabel; Edit: TEdit; DialogUnits: TPoint; BtnTop, BtnWidth, BtnHeight, MinWidth: Integer; rct: TRect; begin Result:= False; Form:= TForm.Create(Application); with Form do try canvas.Font.name:= 'Arial'; DialogUnits:= GetAveCharSize(Canvas); BorderStyle:= bsDialog; Caption:= ACaption; brush.Style:= bsdiagcross; Position:= poScreenCenter; Prompt:= TLabel.Create(Form); MinWidth:= MulDiv(164, DialogUnits.X, 4); with Prompt do begin Parent:= Form; AutoSize:= False; parentbackground:= false; Color:= clTeal; Left:= MulDiv(8, DialogUnits.X, 4); Top:= MulDiv(8, DialogUnits.Y, 8); rct:= Rect(10, 10, 350, 50); DrawText(Canvas.Handle, APrompt, length(APrompt), rct, DT_CALCRECT); if rct.Right < MinWidth then Width:= MinWidth else Width:= rct.Right; Height:= rct.Bottom; WordWrap:= true; Caption:= APrompt; end; ClientWidth:= Prompt.Left + Prompt.Width + Prompt.Left; Edit := TEdit.Create(Form); with Edit do begin Parent:= Form; Left:= Prompt.Left; Top:= Prompt.Top + Prompt.Height + MulDiv(10, DialogUnits.Y, 8); Width:= Prompt.Width; MaxLength:= 255; Text:= Value; SelectAll; end; BtnTop:= Edit.Top + Edit.Height + MulDiv(10, DialogUnits.Y, 8); BtnWidth:= MulDiv(50, DialogUnits.X, 4); BtnHeight:= MulDiv(14, DialogUnits.Y, 8); with TButton.Create(Form) do begin Parent:= Form; Caption:= 'DlgOK'; ModalResult:= mrOk; Default:= True; SetBounds(MulDiv(38, DialogUnits.X, 4), BtnTop, BtnWidth, BtnHeight); end; with TButton.Create(Form) do begin Parent:= Form; Caption:= 'DlgCancel'; ModalResult:= mrCancel; Cancel:= True; SetBounds(MulDiv(148, DialogUnits.X, 4), BtnTop, BtnWidth, BtnHeight); end; with TBitBtn.Create(form) do begin Parent:= Form; setbounds(230, 10,60, 60); //glyph.LoadFromResourceName(getHINSTANCE,'BEACHANIM'); glyph.LoadFromResourceName(getHINSTANCE,'CHECKERS_PIECES40'); end; ClientHeight:= BtnTop + BtnHeight + Prompt.Top; if ShowModal = mrOk then begin Value:= Edit.Text; Result:= True; end; finally Form.Free; end; end; function mInputBox(const ACaption, APrompt, ADefault: string): string; begin Result:= ADefault; mInputQuery(ACaption, APrompt, Result); end; procedure TForm1_Btn1Click(Sender: TObject); var label1: TLabel; begin //Label1.Caption := writeln(mInputBox('WebScript!', 'This is some longish text.'#13'This is a second line'#13'and this is a third.', 'Please enter a URL: https://github.com/maxkleiner/maXbox3/releases')); end; procedure swap2(var a,b:integer); {exchange 2 integers} var n:integer; begin n:=a; a:=b; b:=n; end; begin //main //create //TForm1_FormActivate(self); TForm1_Btn1Click(self); End. Doc: tform
TTimer = class(TComponent) private FInterval: Cardinal; FWindowHandle: HWND; FOnTimer: TNotifyEvent; FEnabled: Boolean; procedure UpdateTimer; procedure SetEnabled(Value: Boolean); procedure SetInterval(Value: Cardinal); procedure SetOnTimer(Value: TNotifyEvent); procedure WndProc(var Msg: TMessage); protected procedure Timer; dynamic; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; published property Enabled: Boolean read FEnabled write SetEnabled default True; property Interval: Cardinal read FInterval write SetInterval default 1000; property OnTimer: TNotifyEvent read FOnTimer write SetOnTimer; end; ----app_template_loaded_code---- ----File newtemplate.txt not exists - now saved!----