mWaitingClose: Boolean;
mInClose: Boolean;
mFreeOnClose: Boolean; // default: false
+ mDoCenter: Boolean; // after layouting
protected
procedure activated (); override;
lay.layout();
//writeln('=== final ==='); lay.dump();
+ if (ctl.mParent = nil) and (ctl is THTopWindow) and (THTopWindow(ctl).mDoCenter) then
+ begin
+ THTopWindow(ctl).centerInScreen();
+ end;
+
finally
FreeAndNil(lay);
end;
result := true;
exit;
end;
+ if (strEquCI1251(prname, 'position')) then
+ begin
+ if (par.eatIdOrStr('default', false)) then mDoCenter := false
+ else if (par.eatIdOrStr('center', false)) then mDoCenter := true
+ else par.error('`center` or `default` expected');
+ result := true;
+ exit;
+ end;
if (parseOrientation(prname, par)) then begin result := true; exit; end;
result := inherited parseProperty(prname, par);
end;
procedure expectId (const aid: AnsiString; caseSens: Boolean=true);
function eatId (const aid: AnsiString; caseSens: Boolean=true): Boolean;
function eatIdOrStr (const aid: AnsiString; caseSens: Boolean=true): Boolean;
+ function eatIdOrStrCI (const aid: AnsiString): Boolean; inline;
function expectStr (allowEmpty: Boolean=false): AnsiString;
function expectInt (): Integer;
end;
+function TTextParser.eatIdOrStrCI (const aid: AnsiString): Boolean; inline;
+begin
+ result := eatIdOrStr(aid, false);
+end;
+
+
function TTextParser.expectStr (allowEmpty: Boolean=false): AnsiString;
begin
if (mTokType <> TTStr) then raise Exception.Create('string expected');