mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-12 08:56:01 +02:00
codetools: implemented function to convert simple functions to constants, h2pas: new tools to reduce IFDEFs and fucntions to constant conversion
git-svn-id: trunk@11761 -
This commit is contained in:
parent
3b1bf0495f
commit
d48eb4b364
@ -198,6 +198,8 @@ type
|
|||||||
function FixAliasDefinitions(TreeOfCodeTreeNodeExt: TAVLTree;
|
function FixAliasDefinitions(TreeOfCodeTreeNodeExt: TAVLTree;
|
||||||
SourceChangeCache: TSourceChangeCache): boolean;
|
SourceChangeCache: TSourceChangeCache): boolean;
|
||||||
function FindConstFunctions(out TreeOfCodeTreeNodeExt: TAVLTree): boolean;
|
function FindConstFunctions(out TreeOfCodeTreeNodeExt: TAVLTree): boolean;
|
||||||
|
function ReplaceConstFunctions(TreeOfCodeTreeNodeExt: TAVLTree;
|
||||||
|
SourceChangeCache: TSourceChangeCache): boolean;
|
||||||
|
|
||||||
// custom class completion
|
// custom class completion
|
||||||
function InitClassCompletion(const UpperClassName: string;
|
function InitClassCompletion(const UpperClassName: string;
|
||||||
@ -1217,7 +1219,8 @@ var
|
|||||||
begin
|
begin
|
||||||
Result:=false;
|
Result:=false;
|
||||||
if SourceChangeCache=nil then exit;
|
if SourceChangeCache=nil then exit;
|
||||||
if (TreeOfCodeTreeNodeExt=nil) or (TreeOfCodeTreeNodeExt.Count=0) then exit;
|
if (TreeOfCodeTreeNodeExt=nil) or (TreeOfCodeTreeNodeExt.Count=0) then
|
||||||
|
exit(true);
|
||||||
SourceChangeCache.MainScanner:=Scanner;
|
SourceChangeCache.MainScanner:=Scanner;
|
||||||
|
|
||||||
NodesToDo:=TAVLTree.Create;
|
NodesToDo:=TAVLTree.Create;
|
||||||
@ -1313,6 +1316,7 @@ end;
|
|||||||
|
|
||||||
function TCodeCompletionCodeTool.FindAliasDefinitions(out
|
function TCodeCompletionCodeTool.FindAliasDefinitions(out
|
||||||
TreeOfCodeTreeNodeExt: TAVLTree; OnlyWrongType: boolean): boolean;
|
TreeOfCodeTreeNodeExt: TAVLTree; OnlyWrongType: boolean): boolean;
|
||||||
|
// finds all public definitions of the form 'const A = B;'
|
||||||
var
|
var
|
||||||
NodeExt: TCodeTreeNodeExtension;
|
NodeExt: TCodeTreeNodeExtension;
|
||||||
AllNodes: TAVLTree;
|
AllNodes: TAVLTree;
|
||||||
@ -1410,12 +1414,12 @@ function TCodeCompletionCodeTool.FixAliasDefinitions(
|
|||||||
): boolean;
|
): boolean;
|
||||||
begin
|
begin
|
||||||
Result:=false;
|
Result:=false;
|
||||||
|
raise Exception.Create('TCodeCompletionCodeTool.FixAliasDefinitions not implemented yet');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCodeCompletionCodeTool.FindConstFunctions(
|
function TCodeCompletionCodeTool.FindConstFunctions(
|
||||||
out TreeOfCodeTreeNodeExt: TAVLTree): boolean;
|
out TreeOfCodeTreeNodeExt: TAVLTree): boolean;
|
||||||
{ find dummy functions that can be replaced with a constant
|
{ find public dummy functions that can be replaced with a constant
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
function MPI_CONVERSION_FN_NULL : PMPI_Datarep_conversion_function;
|
function MPI_CONVERSION_FN_NULL : PMPI_Datarep_conversion_function;
|
||||||
@ -1423,16 +1427,89 @@ function TCodeCompletionCodeTool.FindConstFunctions(
|
|||||||
MPI_CONVERSION_FN_NULL:=PMPI_Datarep_conversion_function(0);
|
MPI_CONVERSION_FN_NULL:=PMPI_Datarep_conversion_function(0);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Where the expression only contains unit wide defined types, constants,
|
Where the expression only contains unit defined types, constants,
|
||||||
variables, built-in functions and no members nor functions.
|
variables, built-in const functions and no members nor functions.
|
||||||
|
|
||||||
|
NodeExt.Txt: description
|
||||||
|
NodeExt.Node: definition node
|
||||||
|
NodeExt.Data: function body node
|
||||||
|
NodeExt.ExtTxt1: ExtractCode(ExprStart,ExprEnd,[]);
|
||||||
}
|
}
|
||||||
|
var
|
||||||
|
Definitions: TAVLTree;
|
||||||
|
|
||||||
procedure CheckProcNode(ProcNode: TCodeTreeNode);
|
procedure CheckProcNode(ProcNode: TCodeTreeNode);
|
||||||
|
// check if node is a function (not class function)
|
||||||
var
|
var
|
||||||
Node: TCodeTreeNode;
|
Node: TCodeTreeNode;
|
||||||
|
FuncName: String;
|
||||||
|
ExprStart: LongInt;
|
||||||
|
NodeText: String;
|
||||||
|
NodeExt: TCodeTreeNodeExtension;
|
||||||
|
ExprEnd: LongInt;
|
||||||
|
ResultNodeExt: TCodeTreeNodeExtension;
|
||||||
|
|
||||||
|
function CheckExprIdentifier(const Identifier: string): boolean;
|
||||||
|
var
|
||||||
|
NodeExt: TCodeTreeNodeExtension;
|
||||||
|
begin
|
||||||
|
Result:=true;
|
||||||
|
if CompareIdentifiers('Result',PChar(Identifier))=0 then exit;
|
||||||
|
if CompareIdentifiers('FuncName',PChar(Identifier))=0 then exit;
|
||||||
|
// check for const and type definitions
|
||||||
|
NodeExt:=FindCodeTreeNodeExt(Definitions,Identifier);
|
||||||
|
if (NodeExt<>nil) and (NodeExt.Node<>nil) then begin
|
||||||
|
if NodeExt.Node.Desc in [ctnConstDefinition,ctnTypeDefinition] then
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
// check for compiler built in operators, constants and types
|
||||||
|
if IsWordBuiltInFunc.DoIt(Identifier) then exit;
|
||||||
|
if WordIsBinaryOperator.DoIt(Identifier) then exit;
|
||||||
|
if WordIsPredefinedFPCIdentifier.DoIt(Identifier) then exit;
|
||||||
|
Result:=false;
|
||||||
|
end;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
if not NodeIsFunction(ProcNode) then exit;
|
if (ProcNode=nil) or (ProcNode.Desc<>ctnProcedure) then exit;
|
||||||
if ProcNodeHasParamList(ProcNode) then exit;
|
DebugLn(['CheckProcNode START ',ExtractProcHead(ProcNode,[])]);
|
||||||
|
MoveCursorToNodeStart(ProcNode);
|
||||||
|
// read 'function'
|
||||||
|
ReadNextAtom;
|
||||||
|
if not UpAtomIs('FUNCTION') then exit;
|
||||||
|
// read name
|
||||||
|
ReadNextAtom;
|
||||||
|
FuncName:=GetAtom;
|
||||||
|
ReadNextAtom;
|
||||||
|
if CurPos.Flag=cafRoundBracketOpen then begin
|
||||||
|
// skip empty parameter list ()
|
||||||
|
ReadNextAtom;
|
||||||
|
if CurPos.Flag<>cafRoundBracketClose then exit;
|
||||||
|
ReadNextAtom;
|
||||||
|
end;
|
||||||
|
// read :
|
||||||
|
if CurPos.Flag<>cafColon then exit;
|
||||||
|
// read result type
|
||||||
|
ReadNextAtom;
|
||||||
|
if not AtomIsIdentifier(false) then exit;
|
||||||
|
|
||||||
|
// check if there is a public definition of the procedure
|
||||||
|
NodeText:=GetRedefinitionNodeText(ProcNode);
|
||||||
|
if TreeOfCodeTreeNodeExt<>nil then begin
|
||||||
|
ResultNodeExt:=FindCodeTreeNodeExt(TreeOfCodeTreeNodeExt,NodeText);
|
||||||
|
if ResultNodeExt<>nil then begin
|
||||||
|
DebugLn(['CheckProcNode function exists twice']);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
NodeExt:=FindCodeTreeNodeExt(Definitions,NodeText);
|
||||||
|
if (NodeExt=nil) or (NodeExt.Node=nil) or (NodeExt.Node.Desc<>ctnProcedure)
|
||||||
|
then begin
|
||||||
|
DebugLn(['CheckProcNode function is not public NodeText=',NodeText]);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
// check child nodes only contain the proc head and a begin block
|
||||||
Node:=ProcNode.FirstChild;
|
Node:=ProcNode.FirstChild;
|
||||||
if Node=nil then exit;
|
if Node=nil then exit;
|
||||||
if Node.Desc=ctnProcedureHead then begin
|
if Node.Desc=ctnProcedureHead then begin
|
||||||
@ -1440,44 +1517,83 @@ function TCodeCompletionCodeTool.FindConstFunctions(
|
|||||||
if Node=nil then exit;
|
if Node=nil then exit;
|
||||||
end;
|
end;
|
||||||
if Node.Desc<>ctnBeginBlock then exit;
|
if Node.Desc<>ctnBeginBlock then exit;
|
||||||
|
|
||||||
|
DebugLn(['CheckProcNode has begin block']);
|
||||||
|
|
||||||
|
// check begin block is only a single assignment
|
||||||
MoveCursorToNodeStart(Node);
|
MoveCursorToNodeStart(Node);
|
||||||
repeat
|
// read begin
|
||||||
|
ReadNextAtom;
|
||||||
|
// read 'Result' or 'FunctionName'
|
||||||
|
ReadNextAtom;
|
||||||
|
if (not UpAtomIs('RESULT')) and (not AtomIs(FuncName)) then exit;
|
||||||
|
// read :=
|
||||||
|
ReadNextAtom;
|
||||||
|
if not UpAtomIs(':=') then exit;
|
||||||
|
// read expression
|
||||||
|
ReadNextAtom;
|
||||||
|
ExprStart:=CurPos.StartPos;
|
||||||
|
ExprEnd:=ExprStart;
|
||||||
|
while (CurPos.EndPos<=Node.EndPos) do begin
|
||||||
|
if (CurPos.Flag in [cafSemicolon,cafEnd]) then
|
||||||
|
break;
|
||||||
|
// check if all identifiers can be used in a constant expression
|
||||||
|
if AtomIsIdentifier(false) and not CheckExprIdentifier(GetAtom) then
|
||||||
|
exit;
|
||||||
|
ExprEnd:=CurPos.EndPos;
|
||||||
ReadNextAtom;
|
ReadNextAtom;
|
||||||
// ToDo: check identifier
|
end;
|
||||||
if CurPos.EndPos>Node.EndPos then break;
|
if ExprStart=ExprEnd then exit;
|
||||||
until false;
|
|
||||||
|
DebugLn(['CheckProcNode FOUND']);
|
||||||
|
|
||||||
|
// save values
|
||||||
|
ResultNodeExt:=NodeExtMemManager.NewNode;
|
||||||
|
ResultNodeExt.Txt:=NodeText;
|
||||||
|
ResultNodeExt.Node:=NodeExt.Node;
|
||||||
|
ResultNodeExt.Data:=ProcNode;
|
||||||
|
ResultNodeExt.ExtTxt1:=ExtractCode(ExprStart,ExprEnd,[]);
|
||||||
|
if TreeOfCodeTreeNodeExt=nil then
|
||||||
|
TreeOfCodeTreeNodeExt:=TAVLTree.Create(@CompareCodeTreeNodeExt);
|
||||||
|
TreeOfCodeTreeNodeExt.Add(ResultNodeExt);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure AddDefinition(Node: TCodeTreeNode);
|
||||||
|
var
|
||||||
|
NodeExt: TCodeTreeNodeExtension;
|
||||||
|
NodeText: String;
|
||||||
|
begin
|
||||||
|
NodeText:=GetRedefinitionNodeText(Node);
|
||||||
|
NodeExt:=FindCodeTreeNodeExt(Definitions,NodeText);
|
||||||
|
if NodeExt=nil then begin
|
||||||
|
NodeExt:=NodeExtMemManager.NewNode;
|
||||||
|
NodeExt.Txt:=NodeText;
|
||||||
|
Definitions.Add(NodeExt);
|
||||||
|
end;
|
||||||
|
NodeExt.Node:=Node;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
var
|
var
|
||||||
Node: TCodeTreeNode;
|
Node: TCodeTreeNode;
|
||||||
Definitions: TAVLTree;
|
|
||||||
NodeText: String;
|
|
||||||
NodeExt: TCodeTreeNodeExtension;
|
|
||||||
begin
|
begin
|
||||||
Result:=false;
|
Result:=false;
|
||||||
TreeOfCodeTreeNodeExt:=nil;
|
TreeOfCodeTreeNodeExt:=nil;
|
||||||
BuildTree(false);
|
BuildTree(false);
|
||||||
if not EndOfSourceFound then exit;
|
if not EndOfSourceFound then exit;
|
||||||
|
|
||||||
// first step: find all global identifiers
|
// first step: find all unit identifiers (excluding implementation section)
|
||||||
Definitions:=TAVLTree.Create(@CompareCodeTreeNodeExt);
|
Definitions:=TAVLTree.Create(@CompareCodeTreeNodeExt);
|
||||||
try
|
try
|
||||||
Node:=Tree.Root;
|
Node:=Tree.Root;
|
||||||
while Node<>nil do begin
|
while Node<>nil do begin
|
||||||
case Node.Desc of
|
case Node.Desc of
|
||||||
ctnProcedureHead, ctnProperty, ctnParameterList:
|
ctnProcedureHead, ctnProperty, ctnParameterList, ctnImplementation:
|
||||||
Node:=Node.NextSkipChilds;
|
Node:=Node.NextSkipChilds;
|
||||||
ctnVarDefinition,ctnConstDefinition,ctnTypeDefinition,ctnEnumIdentifier:
|
ctnVarDefinition,ctnConstDefinition,ctnTypeDefinition,ctnEnumIdentifier:
|
||||||
begin
|
begin
|
||||||
// add or update definition
|
// add or update definition
|
||||||
NodeText:=ExtractDefinitionName(Node);
|
AddDefinition(Node);
|
||||||
NodeExt:=FindCodeTreeNodeExt(Definitions,NodeText);
|
|
||||||
if NodeExt=nil then begin
|
|
||||||
NodeExt:=NodeExtMemManager.NewNode;
|
|
||||||
NodeExt.Txt:=NodeText;
|
|
||||||
end;
|
|
||||||
NodeExt.Node:=Node;
|
|
||||||
|
|
||||||
if (Node.Desc=ctnTypeDefinition)
|
if (Node.Desc=ctnTypeDefinition)
|
||||||
and (Node.FirstChild<>nil)
|
and (Node.FirstChild<>nil)
|
||||||
and (Node.FirstChild.Desc=ctnEnumerationType) then
|
and (Node.FirstChild.Desc=ctnEnumerationType) then
|
||||||
@ -1485,6 +1601,11 @@ begin
|
|||||||
else
|
else
|
||||||
Node:=Node.Next;
|
Node:=Node.Next;
|
||||||
end;
|
end;
|
||||||
|
ctnProcedure:
|
||||||
|
begin
|
||||||
|
AddDefinition(Node);
|
||||||
|
Node:=Node.NextSkipChilds;
|
||||||
|
end;
|
||||||
else
|
else
|
||||||
Node:=Node.Next;
|
Node:=Node.Next;
|
||||||
end;
|
end;
|
||||||
@ -1500,7 +1621,7 @@ begin
|
|||||||
ctnProcedure:
|
ctnProcedure:
|
||||||
begin
|
begin
|
||||||
CheckProcNode(Node);
|
CheckProcNode(Node);
|
||||||
Node:=Node.Next;
|
Node:=Node.NextSkipChilds;
|
||||||
end;
|
end;
|
||||||
else
|
else
|
||||||
Node:=Node.Next;
|
Node:=Node.Next;
|
||||||
@ -1511,6 +1632,87 @@ begin
|
|||||||
Definitions.FreeAndClear;
|
Definitions.FreeAndClear;
|
||||||
Definitions.Free;
|
Definitions.Free;
|
||||||
end;
|
end;
|
||||||
|
Result:=true;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCodeCompletionCodeTool.ReplaceConstFunctions(
|
||||||
|
TreeOfCodeTreeNodeExt: TAVLTree; SourceChangeCache: TSourceChangeCache
|
||||||
|
): boolean;
|
||||||
|
{ replaces public dummy functions with a constant.
|
||||||
|
The function body will be removed.
|
||||||
|
See the function FindConstFunctions.
|
||||||
|
}
|
||||||
|
function IsConstSectionNeeded(Node: TCodeTreeNode): boolean;
|
||||||
|
var
|
||||||
|
AVLNode: TAVLTreeNode;
|
||||||
|
NodeExt: TCodeTreeNodeExtension;
|
||||||
|
begin
|
||||||
|
if Node.PriorBrother.Desc=ctnConstSection then exit(false);
|
||||||
|
AVLNode:=TreeOfCodeTreeNodeExt.FindLowest;
|
||||||
|
while AVLNode<>nil do begin
|
||||||
|
NodeExt:=TCodeTreeNodeExtension(AVLNode.Data);
|
||||||
|
if NodeExt.Node=Node.PriorBrother then begin
|
||||||
|
// the function in front will be replaced too
|
||||||
|
exit(false);
|
||||||
|
end;
|
||||||
|
AVLNode:=TreeOfCodeTreeNodeExt.FindSuccessor(AVLNode);
|
||||||
|
end;
|
||||||
|
Result:=true;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
AVLNode: TAVLTreeNode;
|
||||||
|
NodeExt: TCodeTreeNodeExtension;
|
||||||
|
DefNode: TCodeTreeNode;
|
||||||
|
BodyNode: TCodeTreeNode;
|
||||||
|
Expr: String;
|
||||||
|
FromPos: LongInt;
|
||||||
|
ToPos: LongInt;
|
||||||
|
NewSrc: String;
|
||||||
|
begin
|
||||||
|
Result:=false;
|
||||||
|
if SourceChangeCache=nil then exit;
|
||||||
|
if (TreeOfCodeTreeNodeExt=nil) or (TreeOfCodeTreeNodeExt.Count=0) then
|
||||||
|
exit(true);
|
||||||
|
SourceChangeCache.MainScanner:=Scanner;
|
||||||
|
|
||||||
|
AVLNode:=TreeOfCodeTreeNodeExt.FindLowest;
|
||||||
|
while AVLNode<>nil do begin
|
||||||
|
NodeExt:=TCodeTreeNodeExtension(AVLNode.Data);
|
||||||
|
DebugLn(['TCodeCompletionCodeTool.ReplaceConstFunctions ',NodeExt.Txt]);
|
||||||
|
DefNode:=NodeExt.Node;
|
||||||
|
BodyNode:=TCodeTreeNode(NodeExt.Data);
|
||||||
|
Expr:=NodeExt.ExtTxt1;
|
||||||
|
DebugLn(['TCodeCompletionCodeTool.ReplaceConstFunctions Expr=',Expr]);
|
||||||
|
|
||||||
|
// remove body node
|
||||||
|
FromPos:=FindLineEndOrCodeInFrontOfPosition(BodyNode.StartPos);
|
||||||
|
ToPos:=FindLineEndOrCodeAfterPosition(BodyNode.EndPos);
|
||||||
|
if (ToPos<=SrcLen) and (Src[ToPos] in [#10,#13]) then begin
|
||||||
|
inc(ToPos);
|
||||||
|
if (ToPos<=SrcLen) and (Src[ToPos] in [#10,#13])
|
||||||
|
and (Src[ToPos-1]<>Src[ToPos]) then
|
||||||
|
inc(ToPos);
|
||||||
|
end;
|
||||||
|
DebugLn(['TCodeCompletionCodeTool.ReplaceConstFunctions Body="',copy(Src,FromPos,ToPos-FromPos),'"']);
|
||||||
|
SourceChangeCache.Replace(gtNone,gtNone,FromPos,ToPos,'');
|
||||||
|
|
||||||
|
// replace definition
|
||||||
|
FromPos:=DefNode.StartPos;
|
||||||
|
ToPos:=DefNode.EndPos;
|
||||||
|
if Src[ToPos]=';' then inc(ToPos);// add semicolon
|
||||||
|
NewSrc:=GetIndentStr(SourceChangeCache.BeautifyCodeOptions.Indent)
|
||||||
|
+ExtractProcName(DefNode,[])+' = '+Expr+';';
|
||||||
|
SourceChangeCache.Replace(gtNone,gtNone,FromPos,ToPos,NewSrc);
|
||||||
|
// add 'const' keyword
|
||||||
|
if IsConstSectionNeeded(DefNode) then begin
|
||||||
|
FromPos:=FindLineEndOrCodeInFrontOfPosition(DefNode.StartPos);
|
||||||
|
SourceChangeCache.Replace(gtEmptyLine,gtNewLine,FromPos,FromPos,'const');
|
||||||
|
end;
|
||||||
|
|
||||||
|
AVLNode:=TreeOfCodeTreeNodeExt.FindSuccessor(AVLNode);
|
||||||
|
end;
|
||||||
|
Result:=SourceChangeCache.Apply;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TCodeCompletionCodeTool.InitClassCompletion(
|
function TCodeCompletionCodeTool.InitClassCompletion(
|
||||||
|
@ -419,7 +419,10 @@ type
|
|||||||
function FixAllAliasDefinitions(Code: TCodeBuffer): boolean;
|
function FixAllAliasDefinitions(Code: TCodeBuffer): boolean;
|
||||||
function FindConstFunctions(Code: TCodeBuffer;
|
function FindConstFunctions(Code: TCodeBuffer;
|
||||||
out TreeOfCodeTreeNodeExt: TAVLTree): boolean;
|
out TreeOfCodeTreeNodeExt: TAVLTree): boolean;
|
||||||
|
function ReplaceConstFunctions(Code: TCodeBuffer;
|
||||||
|
TreeOfCodeTreeNodeExt: TAVLTree): boolean;
|
||||||
|
function ReplaceAllConstFunctions(Code: TCodeBuffer): boolean;
|
||||||
|
|
||||||
// custom class completion
|
// custom class completion
|
||||||
function InitClassCompletion(Code: TCodeBuffer;
|
function InitClassCompletion(Code: TCodeBuffer;
|
||||||
const UpperClassName: string; out CodeTool: TCodeTool): boolean;
|
const UpperClassName: string; out CodeTool: TCodeTool): boolean;
|
||||||
@ -2849,6 +2852,53 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TCodeToolManager.ReplaceConstFunctions(Code: TCodeBuffer;
|
||||||
|
TreeOfCodeTreeNodeExt: TAVLTree): boolean;
|
||||||
|
begin
|
||||||
|
{$IFDEF CTDEBUG}
|
||||||
|
DebugLn('TCodeToolManager.ReplaceConstFunctions A ',Code.Filename);
|
||||||
|
{$ENDIF}
|
||||||
|
Result:=false;
|
||||||
|
if not InitCurCodeTool(Code) then exit;
|
||||||
|
try
|
||||||
|
Result:=FCurCodeTool.ReplaceConstFunctions(TreeOfCodeTreeNodeExt,
|
||||||
|
SourceChangeCache);
|
||||||
|
except
|
||||||
|
on e: Exception do Result:=HandleException(e);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TCodeToolManager.ReplaceAllConstFunctions(Code: TCodeBuffer): boolean;
|
||||||
|
var
|
||||||
|
TreeOfCodeTreeNodeExt: TAVLTree;
|
||||||
|
begin
|
||||||
|
{$IFDEF CTDEBUG}
|
||||||
|
DebugLn('TCodeToolManager.ReplaceAllConstFunctions A ',Code.Filename);
|
||||||
|
{$ENDIF}
|
||||||
|
Result:=false;
|
||||||
|
if not InitCurCodeTool(Code) then exit;
|
||||||
|
try
|
||||||
|
repeat
|
||||||
|
TreeOfCodeTreeNodeExt:=nil;
|
||||||
|
try
|
||||||
|
Result:=FCurCodeTool.FindConstFunctions(TreeOfCodeTreeNodeExt);
|
||||||
|
if (not Result) or (TreeOfCodeTreeNodeExt=nil)
|
||||||
|
or (TreeOfCodeTreeNodeExt.Count=0) then
|
||||||
|
break;
|
||||||
|
Result:=FCurCodeTool.ReplaceConstFunctions(TreeOfCodeTreeNodeExt,
|
||||||
|
SourceChangeCache);
|
||||||
|
finally
|
||||||
|
if TreeOfCodeTreeNodeExt<>nil then begin
|
||||||
|
TreeOfCodeTreeNodeExt.FreeAndClear;
|
||||||
|
TreeOfCodeTreeNodeExt.Free;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
until not Result;
|
||||||
|
except
|
||||||
|
on e: Exception do Result:=HandleException(e);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TCodeToolManager.InitClassCompletion(Code: TCodeBuffer;
|
function TCodeToolManager.InitClassCompletion(Code: TCodeBuffer;
|
||||||
const UpperClassName: string; out CodeTool: TCodeTool): boolean;
|
const UpperClassName: string; out CodeTool: TCodeTool): boolean;
|
||||||
begin
|
begin
|
||||||
|
@ -910,6 +910,7 @@ procedure TCompilerDirectivesTree.ReduceCompilerDirectives(var Changed: boolean)
|
|||||||
DisableDefineNode(MacroNode.LastDefineNode,Changed);
|
DisableDefineNode(MacroNode.LastDefineNode,Changed);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
MacroNode.LastReadNode:=nil;
|
||||||
MacroNode.LastDefineNode:=Node;
|
MacroNode.LastDefineNode:=Node;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ uses
|
|||||||
{$define HAVE_MPI_OFFSET}
|
{$define HAVE_MPI_OFFSET}
|
||||||
|
|
||||||
{$if !defined(MPI_BUILD_PROFILING)}
|
{$if !defined(MPI_BUILD_PROFILING)}
|
||||||
|
var c: char;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
|
|
||||||
{$define HAVE_MPI_GREQUEST}
|
{$define HAVE_MPI_GREQUEST}
|
||||||
|
@ -924,29 +924,32 @@ begin
|
|||||||
IsWordBuiltInFunc:=TKeyWordFunctionList.Create;
|
IsWordBuiltInFunc:=TKeyWordFunctionList.Create;
|
||||||
KeyWordLists.Add(IsWordBuiltInFunc);
|
KeyWordLists.Add(IsWordBuiltInFunc);
|
||||||
with IsWordBuiltInFunc do begin
|
with IsWordBuiltInFunc do begin
|
||||||
Add('LOW',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('LOW' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('HIGH',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('HIGH' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('LO',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('LO' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('HI',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('HI' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('ORD',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('ORD' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('PREC',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('PREC' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('SUCC',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('SUCC' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('LENGTH',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('LENGTH' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('SETLENGTH',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('SETLENGTH' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('INC',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('INC' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('DEC',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('DEC' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('INITIALIZE',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('INITIALIZE' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('FINALIZE',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('FINALIZE' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('COPY',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('COPY' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('SIZEOF',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('SIZEOF' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('WRITE',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('WRITE' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('WRITELN',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('WRITELN' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('READ',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('READ' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('READLN',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('READLN' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('TYPEOF',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('TYPEOF' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('ASSIGNED',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('ASSIGNED' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('INCLUDE',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('INCLUDE' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('EXCLUDE',{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('EXCLUDE' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
|
Add('EXIT' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
|
Add('BREAK' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
|
Add('CONTINUE' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
WordIsTermOperator:=TKeyWordFunctionList.Create;
|
WordIsTermOperator:=TKeyWordFunctionList.Create;
|
||||||
@ -1308,9 +1311,6 @@ begin
|
|||||||
Add('TRUE' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('TRUE' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('WIDECHAR' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('WIDECHAR' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('WIDESTRING' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('WIDESTRING' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('EXIT' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
|
||||||
Add('BREAK' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
|
||||||
Add('CONTINUE' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
|
||||||
Add('LONGWORD' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('LONGWORD' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('WORD' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('WORD' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
Add('LONGINT' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
Add('LONGINT' ,{$ifdef FPC}@{$endif}AllwaysTrue);
|
||||||
|
@ -26,7 +26,7 @@ uses
|
|||||||
Classes, SysUtils, LCLProc, LResources, LazConfigStorage, XMLPropStorage,
|
Classes, SysUtils, LCLProc, LResources, LazConfigStorage, XMLPropStorage,
|
||||||
Forms, Controls, Dialogs, FileUtil, FileProcs, AvgLvlTree,
|
Forms, Controls, Dialogs, FileUtil, FileProcs, AvgLvlTree,
|
||||||
// CodeTools
|
// CodeTools
|
||||||
KeywordFuncLists, BasicCodeTools, CodeCache, CodeToolManager,
|
KeywordFuncLists, BasicCodeTools, CodeCache, DirectivesTree, CodeToolManager,
|
||||||
// IDEIntf
|
// IDEIntf
|
||||||
TextTools, IDEExternToolIntf, IDEDialogs, LazIDEIntf, SrcEditorIntf,
|
TextTools, IDEExternToolIntf, IDEDialogs, LazIDEIntf, SrcEditorIntf,
|
||||||
IDEMsgIntf, IDETextConverter;
|
IDEMsgIntf, IDETextConverter;
|
||||||
@ -185,9 +185,23 @@ type
|
|||||||
function Execute(aText: TIDETextConverter): TModalResult; override;
|
function Execute(aText: TIDETextConverter): TModalResult; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TReduceCompilerDirectivesInUnit }
|
||||||
|
|
||||||
|
TReduceCompilerDirectivesInUnit = class(TCustomTextConverterTool)
|
||||||
|
public
|
||||||
|
class function ClassDescription: string; override;
|
||||||
|
function Execute(aText: TIDETextConverter): TModalResult; override;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TReplaceConstFunctionsInUnit }
|
||||||
|
|
||||||
|
TReplaceConstFunctionsInUnit = class(TCustomTextConverterTool)
|
||||||
|
public
|
||||||
|
class function ClassDescription: string; override;
|
||||||
|
function Execute(aText: TIDETextConverter): TModalResult; override;
|
||||||
|
end;
|
||||||
|
|
||||||
{ Proposal:
|
{ Proposal:
|
||||||
- A tool to remove redefinitions
|
|
||||||
- A tool to fix "constant A=B;" to type A=B; or functions
|
- A tool to fix "constant A=B;" to type A=B; or functions
|
||||||
- A tool to reorder a unit to fix forward definitions
|
- A tool to reorder a unit to fix forward definitions
|
||||||
Difficulties:
|
Difficulties:
|
||||||
@ -1368,7 +1382,7 @@ var
|
|||||||
i: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
for i:=0 to CHeaderFileCount-1 do
|
for i:=0 to CHeaderFileCount-1 do
|
||||||
if CHeaderFiles[i].Enabled then exit(true);
|
if CHeaderFiles[i].Enabled and (not CHeaderFiles[i].Merge) then exit(true);
|
||||||
Result:=false;
|
Result:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1386,11 +1400,13 @@ begin
|
|||||||
AddNewTextConverterTool(FPostH2PasTools,TRemoveSystemTypes);
|
AddNewTextConverterTool(FPostH2PasTools,TRemoveSystemTypes);
|
||||||
AddNewTextConverterTool(FPostH2PasTools,TRemoveRedefinedPointerTypes);
|
AddNewTextConverterTool(FPostH2PasTools,TRemoveRedefinedPointerTypes);
|
||||||
AddNewTextConverterTool(FPostH2PasTools,TRemoveEmptyTypeVarConstSections);
|
AddNewTextConverterTool(FPostH2PasTools,TRemoveEmptyTypeVarConstSections);
|
||||||
|
AddNewTextConverterTool(FPostH2PasTools,TReduceCompilerDirectivesInUnit);
|
||||||
AddNewTextConverterTool(FPostH2PasTools,TReplaceImplicitTypes);
|
AddNewTextConverterTool(FPostH2PasTools,TReplaceImplicitTypes);
|
||||||
AddNewTextConverterTool(FPostH2PasTools,TFixArrayOfParameterType);
|
AddNewTextConverterTool(FPostH2PasTools,TFixArrayOfParameterType);
|
||||||
// the above tools fixed the syntax
|
// the above tools fixed the syntax
|
||||||
// now improve the declarations
|
// now improve the declarations
|
||||||
AddNewTextConverterTool(FPostH2PasTools,TRemoveRedefinitionsInUnit);
|
AddNewTextConverterTool(FPostH2PasTools,TRemoveRedefinitionsInUnit);
|
||||||
|
AddNewTextConverterTool(FPostH2PasTools,TReplaceConstFunctionsInUnit);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TH2PasProject.SearchIncludedCHeaderFile(aFile: TH2PasFile;
|
function TH2PasProject.SearchIncludedCHeaderFile(aFile: TH2PasFile;
|
||||||
@ -2213,7 +2229,7 @@ function TRemoveRedefinedPointerTypes.Execute(aText: TIDETextConverter
|
|||||||
): TModalResult;
|
): TModalResult;
|
||||||
{ search for
|
{ search for
|
||||||
Pname = ^name;
|
Pname = ^name;
|
||||||
if PName has a redefinition, delete the first one
|
if PName has a redefinition, delete the second one
|
||||||
}
|
}
|
||||||
var
|
var
|
||||||
Lines: TStrings;
|
Lines: TStrings;
|
||||||
@ -2234,12 +2250,11 @@ begin
|
|||||||
PointerName:=REVar(1);
|
PointerName:=REVar(1);
|
||||||
TypeName:=REVar(2);
|
TypeName:=REVar(2);
|
||||||
Pattern:='^\s*'+PointerName+'\s*=\s*\^\s*'+TypeName+'\s*;';
|
Pattern:='^\s*'+PointerName+'\s*=\s*\^\s*'+TypeName+'\s*;';
|
||||||
j:=i+1;
|
j:=Lines.Count-1;
|
||||||
while (j<Lines.Count-1) and (not REMatches(Line,Pattern)) do
|
while (j>i) do begin
|
||||||
|
if REMatches(Lines[j],Pattern) then
|
||||||
|
Lines.Delete(j);
|
||||||
dec(j);
|
dec(j);
|
||||||
if j<Lines.Count then begin
|
|
||||||
Lines.Delete(i);
|
|
||||||
dec(i);
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
inc(i);
|
inc(i);
|
||||||
@ -3161,12 +3176,66 @@ function TFixAliasDefinitionsInUnit.Execute(aText: TIDETextConverter
|
|||||||
begin
|
begin
|
||||||
Result:=mrCancel;
|
Result:=mrCancel;
|
||||||
if (not FilenameIsPascalUnit(aText.Filename)) then begin
|
if (not FilenameIsPascalUnit(aText.Filename)) then begin
|
||||||
DebugLn(['TRemoveRedefinitionsInUnit.Execute file is not pascal: ',aText.Filename]);
|
DebugLn(['TFixAliasDefinitionsInUnit.Execute file is not pascal: ',aText.Filename]);
|
||||||
exit(mrOk);// ignore
|
exit(mrOk);// ignore
|
||||||
end;
|
end;
|
||||||
// ToDo: finish codetools FixAllAliasDefinitions
|
// ToDo: finish codetools FixAllAliasDefinitions
|
||||||
if not CodeToolBoss.FixAllAliasDefinitions(TCodeBuffer(aText.CodeBuffer)) then begin
|
if not CodeToolBoss.FixAllAliasDefinitions(TCodeBuffer(aText.CodeBuffer)) then begin
|
||||||
DebugLn(['TRemoveRedefinitionsInUnit.Execute FixAllAliasDefinitions failed ',CodeToolBoss.ErrorMessage]);
|
DebugLn(['TFixAliasDefinitionsInUnit.Execute FixAllAliasDefinitions failed ',CodeToolBoss.ErrorMessage]);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
Result:=mrOk;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TReduceCompilerDirectivesInUnit }
|
||||||
|
|
||||||
|
class function TReduceCompilerDirectivesInUnit.ClassDescription: string;
|
||||||
|
begin
|
||||||
|
Result:='Reduce compiler directives in pascal file'#13
|
||||||
|
+'Shortens expressions in $IF directives'#13
|
||||||
|
+'and removes unneeded $IFDEF and $DEFINE directives.';
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TReduceCompilerDirectivesInUnit.Execute(aText: TIDETextConverter
|
||||||
|
): TModalResult;
|
||||||
|
var
|
||||||
|
Tree: TCompilerDirectivesTree;
|
||||||
|
Code: TCodeBuffer;
|
||||||
|
Changed: Boolean;
|
||||||
|
begin
|
||||||
|
Result:=mrCancel;
|
||||||
|
Tree:=TCompilerDirectivesTree.Create;
|
||||||
|
Code:=TCodeBuffer(aText.CodeBuffer);
|
||||||
|
if not Tree.Parse(Code,CodeToolBoss.GetNestedCommentsFlagForFile(Code.Filename))
|
||||||
|
then begin
|
||||||
|
DebugLn(['TReduceCompilerDirectivesInUnit.Execute failed parsing compiler directives']);
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
repeat
|
||||||
|
Changed:=false;
|
||||||
|
Tree.ReduceCompilerDirectives(Changed);
|
||||||
|
//Tree.WriteDebugReport;
|
||||||
|
until not Changed;
|
||||||
|
Result:=mrOk;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{ TReplaceConstFunctionsInUnit }
|
||||||
|
|
||||||
|
class function TReplaceConstFunctionsInUnit.ClassDescription: string;
|
||||||
|
begin
|
||||||
|
Result:='Replace simple functions with constants';
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TReplaceConstFunctionsInUnit.Execute(aText: TIDETextConverter
|
||||||
|
): TModalResult;
|
||||||
|
begin
|
||||||
|
Result:=mrCancel;
|
||||||
|
if (not FilenameIsPascalUnit(aText.Filename)) then begin
|
||||||
|
DebugLn(['TReplaceConstFunctionsInUnit.Execute file is not pascal: ',aText.Filename]);
|
||||||
|
exit(mrOk);// ignore
|
||||||
|
end;
|
||||||
|
if not CodeToolBoss.ReplaceAllConstFunctions(TCodeBuffer(aText.CodeBuffer)) then begin
|
||||||
|
DebugLn(['TReplaceConstFunctionsInUnit.Execute ReplaceAllConstFunctions failed ',CodeToolBoss.ErrorMessage]);
|
||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
Result:=mrOk;
|
Result:=mrOk;
|
||||||
|
@ -7,6 +7,8 @@ object H2PasDialog: TH2PasDialog
|
|||||||
VertScrollBar.Page = 548
|
VertScrollBar.Page = 548
|
||||||
ActiveControl = ConvertButton
|
ActiveControl = ConvertButton
|
||||||
Caption = 'H2PasDialog'
|
Caption = 'H2PasDialog'
|
||||||
|
ClientHeight = 549
|
||||||
|
ClientWidth = 785
|
||||||
KeyPreview = True
|
KeyPreview = True
|
||||||
OnCloseQuery = FormCloseQuery
|
OnCloseQuery = FormCloseQuery
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
@ -15,7 +17,7 @@ object H2PasDialog: TH2PasDialog
|
|||||||
Position = poDesktopCenter
|
Position = poDesktopCenter
|
||||||
object MainPageControl: TPageControl
|
object MainPageControl: TPageControl
|
||||||
AnchorSideBottom.Control = OpenSettingsButton
|
AnchorSideBottom.Control = OpenSettingsButton
|
||||||
Height = 509
|
Height = 502
|
||||||
Width = 785
|
Width = 785
|
||||||
ActivePage = FilesTabSheet
|
ActivePage = FilesTabSheet
|
||||||
Align = alTop
|
Align = alTop
|
||||||
@ -24,11 +26,13 @@ object H2PasDialog: TH2PasDialog
|
|||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
object FilesTabSheet: TTabSheet
|
object FilesTabSheet: TTabSheet
|
||||||
Caption = 'FilesTabSheet'
|
Caption = 'FilesTabSheet'
|
||||||
|
ClientHeight = 471
|
||||||
|
ClientWidth = 781
|
||||||
object CHeaderFilesCheckTreeView: TTreeView
|
object CHeaderFilesCheckTreeView: TTreeView
|
||||||
Height = 475
|
Height = 471
|
||||||
Width = 255
|
Width = 255
|
||||||
Align = alLeft
|
Align = alLeft
|
||||||
DefaultItemHeight = 18
|
DefaultItemHeight = 19
|
||||||
StateImages = FileStateImageList
|
StateImages = FileStateImageList
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
OnDblClick = CHeaderFilesCheckTreeViewDblClick
|
OnDblClick = CHeaderFilesCheckTreeViewDblClick
|
||||||
@ -90,7 +94,7 @@ object H2PasDialog: TH2PasDialog
|
|||||||
end
|
end
|
||||||
object CHeaderFilesSplitter1: TSplitter
|
object CHeaderFilesSplitter1: TSplitter
|
||||||
Left = 255
|
Left = 255
|
||||||
Height = 475
|
Height = 471
|
||||||
Width = 5
|
Width = 5
|
||||||
Beveled = True
|
Beveled = True
|
||||||
end
|
end
|
||||||
@ -102,19 +106,21 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideBottom.Control = FilesTabSheet
|
AnchorSideBottom.Control = FilesTabSheet
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 260
|
Left = 260
|
||||||
Height = 267
|
Height = 263
|
||||||
Top = 208
|
Top = 208
|
||||||
Width = 521
|
Width = 521
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
Caption = 'FileInfoGroupBox'
|
Caption = 'FileInfoGroupBox'
|
||||||
|
ClientHeight = 244
|
||||||
|
ClientWidth = 517
|
||||||
TabOrder = 5
|
TabOrder = 5
|
||||||
object AddIncludedCHeaderFilesButton: TButton
|
object AddIncludedCHeaderFilesButton: TButton
|
||||||
AnchorSideBottom.Control = FileInfoGroupBox
|
AnchorSideBottom.Control = FileInfoGroupBox
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 30
|
Height = 37
|
||||||
Top = 210
|
Top = 201
|
||||||
Width = 249
|
Width = 224
|
||||||
Anchors = [akLeft, akBottom]
|
Anchors = [akLeft, akBottom]
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 6
|
BorderSpacing.Around = 6
|
||||||
@ -130,8 +136,8 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideRight.Control = FileInfoGroupBox
|
AnchorSideRight.Control = FileInfoGroupBox
|
||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
AnchorSideBottom.Control = AddIncludedCHeaderFilesButton
|
AnchorSideBottom.Control = AddIncludedCHeaderFilesButton
|
||||||
Height = 183
|
Height = 176
|
||||||
Top = 21
|
Top = 19
|
||||||
Width = 517
|
Width = 517
|
||||||
Anchors = [akTop, akLeft, akRight, akBottom]
|
Anchors = [akTop, akLeft, akRight, akBottom]
|
||||||
Color = clNone
|
Color = clNone
|
||||||
@ -140,10 +146,11 @@ object H2PasDialog: TH2PasDialog
|
|||||||
end
|
end
|
||||||
object MergeFileCheckBox: TCheckBox
|
object MergeFileCheckBox: TCheckBox
|
||||||
Left = 8
|
Left = 8
|
||||||
Height = 24
|
Height = 22
|
||||||
Top = -3
|
Top = -3
|
||||||
Width = 168
|
Width = 146
|
||||||
Caption = 'MergeFileCheckBox'
|
Caption = 'MergeFileCheckBox'
|
||||||
|
OnEditingDone = MergeFileCheckBoxEditingDone
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -194,8 +201,10 @@ object H2PasDialog: TH2PasDialog
|
|||||||
end
|
end
|
||||||
object PreH2PasTabSheet: TTabSheet
|
object PreH2PasTabSheet: TTabSheet
|
||||||
Caption = 'PreH2PasTabSheet'
|
Caption = 'PreH2PasTabSheet'
|
||||||
|
ClientHeight = 471
|
||||||
|
ClientWidth = 781
|
||||||
object PreH2PasGroupBox: TGroupBox
|
object PreH2PasGroupBox: TGroupBox
|
||||||
Height = 475
|
Height = 471
|
||||||
Width = 781
|
Width = 781
|
||||||
Align = alClient
|
Align = alClient
|
||||||
Caption = 'PreH2PasGroupBox'
|
Caption = 'PreH2PasGroupBox'
|
||||||
@ -204,6 +213,8 @@ object H2PasDialog: TH2PasDialog
|
|||||||
end
|
end
|
||||||
object h2pasOptionsTabSheet: TTabSheet
|
object h2pasOptionsTabSheet: TTabSheet
|
||||||
Caption = 'h2pasOptionsTabSheet'
|
Caption = 'h2pasOptionsTabSheet'
|
||||||
|
ClientHeight = 471
|
||||||
|
ClientWidth = 781
|
||||||
object LibNameLabel: TLabel
|
object LibNameLabel: TLabel
|
||||||
AnchorSideTop.Control = LibnameEdit
|
AnchorSideTop.Control = LibnameEdit
|
||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
@ -213,7 +224,6 @@ object H2PasDialog: TH2PasDialog
|
|||||||
Width = 105
|
Width = 105
|
||||||
BorderSpacing.Top = 10
|
BorderSpacing.Top = 10
|
||||||
Caption = 'LibNameLabel'
|
Caption = 'LibNameLabel'
|
||||||
Color = clNone
|
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object OutputExtLabel: TLabel
|
object OutputExtLabel: TLabel
|
||||||
@ -224,7 +234,6 @@ object H2PasDialog: TH2PasDialog
|
|||||||
Top = 311
|
Top = 311
|
||||||
Width = 114
|
Width = 114
|
||||||
Caption = 'OutputExtLabel'
|
Caption = 'OutputExtLabel'
|
||||||
Color = clNone
|
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object OutputDirLabel: TLabel
|
object OutputDirLabel: TLabel
|
||||||
@ -235,7 +244,6 @@ object H2PasDialog: TH2PasDialog
|
|||||||
Top = 340
|
Top = 340
|
||||||
Width = 110
|
Width = 110
|
||||||
Caption = 'OutputDirLabel'
|
Caption = 'OutputDirLabel'
|
||||||
Color = clNone
|
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object LibnameEdit: TEdit
|
object LibnameEdit: TEdit
|
||||||
@ -319,8 +327,10 @@ object H2PasDialog: TH2PasDialog
|
|||||||
end
|
end
|
||||||
object PostH2PasTabSheet: TTabSheet
|
object PostH2PasTabSheet: TTabSheet
|
||||||
Caption = 'PostH2PasTabSheet'
|
Caption = 'PostH2PasTabSheet'
|
||||||
|
ClientHeight = 471
|
||||||
|
ClientWidth = 781
|
||||||
object PostH2PasGroupBox: TGroupBox
|
object PostH2PasGroupBox: TGroupBox
|
||||||
Height = 475
|
Height = 471
|
||||||
Width = 781
|
Width = 781
|
||||||
Align = alClient
|
Align = alClient
|
||||||
Caption = 'PostH2PasGroupBox'
|
Caption = 'PostH2PasGroupBox'
|
||||||
@ -329,6 +339,8 @@ object H2PasDialog: TH2PasDialog
|
|||||||
end
|
end
|
||||||
object SettingsTabSheet: TTabSheet
|
object SettingsTabSheet: TTabSheet
|
||||||
Caption = 'SettingsTabSheet'
|
Caption = 'SettingsTabSheet'
|
||||||
|
ClientHeight = 471
|
||||||
|
ClientWidth = 781
|
||||||
object H2PasFilenameLabel: TLabel
|
object H2PasFilenameLabel: TLabel
|
||||||
AnchorSideTop.Control = H2PasFilenameEdit
|
AnchorSideTop.Control = H2PasFilenameEdit
|
||||||
AnchorSideTop.Side = asrCenter
|
AnchorSideTop.Side = asrCenter
|
||||||
@ -337,7 +349,6 @@ object H2PasDialog: TH2PasDialog
|
|||||||
Top = 7
|
Top = 7
|
||||||
Width = 155
|
Width = 155
|
||||||
Caption = 'H2PasFilenameLabel'
|
Caption = 'H2PasFilenameLabel'
|
||||||
Color = clNone
|
|
||||||
ParentColor = False
|
ParentColor = False
|
||||||
end
|
end
|
||||||
object OpenLastProjectOnStartCheckBox: TCheckBox
|
object OpenLastProjectOnStartCheckBox: TCheckBox
|
||||||
@ -407,9 +418,9 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideBottom.Control = Owner
|
AnchorSideBottom.Control = Owner
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 5
|
Left = 5
|
||||||
Height = 30
|
Height = 37
|
||||||
Top = 514
|
Top = 507
|
||||||
Width = 161
|
Width = 150
|
||||||
Anchors = [akLeft, akBottom]
|
Anchors = [akLeft, akBottom]
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 5
|
BorderSpacing.Around = 5
|
||||||
@ -423,10 +434,10 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideBottom.Control = Owner
|
AnchorSideBottom.Control = Owner
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 171
|
Left = 160
|
||||||
Height = 30
|
Height = 37
|
||||||
Top = 514
|
Top = 507
|
||||||
Width = 158
|
Width = 148
|
||||||
Anchors = [akLeft, akBottom]
|
Anchors = [akLeft, akBottom]
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 5
|
BorderSpacing.Around = 5
|
||||||
@ -439,10 +450,10 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideLeft.Control = SaveSettingsButton
|
AnchorSideLeft.Control = SaveSettingsButton
|
||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideTop.Control = OpenSettingsButton
|
AnchorSideTop.Control = OpenSettingsButton
|
||||||
Left = 344
|
Left = 323
|
||||||
Height = 30
|
Height = 37
|
||||||
Top = 514
|
Top = 507
|
||||||
Width = 119
|
Width = 113
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Left = 15
|
BorderSpacing.Left = 15
|
||||||
BorderSpacing.InnerBorder = 4
|
BorderSpacing.InnerBorder = 4
|
||||||
@ -455,10 +466,10 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideRight.Side = asrBottom
|
AnchorSideRight.Side = asrBottom
|
||||||
AnchorSideBottom.Control = Owner
|
AnchorSideBottom.Control = Owner
|
||||||
AnchorSideBottom.Side = asrBottom
|
AnchorSideBottom.Side = asrBottom
|
||||||
Left = 677
|
Left = 682
|
||||||
Height = 30
|
Height = 37
|
||||||
Top = 514
|
Top = 507
|
||||||
Width = 103
|
Width = 98
|
||||||
Anchors = [akRight, akBottom]
|
Anchors = [akRight, akBottom]
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Around = 5
|
BorderSpacing.Around = 5
|
||||||
@ -471,10 +482,10 @@ object H2PasDialog: TH2PasDialog
|
|||||||
AnchorSideLeft.Control = ConvertButton
|
AnchorSideLeft.Control = ConvertButton
|
||||||
AnchorSideLeft.Side = asrBottom
|
AnchorSideLeft.Side = asrBottom
|
||||||
AnchorSideTop.Control = OpenSettingsButton
|
AnchorSideTop.Control = OpenSettingsButton
|
||||||
Left = 469
|
Left = 442
|
||||||
Height = 30
|
Height = 37
|
||||||
Top = 514
|
Top = 507
|
||||||
Width = 183
|
Width = 169
|
||||||
AutoSize = True
|
AutoSize = True
|
||||||
BorderSpacing.Left = 6
|
BorderSpacing.Left = 6
|
||||||
BorderSpacing.InnerBorder = 4
|
BorderSpacing.InnerBorder = 4
|
||||||
|
@ -4,193 +4,197 @@ LazarusResources.Add('TH2PasDialog','FORMDATA',[
|
|||||||
'TPF0'#12'TH2PasDialog'#11'H2PasDialog'#4'Left'#3#245#0#6'Height'#3'%'#2#3'To'
|
'TPF0'#12'TH2PasDialog'#11'H2PasDialog'#4'Left'#3#245#0#6'Height'#3'%'#2#3'To'
|
||||||
+'p'#3#205#0#5'Width'#3#17#3#18'HorzScrollBar.Page'#3#16#3#18'VertScrollBar.P'
|
+'p'#3#205#0#5'Width'#3#17#3#18'HorzScrollBar.Page'#3#16#3#18'VertScrollBar.P'
|
||||||
+'age'#3'$'#2#13'ActiveControl'#7#13'ConvertButton'#7'Caption'#6#11'H2PasDial'
|
+'age'#3'$'#2#13'ActiveControl'#7#13'ConvertButton'#7'Caption'#6#11'H2PasDial'
|
||||||
+'og'#10'KeyPreview'#9#12'OnCloseQuery'#7#14'FormCloseQuery'#8'OnCreate'#7#10
|
+'og'#12'ClientHeight'#3'%'#2#11'ClientWidth'#3#17#3#10'KeyPreview'#9#12'OnCl'
|
||||||
+'FormCreate'#9'OnDestroy'#7#11'FormDestroy'#9'OnKeyDown'#7#11'FormKeyDown'#8
|
+'oseQuery'#7#14'FormCloseQuery'#8'OnCreate'#7#10'FormCreate'#9'OnDestroy'#7
|
||||||
+'Position'#7#15'poDesktopCenter'#0#12'TPageControl'#15'MainPageControl'#24'A'
|
+#11'FormDestroy'#9'OnKeyDown'#7#11'FormKeyDown'#8'Position'#7#15'poDesktopCe'
|
||||||
+'nchorSideBottom.Control'#7#18'OpenSettingsButton'#6'Height'#3#253#1#5'Width'
|
+'nter'#0#12'TPageControl'#15'MainPageControl'#24'AnchorSideBottom.Control'#7
|
||||||
+#3#17#3#10'ActivePage'#7#13'FilesTabSheet'#5'Align'#7#5'alTop'#7'Anchors'#11
|
+#18'OpenSettingsButton'#6'Height'#3#246#1#5'Width'#3#17#3#10'ActivePage'#7#13
|
||||||
+#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#8'TabIndex'#2#0#8'TabOrder'#2#4
|
+'FilesTabSheet'#5'Align'#7#5'alTop'#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRig'
|
||||||
+#0#9'TTabSheet'#13'FilesTabSheet'#7'Caption'#6#13'FilesTabSheet'#0#9'TTreeVi'
|
+'ht'#8'akBottom'#0#8'TabIndex'#2#0#8'TabOrder'#2#4#0#9'TTabSheet'#13'FilesTa'
|
||||||
+'ew'#25'CHeaderFilesCheckTreeView'#6'Height'#3#219#1#5'Width'#3#255#0#5'Alig'
|
+'bSheet'#7'Caption'#6#13'FilesTabSheet'#12'ClientHeight'#3#215#1#11'ClientWi'
|
||||||
+'n'#7#6'alLeft'#17'DefaultItemHeight'#2#18#11'StateImages'#7#18'FileStateIma'
|
+'dth'#3#13#3#0#9'TTreeView'#25'CHeaderFilesCheckTreeView'#6'Height'#3#215#1#5
|
||||||
+'geList'#8'TabOrder'#2#0#10'OnDblClick'#7'!CHeaderFilesCheckTreeViewDblClick'
|
+'Width'#3#255#0#5'Align'#7#6'alLeft'#17'DefaultItemHeight'#2#19#11'StateImag'
|
||||||
+#11'OnMouseDown'#7'"CHeaderFilesCheckTreeViewMouseDown'#18'OnSelectionChange'
|
+'es'#7#18'FileStateImageList'#8'TabOrder'#2#0#10'OnDblClick'#7'!CHeaderFiles'
|
||||||
+'d'#7')CHeaderFilesCheckTreeViewSelectionChanged'#7'Options'#11#19'tvoAllowM'
|
+'CheckTreeViewDblClick'#11'OnMouseDown'#7'"CHeaderFilesCheckTreeViewMouseDow'
|
||||||
+'ultiselect'#17'tvoAutoItemHeight'#16'tvoHideSelection'#21'tvoKeepCollapsedN'
|
+'n'#18'OnSelectionChanged'#7')CHeaderFilesCheckTreeViewSelectionChanged'#7'O'
|
||||||
+'odes'#14'tvoShowButtons'#12'tvoShowLines'#11'tvoShowRoot'#11'tvoToolTips'#0
|
+'ptions'#11#19'tvoAllowMultiselect'#17'tvoAutoItemHeight'#16'tvoHideSelectio'
|
||||||
+#0#0#7'TButton'#17'AddCHeadersButton'#22'AnchorSideLeft.Control'#7#21'CHeade'
|
+'n'#21'tvoKeepCollapsedNodes'#14'tvoShowButtons'#12'tvoShowLines'#11'tvoShow'
|
||||||
+'rFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'He'
|
+'Root'#11'tvoToolTips'#0#0#0#7'TButton'#17'AddCHeadersButton'#22'AnchorSideL'
|
||||||
+'ight'#2#25#3'Top'#2#12#5'Width'#3#185#0#18'BorderSpacing.Left'#2#6#25'Borde'
|
+'eft.Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBot'
|
||||||
+'rSpacing.InnerBorder'#2#4#7'Caption'#6#17'AddCHeadersButton'#7'OnClick'#7#22
|
+'tom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#2#12#5'Width'#3#185#0#18'BorderSp'
|
||||||
+'AddCHeadersButtonClick'#8'TabOrder'#2#1#0#0#7'TButton'#20'DeleteCHeadersBut'
|
+'acing.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#17'AddCHeade'
|
||||||
+'ton'#22'AnchorSideLeft.Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSideLe'
|
+'rsButton'#7'OnClick'#7#22'AddCHeadersButtonClick'#8'TabOrder'#2#1#0#0#7'TBu'
|
||||||
+'ft.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#2'('#5'Width'#3
|
+'tton'#20'DeleteCHeadersButton'#22'AnchorSideLeft.Control'#7#21'CHeaderFiles'
|
||||||
+#185#0#18'BorderSpacing.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Captio'
|
+'Splitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'Height'#2
|
||||||
+'n'#6#20'DeleteCHeadersButton'#7'OnClick'#7#25'DeleteCHeadersButtonClick'#8
|
+#25#3'Top'#2'('#5'Width'#3#185#0#18'BorderSpacing.Left'#2#6#25'BorderSpacing'
|
||||||
+'TabOrder'#2#2#0#0#7'TButton'#23'EnableAllCHeadersButton'#22'AnchorSideLeft.'
|
+'.InnerBorder'#2#4#7'Caption'#6#20'DeleteCHeadersButton'#7'OnClick'#7#25'Del'
|
||||||
+'Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'
|
+'eteCHeadersButtonClick'#8'TabOrder'#2#2#0#0#7'TButton'#23'EnableAllCHeaders'
|
||||||
+#4'Left'#3#10#1#6'Height'#2#25#3'Top'#2'H'#5'Width'#3#185#0#18'BorderSpacing'
|
+'Button'#22'AnchorSideLeft.Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSid'
|
||||||
+'.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#23'EnableAllCHead'
|
+'eLeft.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#2'H'#5'Widt'
|
||||||
+'ersButton'#7'OnClick'#7#28'EnableAllCHeadersButtonClick'#8'TabOrder'#2#3#0#0
|
+'h'#3#185#0#18'BorderSpacing.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'C'
|
||||||
+#7'TButton'#24'DisableAllCHeadersButton'#22'AnchorSideLeft.Control'#7#21'CHe'
|
+'aption'#6#23'EnableAllCHeadersButton'#7'OnClick'#7#28'EnableAllCHeadersButt'
|
||||||
+'aderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#10#1#6
|
+'onClick'#8'TabOrder'#2#3#0#0#7'TButton'#24'DisableAllCHeadersButton'#22'Anc'
|
||||||
+'Height'#2#25#3'Top'#2'h'#5'Width'#3#185#0#18'BorderSpacing.Left'#2#6#25'Bor'
|
+'horSideLeft.Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9
|
||||||
+'derSpacing.InnerBorder'#2#4#7'Caption'#6#24'DisableAllCHeadersButton'#7'OnC'
|
+'asrBottom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#2'h'#5'Width'#3#185#0#18'Bo'
|
||||||
+'lick'#7#29'DisableAllCHeadersButtonClick'#8'TabOrder'#2#4#0#0#9'TSplitter'
|
+'rderSpacing.Left'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#24'Dis'
|
||||||
+#21'CHeaderFilesSplitter1'#4'Left'#3#255#0#6'Height'#3#219#1#5'Width'#2#5#7
|
+'ableAllCHeadersButton'#7'OnClick'#7#29'DisableAllCHeadersButtonClick'#8'Tab'
|
||||||
+'Beveled'#9#0#0#9'TGroupBox'#16'FileInfoGroupBox'#22'AnchorSideLeft.Control'
|
+'Order'#2#4#0#0#9'TSplitter'#21'CHeaderFilesSplitter1'#4'Left'#3#255#0#6'Hei'
|
||||||
+#7#21'CHeaderFilesSplitter1'#19'AnchorSideLeft.Side'#7#9'asrBottom'#23'Ancho'
|
+'ght'#3#215#1#5'Width'#2#5#7'Beveled'#9#0#0#9'TGroupBox'#16'FileInfoGroupBox'
|
||||||
+'rSideRight.Control'#7#13'FilesTabSheet'#20'AnchorSideRight.Side'#7#9'asrBot'
|
+#22'AnchorSideLeft.Control'#7#21'CHeaderFilesSplitter1'#19'AnchorSideLeft.Si'
|
||||||
+'tom'#24'AnchorSideBottom.Control'#7#13'FilesTabSheet'#21'AnchorSideBottom.S'
|
+'de'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#13'FilesTabSheet'#20'Ancho'
|
||||||
+'ide'#7#9'asrBottom'#4'Left'#3#4#1#6'Height'#3#11#1#3'Top'#3#208#0#5'Width'#3
|
+'rSideRight.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#13'FilesTabS'
|
||||||
+#9#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#7'Caption'#6
|
+'heet'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#4#1#6'Height'#3#7#1
|
||||||
+#16'FileInfoGroupBox'#8'TabOrder'#2#5#0#7'TButton'#29'AddIncludedCHeaderFile'
|
+#3'Top'#3#208#0#5'Width'#3#9#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8
|
||||||
+'sButton'#24'AnchorSideBottom.Control'#7#16'FileInfoGroupBox'#21'AnchorSideB'
|
+'akBottom'#0#7'Caption'#6#16'FileInfoGroupBox'#12'ClientHeight'#3#244#0#11'C'
|
||||||
+'ottom.Side'#7#9'asrBottom'#4'Left'#2#8#6'Height'#2#30#3'Top'#3#210#0#5'Widt'
|
+'lientWidth'#3#5#2#8'TabOrder'#2#5#0#7'TButton'#29'AddIncludedCHeaderFilesBu'
|
||||||
+'h'#3#249#0#7'Anchors'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpa'
|
+'tton'#24'AnchorSideBottom.Control'#7#16'FileInfoGroupBox'#21'AnchorSideBott'
|
||||||
+'cing.Around'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#29'AddInclu'
|
+'om.Side'#7#9'asrBottom'#4'Left'#2#8#6'Height'#2'%'#3'Top'#3#201#0#5'Width'#3
|
||||||
+'dedCHeaderFilesButton'#7'OnClick'#7'"AddIncludedCHeaderFilesButtonClick'#8
|
+#224#0#7'Anchors'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpacing.'
|
||||||
+'TabOrder'#2#0#0#0#5'TMemo'#12'FileInfoMemo'#22'AnchorSideLeft.Control'#7#16
|
+'Around'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#29'AddIncludedCH'
|
||||||
+'FileInfoGroupBox'#21'AnchorSideTop.Control'#7#17'MergeFileCheckBox'#18'Anch'
|
+'eaderFilesButton'#7'OnClick'#7'"AddIncludedCHeaderFilesButtonClick'#8'TabOr'
|
||||||
+'orSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#16'FileInfoGro'
|
+'der'#2#0#0#0#5'TMemo'#12'FileInfoMemo'#22'AnchorSideLeft.Control'#7#16'File'
|
||||||
+'upBox'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'
|
+'InfoGroupBox'#21'AnchorSideTop.Control'#7#17'MergeFileCheckBox'#18'AnchorSi'
|
||||||
+#7#29'AddIncludedCHeaderFilesButton'#6'Height'#3#183#0#3'Top'#2#21#5'Width'#3
|
+'deTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#16'FileInfoGroupBo'
|
||||||
+#5#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#5'Color'#7#6
|
+'x'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#29
|
||||||
+'clNone'#8'ReadOnly'#9#8'TabOrder'#2#1#0#0#9'TCheckBox'#17'MergeFileCheckBox'
|
+'AddIncludedCHeaderFilesButton'#6'Height'#3#176#0#3'Top'#2#19#5'Width'#3#5#2
|
||||||
+#4'Left'#2#8#6'Height'#2#24#3'Top'#2#253#5'Width'#3#168#0#7'Caption'#6#17'Me'
|
+#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#5'Color'#7#6'clNo'
|
||||||
+'rgeFileCheckBox'#8'TabOrder'#2#2#0#0#0#7'TButton'#16'MoveFileUpButton'#22'A'
|
+'ne'#8'ReadOnly'#9#8'TabOrder'#2#1#0#0#9'TCheckBox'#17'MergeFileCheckBox'#4
|
||||||
+'nchorSideLeft.Control'#7#17'AddCHeadersButton'#21'AnchorSideTop.Control'#7
|
+'Left'#2#8#6'Height'#2#22#3'Top'#2#253#5'Width'#3#146#0#7'Caption'#6#17'Merg'
|
||||||
+#24'DisableAllCHeadersButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'Ancho'
|
+'eFileCheckBox'#13'OnEditingDone'#7#28'MergeFileCheckBoxEditingDone'#8'TabOr'
|
||||||
+'rSideRight.Control'#7#17'AddCHeadersButton'#20'AnchorSideRight.Side'#7#9'as'
|
+'der'#2#2#0#0#0#7'TButton'#16'MoveFileUpButton'#22'AnchorSideLeft.Control'#7
|
||||||
+'rBottom'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#3#135#0#5'Width'#3#185#0#7'An'
|
+#17'AddCHeadersButton'#21'AnchorSideTop.Control'#7#24'DisableAllCHeadersButt'
|
||||||
+'chors'#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#25'Bord'
|
+'on'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#17
|
||||||
+'erSpacing.InnerBorder'#2#4#7'Caption'#6#16'MoveFileUpButton'#7'OnClick'#7#21
|
+'AddCHeadersButton'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#10#1#6
|
||||||
,'MoveFileUpButtonClick'#8'TabOrder'#2#6#0#0#7'TButton'#18'MoveFileDownButton'
|
,'Height'#2#25#3'Top'#3#135#0#5'Width'#3#185#0#7'Anchors'#11#5'akTop'#6'akLef'
|
||||||
+#22'AnchorSideLeft.Control'#7#17'AddCHeadersButton'#21'AnchorSideTop.Control'
|
+'t'#7'akRight'#0#17'BorderSpacing.Top'#2#6#25'BorderSpacing.InnerBorder'#2#4
|
||||||
+#7#16'MoveFileUpButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideR'
|
+#7'Caption'#6#16'MoveFileUpButton'#7'OnClick'#7#21'MoveFileUpButtonClick'#8
|
||||||
+'ight.Control'#7#17'AddCHeadersButton'#20'AnchorSideRight.Side'#7#9'asrBotto'
|
+'TabOrder'#2#6#0#0#7'TButton'#18'MoveFileDownButton'#22'AnchorSideLeft.Contr'
|
||||||
+'m'#4'Left'#3#10#1#6'Height'#2#25#3'Top'#3#166#0#5'Width'#3#185#0#7'Anchors'
|
+'ol'#7#17'AddCHeadersButton'#21'AnchorSideTop.Control'#7#16'MoveFileUpButton'
|
||||||
+#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#6#25'BorderSpaci'
|
+#18'AnchorSideTop.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#17'AddC'
|
||||||
+'ng.InnerBorder'#2#4#7'Caption'#6#18'MoveFileDownButton'#7'OnClick'#7#23'Mov'
|
+'HeadersButton'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3#10#1#6'Hei'
|
||||||
+'eFileDownButtonClick'#8'TabOrder'#2#7#0#0#7'TButton#MergeAllCHeadersExceptC'
|
+'ght'#2#25#3'Top'#3#166#0#5'Width'#3#185#0#7'Anchors'#11#5'akTop'#6'akLeft'#7
|
||||||
+'urrentButton'#4'Left'#3#230#1#6'Height'#2#25#3'Top'#2#12#5'Width'#3#184#0#25
|
+'akRight'#0#17'BorderSpacing.Top'#2#6#25'BorderSpacing.InnerBorder'#2#4#7'Ca'
|
||||||
+'BorderSpacing.InnerBorder'#2#4#7'Caption'#6'#MergeAllCHeadersExceptCurrentB'
|
+'ption'#6#18'MoveFileDownButton'#7'OnClick'#7#23'MoveFileDownButtonClick'#8
|
||||||
+'utton'#7'OnClick'#7'(MergeAllCHeadersExceptCurrentButtonClick'#8'TabOrder'#2
|
+'TabOrder'#2#7#0#0#7'TButton#MergeAllCHeadersExceptCurrentButton'#4'Left'#3
|
||||||
+#8#0#0#0#9'TTabSheet'#16'PreH2PasTabSheet'#7'Caption'#6#16'PreH2PasTabSheet'
|
+#230#1#6'Height'#2#25#3'Top'#2#12#5'Width'#3#184#0#25'BorderSpacing.InnerBor'
|
||||||
+#0#9'TGroupBox'#16'PreH2PasGroupBox'#6'Height'#3#219#1#5'Width'#3#13#3#5'Ali'
|
+'der'#2#4#7'Caption'#6'#MergeAllCHeadersExceptCurrentButton'#7'OnClick'#7'(M'
|
||||||
+'gn'#7#8'alClient'#7'Caption'#6#16'PreH2PasGroupBox'#8'TabOrder'#2#0#0#0#0#9
|
+'ergeAllCHeadersExceptCurrentButtonClick'#8'TabOrder'#2#8#0#0#0#9'TTabSheet'
|
||||||
+'TTabSheet'#20'h2pasOptionsTabSheet'#7'Caption'#6#20'h2pasOptionsTabSheet'#0
|
+#16'PreH2PasTabSheet'#7'Caption'#6#16'PreH2PasTabSheet'#12'ClientHeight'#3
|
||||||
+#6'TLabel'#12'LibNameLabel'#21'AnchorSideTop.Control'#7#11'LibnameEdit'#18'A'
|
+#215#1#11'ClientWidth'#3#13#3#0#9'TGroupBox'#16'PreH2PasGroupBox'#6'Height'#3
|
||||||
+'nchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#17#3'Top'#3#23#1#5
|
+#215#1#5'Width'#3#13#3#5'Align'#7#8'alClient'#7'Caption'#6#16'PreH2PasGroupB'
|
||||||
+'Width'#2'i'#17'BorderSpacing.Top'#2#10#7'Caption'#6#12'LibNameLabel'#5'Colo'
|
+'ox'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#20'h2pasOptionsTabSheet'#7'Caption'#6
|
||||||
+'r'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#14'OutputExtLabel'#21'Anchor'
|
+#20'h2pasOptionsTabSheet'#12'ClientHeight'#3#215#1#11'ClientWidth'#3#13#3#0#6
|
||||||
+'SideTop.Control'#7#13'OutputExtEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4
|
+'TLabel'#12'LibNameLabel'#21'AnchorSideTop.Control'#7#11'LibnameEdit'#18'Anc'
|
||||||
+'Left'#2#6#6'Height'#2#17#3'Top'#3'7'#1#5'Width'#2'r'#7'Caption'#6#14'Output'
|
+'horSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#17#3'Top'#3#23#1#5
|
||||||
+'ExtLabel'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#6'TLabel'#14'OutputDir'
|
+'Width'#2'i'#17'BorderSpacing.Top'#2#10#7'Caption'#6#12'LibNameLabel'#11'Par'
|
||||||
+'Label'#21'AnchorSideTop.Control'#7#13'OutputDirEdit'#18'AnchorSideTop.Side'
|
+'entColor'#8#0#0#6'TLabel'#14'OutputExtLabel'#21'AnchorSideTop.Control'#7#13
|
||||||
+#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#17#3'Top'#3'T'#1#5'Width'#2'n'#7'Cap'
|
+'OutputExtEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2
|
||||||
+'tion'#6#14'OutputDirLabel'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#5'TEd'
|
+#17#3'Top'#3'7'#1#5'Width'#2'r'#7'Caption'#6#14'OutputExtLabel'#11'ParentCol'
|
||||||
+'it'#11'LibnameEdit'#22'AnchorSideLeft.Control'#7#12'LibNameLabel'#19'Anchor'
|
+'or'#8#0#0#6'TLabel'#14'OutputDirLabel'#21'AnchorSideTop.Control'#7#13'Outpu'
|
||||||
+'SideLeft.Side'#7#9'asrBottom'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'
|
+'tDirEdit'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#17#3
|
||||||
+#2'u'#6'Height'#2#23#3'Top'#3#20#1#5'Width'#2'q'#18'BorderSpacing.Left'#2#6
|
+'Top'#3'T'#1#5'Width'#2'n'#7'Caption'#6#14'OutputDirLabel'#11'ParentColor'#8
|
||||||
+#17'BorderSpacing.Top'#2#6#13'OnEditingDone'#7#22'LibnameEditEditingDone'#8
|
+#0#0#5'TEdit'#11'LibnameEdit'#22'AnchorSideLeft.Control'#7#12'LibNameLabel'
|
||||||
+'TabOrder'#2#0#4'Text'#6#11'LibnameEdit'#0#0#5'TEdit'#13'OutputExtEdit'#22'A'
|
+#19'AnchorSideLeft.Side'#7#9'asrBottom'#18'AnchorSideTop.Side'#7#9'asrBottom'
|
||||||
+'nchorSideLeft.Control'#7#14'OutputExtLabel'#19'AnchorSideLeft.Side'#7#9'asr'
|
+#4'Left'#2'u'#6'Height'#2#23#3'Top'#3#20#1#5'Width'#2'q'#18'BorderSpacing.Le'
|
||||||
+'Bottom'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2'~'#6'Height'#2#23#3
|
+'ft'#2#6#17'BorderSpacing.Top'#2#6#13'OnEditingDone'#7#22'LibnameEditEditing'
|
||||||
+'Top'#3'4'#1#5'Width'#2'P'#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'#2
|
+'Done'#8'TabOrder'#2#0#4'Text'#6#11'LibnameEdit'#0#0#5'TEdit'#13'OutputExtEd'
|
||||||
+#6#13'OnEditingDone'#7#24'OutputExtEditEditingDone'#8'TabOrder'#2#1#4'Text'#6
|
+'it'#22'AnchorSideLeft.Control'#7#14'OutputExtLabel'#19'AnchorSideLeft.Side'
|
||||||
+#13'OutputExtEdit'#0#0#5'TEdit'#13'OutputDirEdit'#22'AnchorSideLeft.Control'
|
+#7#9'asrBottom'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2'~'#6'Height'
|
||||||
+#7#14'OutputDirLabel'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTo'
|
+#2#23#3'Top'#3'4'#1#5'Width'#2'P'#18'BorderSpacing.Left'#2#6#17'BorderSpacin'
|
||||||
+'p.Control'#7#13'OutputExtEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'
|
+'g.Top'#2#6#13'OnEditingDone'#7#24'OutputExtEditEditingDone'#8'TabOrder'#2#1
|
||||||
+#2'z'#6'Height'#2#23#3'Top'#3'Q'#1#5'Width'#3#141#1#18'BorderSpacing.Left'#2
|
+#4'Text'#6#13'OutputExtEdit'#0#0#5'TEdit'#13'OutputDirEdit'#22'AnchorSideLef'
|
||||||
+#6#17'BorderSpacing.Top'#2#6#13'OnEditingDone'#7#24'OutputDirEditEditingDone'
|
+'t.Control'#7#14'OutputDirLabel'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'A'
|
||||||
+#8'TabOrder'#2#2#4'Text'#6#13'OutputDirEdit'#0#0#7'TButton'#21'OutputDirBrow'
|
+'nchorSideTop.Control'#7#13'OutputExtEdit'#18'AnchorSideTop.Side'#7#9'asrBot'
|
||||||
+'seButton'#22'AnchorSideLeft.Control'#7#13'OutputDirEdit'#19'AnchorSideLeft.'
|
+'tom'#4'Left'#2'z'#6'Height'#2#23#3'Top'#3'Q'#1#5'Width'#3#141#1#18'BorderSp'
|
||||||
+'Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#13'OutputDirEdit'#24'Ancho'
|
+'acing.Left'#2#6#17'BorderSpacing.Top'#2#6#13'OnEditingDone'#7#24'OutputDirE'
|
||||||
+'rSideBottom.Control'#7#13'OutputDirEdit'#21'AnchorSideBottom.Side'#7#9'asrB'
|
+'ditEditingDone'#8'TabOrder'#2#2#4'Text'#6#13'OutputDirEdit'#0#0#7'TButton'
|
||||||
+'ottom'#4'Left'#3#7#2#6'Height'#2#23#3'Top'#3'Q'#1#5'Width'#2' '#7'Anchors'
|
+#21'OutputDirBrowseButton'#22'AnchorSideLeft.Control'#7#13'OutputDirEdit'#19
|
||||||
+#11#5'akTop'#6'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#4#7'Cap'
|
+'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#13'OutputDi'
|
||||||
+'tion'#6#3'...'#7'OnClick'#7#26'OutputDirBrowseButtonClick'#8'TabOrder'#2#3#0
|
+'rEdit'#24'AnchorSideBottom.Control'#7#13'OutputDirEdit'#21'AnchorSideBottom'
|
||||||
+#0#11'TCheckGroup'#22'h2pasOptionsCheckGroup'#4'Left'#2#6#6'Height'#3#8#1#3
|
+'.Side'#7#9'asrBottom'#4'Left'#3#7#2#6'Height'#2#23#3'Top'#3'Q'#1#5'Width'#2
|
||||||
+'Top'#2#4#5'Width'#3#0#3#8'AutoFill'#9#7'Caption'#6#22'h2pasOptionsCheckGrou'
|
+' '#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBor'
|
||||||
+'p'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopBottomSpacing'#2#6
|
+'der'#2#4#7'Caption'#6#3'...'#7'OnClick'#7#26'OutputDirBrowseButtonClick'#8
|
||||||
+#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChildResize'#27'ChildSi'
|
+'TabOrder'#2#3#0#0#11'TCheckGroup'#22'h2pasOptionsCheckGroup'#4'Left'#2#6#6
|
||||||
+'zing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'ChildSizing.ShrinkH'
|
+'Height'#3#8#1#3'Top'#2#4#5'Width'#3#0#3#8'AutoFill'#9#7'Caption'#6#22'h2pas'
|
||||||
+'orizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVertical'#7#14'crsScal'
|
+'OptionsCheckGroup'#28'ChildSizing.LeftRightSpacing'#2#6#28'ChildSizing.TopB'
|
||||||
+'eChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTopToBottom'#27'Chil'
|
+'ottomSpacing'#2#6#29'ChildSizing.EnlargeHorizontal'#7#24'crsHomogenousChild'
|
||||||
+'dSizing.ControlsPerLine'#2#2#7'Columns'#2#2#11'OnItemClick'#7#31'h2pasOptio'
|
+'Resize'#27'ChildSizing.EnlargeVertical'#7#24'crsHomogenousChildResize'#28'C'
|
||||||
+'nsCheckGroupItemClick'#8'TabOrder'#2#4#0#0#0#9'TTabSheet'#17'PostH2PasTabSh'
|
+'hildSizing.ShrinkHorizontal'#7#14'crsScaleChilds'#26'ChildSizing.ShrinkVert'
|
||||||
+'eet'#7'Caption'#6#17'PostH2PasTabSheet'#0#9'TGroupBox'#17'PostH2PasGroupBox'
|
+'ical'#7#14'crsScaleChilds'#18'ChildSizing.Layout'#7#29'cclLeftToRightThenTo'
|
||||||
+#6'Height'#3#219#1#5'Width'#3#13#3#5'Align'#7#8'alClient'#7'Caption'#6#17'Po'
|
+'pToBottom'#27'ChildSizing.ControlsPerLine'#2#2#7'Columns'#2#2#11'OnItemClic'
|
||||||
+'stH2PasGroupBox'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#16'SettingsTabSheet'#7
|
+'k'#7#31'h2pasOptionsCheckGroupItemClick'#8'TabOrder'#2#4#0#0#0#9'TTabSheet'
|
||||||
+'Caption'#6#16'SettingsTabSheet'#0#6'TLabel'#18'H2PasFilenameLabel'#21'Ancho'
|
+#17'PostH2PasTabSheet'#7'Caption'#6#17'PostH2PasTabSheet'#12'ClientHeight'#3
|
||||||
+'rSideTop.Control'#7#17'H2PasFilenameEdit'#18'AnchorSideTop.Side'#7#9'asrCen'
|
+#215#1#11'ClientWidth'#3#13#3#0#9'TGroupBox'#17'PostH2PasGroupBox'#6'Height'
|
||||||
+'ter'#4'Left'#2#6#6'Height'#2#17#3'Top'#2#7#5'Width'#3#155#0#7'Caption'#6#18
|
+#3#215#1#5'Width'#3#13#3#5'Align'#7#8'alClient'#7'Caption'#6#17'PostH2PasGro'
|
||||||
+'H2PasFilenameLabel'#5'Color'#7#6'clNone'#11'ParentColor'#8#0#0#9'TCheckBox'
|
+'upBox'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#16'SettingsTabSheet'#7'Caption'#6
|
||||||
+#30'OpenLastProjectOnStartCheckBox'#4'Left'#2#6#6'Height'#2#24#3'Top'#2'*'#5
|
+#16'SettingsTabSheet'#12'ClientHeight'#3#215#1#11'ClientWidth'#3#13#3#0#6'TL'
|
||||||
+'Width'#3#21#1#7'Caption'#6#30'OpenLastProjectOnStartCheckBox'#8'OnChange'#7
|
+'abel'#18'H2PasFilenameLabel'#21'AnchorSideTop.Control'#7#17'H2PasFilenameEd'
|
||||||
,'$OpenLastProjectOnStartCheckBoxChange'#8'TabOrder'#2#0#0#0#7'TButton'#20'Sa'
|
,'it'#18'AnchorSideTop.Side'#7#9'asrCenter'#4'Left'#2#6#6'Height'#2#17#3'Top'
|
||||||
+'veSettingsAsButton'#4'Left'#2#6#6'Height'#2#30#3'Top'#2'R'#5'Width'#3#177#0
|
+#2#7#5'Width'#3#155#0#7'Caption'#6#18'H2PasFilenameLabel'#11'ParentColor'#8#0
|
||||||
+#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#20'SaveSetting'
|
+#0#9'TCheckBox'#30'OpenLastProjectOnStartCheckBox'#4'Left'#2#6#6'Height'#2#24
|
||||||
+'sAsButton'#7'OnClick'#7#25'SaveSettingsAsButtonClick'#8'TabOrder'#2#1#0#0#5
|
+#3'Top'#2'*'#5'Width'#3#21#1#7'Caption'#6#30'OpenLastProjectOnStartCheckBox'
|
||||||
+'TEdit'#17'H2PasFilenameEdit'#22'AnchorSideLeft.Control'#7#18'H2PasFilenameL'
|
+#8'OnChange'#7'$OpenLastProjectOnStartCheckBoxChange'#8'TabOrder'#2#0#0#0#7
|
||||||
+'abel'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#167#0#6'Height'#2#23
|
+'TButton'#20'SaveSettingsAsButton'#4'Left'#2#6#6'Height'#2#30#3'Top'#2'R'#5
|
||||||
+#3'Top'#2#4#5'Width'#3'`'#1#18'BorderSpacing.Left'#2#6#17'BorderSpacing.Top'
|
+'Width'#3#177#0#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6
|
||||||
+#2#6#13'OnEditingDone'#7#28'H2PasFilenameEditEditingDone'#8'TabOrder'#2#2#4
|
+#20'SaveSettingsAsButton'#7'OnClick'#7#25'SaveSettingsAsButtonClick'#8'TabOr'
|
||||||
+'Text'#6#17'H2PasFilenameEdit'#0#0#7'TButton'#25'h2pasFilenameBrowseButton'
|
+'der'#2#1#0#0#5'TEdit'#17'H2PasFilenameEdit'#22'AnchorSideLeft.Control'#7#18
|
||||||
+#22'AnchorSideLeft.Control'#7#17'H2PasFilenameEdit'#19'AnchorSideLeft.Side'#7
|
+'H2PasFilenameLabel'#19'AnchorSideLeft.Side'#7#9'asrBottom'#4'Left'#3#167#0#6
|
||||||
+#9'asrBottom'#21'AnchorSideTop.Control'#7#17'H2PasFilenameEdit'#24'AnchorSid'
|
+'Height'#2#23#3'Top'#2#4#5'Width'#3'`'#1#18'BorderSpacing.Left'#2#6#17'Borde'
|
||||||
+'eBottom.Control'#7#17'H2PasFilenameEdit'#21'AnchorSideBottom.Side'#7#9'asrB'
|
+'rSpacing.Top'#2#6#13'OnEditingDone'#7#28'H2PasFilenameEditEditingDone'#8'Ta'
|
||||||
+'ottom'#4'Left'#3#7#2#6'Height'#2#23#3'Top'#2#4#5'Width'#2'#'#7'Anchors'#11#5
|
+'bOrder'#2#2#4'Text'#6#17'H2PasFilenameEdit'#0#0#7'TButton'#25'h2pasFilename'
|
||||||
+'akTop'#6'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBorder'#2#4#7'Caption'
|
+'BrowseButton'#22'AnchorSideLeft.Control'#7#17'H2PasFilenameEdit'#19'AnchorS'
|
||||||
+#6#3'...'#7'OnClick'#7#30'h2pasFilenameBrowseButtonClick'#8'TabOrder'#2#3#0#0
|
+'ideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7#17'H2PasFilenameEd'
|
||||||
+#7'TButton'#17'NewSettingsButton'#4'Left'#2#6#6'Height'#2#30#3'Top'#2'|'#5'W'
|
+'it'#24'AnchorSideBottom.Control'#7#17'H2PasFilenameEdit'#21'AnchorSideBotto'
|
||||||
+'idth'#3#154#0#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6
|
+'m.Side'#7#9'asrBottom'#4'Left'#3#7#2#6'Height'#2#23#3'Top'#2#4#5'Width'#2'#'
|
||||||
+#17'NewSettingsButton'#7'OnClick'#7#22'NewSettingsButtonClick'#8'TabOrder'#2
|
+#7'Anchors'#11#5'akTop'#6'akLeft'#8'akBottom'#0#25'BorderSpacing.InnerBorder'
|
||||||
+#4#0#0#0#0#7'TButton'#18'OpenSettingsButton'#22'AnchorSideLeft.Control'#7#5
|
+#2#4#7'Caption'#6#3'...'#7'OnClick'#7#30'h2pasFilenameBrowseButtonClick'#8'T'
|
||||||
+'Owner'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBottom.Side'#7#9
|
+'abOrder'#2#3#0#0#7'TButton'#17'NewSettingsButton'#4'Left'#2#6#6'Height'#2#30
|
||||||
+'asrBottom'#4'Left'#2#5#6'Height'#2#30#3'Top'#3#2#2#5'Width'#3#161#0#7'Ancho'
|
+#3'Top'#2'|'#5'Width'#3#154#0#8'AutoSize'#9#25'BorderSpacing.InnerBorder'#2#4
|
||||||
+'rs'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#5#25
|
+#7'Caption'#6#17'NewSettingsButton'#7'OnClick'#7#22'NewSettingsButtonClick'#8
|
||||||
+'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#18'OpenSettingsButton'#7'OnClic'
|
+'TabOrder'#2#4#0#0#0#0#7'TButton'#18'OpenSettingsButton'#22'AnchorSideLeft.C'
|
||||||
+'k'#7#23'OpenSettingsButtonClick'#8'TabOrder'#2#1#0#0#7'TButton'#18'SaveSett'
|
+'ontrol'#7#5'Owner'#24'AnchorSideBottom.Control'#7#5'Owner'#21'AnchorSideBot'
|
||||||
+'ingsButton'#22'AnchorSideLeft.Control'#7#18'OpenSettingsButton'#19'AnchorSi'
|
+'tom.Side'#7#9'asrBottom'#4'Left'#2#5#6'Height'#2'%'#3'Top'#3#251#1#5'Width'
|
||||||
+'deLeft.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7#5'Owner'#21'Anch'
|
+#3#150#0#7'Anchors'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpacin'
|
||||||
+'orSideBottom.Side'#7#9'asrBottom'#4'Left'#3#171#0#6'Height'#2#30#3'Top'#3#2
|
+'g.Around'#2#5#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#18'OpenSetting'
|
||||||
+#2#5'Width'#3#158#0#7'Anchors'#11#6'akLeft'#8'akBottom'#0#8'AutoSize'#9#20'B'
|
+'sButton'#7'OnClick'#7#23'OpenSettingsButtonClick'#8'TabOrder'#2#1#0#0#7'TBu'
|
||||||
+'orderSpacing.Around'#2#5#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#18
|
+'tton'#18'SaveSettingsButton'#22'AnchorSideLeft.Control'#7#18'OpenSettingsBu'
|
||||||
+'SaveSettingsButton'#7'OnClick'#7#23'SaveSettingsButtonClick'#8'TabOrder'#2#2
|
+'tton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7
|
||||||
+#0#0#7'TButton'#13'ConvertButton'#22'AnchorSideLeft.Control'#7#18'SaveSettin'
|
+#5'Owner'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#160#0#6'Height'
|
||||||
+'gsButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Control'#7
|
+#2'%'#3'Top'#3#251#1#5'Width'#3#148#0#7'Anchors'#11#6'akLeft'#8'akBottom'#0#8
|
||||||
+#18'OpenSettingsButton'#4'Left'#3'X'#1#6'Height'#2#30#3'Top'#3#2#2#5'Width'#2
|
+'AutoSize'#9#20'BorderSpacing.Around'#2#5#25'BorderSpacing.InnerBorder'#2#4#7
|
||||||
+'w'#8'AutoSize'#9#18'BorderSpacing.Left'#2#15#25'BorderSpacing.InnerBorder'#2
|
+'Caption'#6#18'SaveSettingsButton'#7'OnClick'#7#23'SaveSettingsButtonClick'#8
|
||||||
+#4#7'Caption'#6#13'ConvertButton'#7'OnClick'#7#18'ConvertButtonClick'#8'TabO'
|
+'TabOrder'#2#2#0#0#7'TButton'#13'ConvertButton'#22'AnchorSideLeft.Control'#7
|
||||||
+'rder'#2#0#0#0#7'TButton'#11'CloseButton'#23'AnchorSideRight.Control'#7#5'Ow'
|
+#18'SaveSettingsButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSide'
|
||||||
+'ner'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'AnchorSideBottom.Control'#7
|
+'Top.Control'#7#18'OpenSettingsButton'#4'Left'#3'C'#1#6'Height'#2'%'#3'Top'#3
|
||||||
+#5'Owner'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Left'#3#165#2#6'Height'
|
+#251#1#5'Width'#2'q'#8'AutoSize'#9#18'BorderSpacing.Left'#2#15#25'BorderSpac'
|
||||||
+#2#30#3'Top'#3#2#2#5'Width'#2'g'#7'Anchors'#11#7'akRight'#8'akBottom'#0#8'Au'
|
+'ing.InnerBorder'#2#4#7'Caption'#6#13'ConvertButton'#7'OnClick'#7#18'Convert'
|
||||||
+'toSize'#9#20'BorderSpacing.Around'#2#5#25'BorderSpacing.InnerBorder'#2#4#7
|
+'ButtonClick'#8'TabOrder'#2#0#0#0#7'TButton'#11'CloseButton'#23'AnchorSideRi'
|
||||||
+'Caption'#6#11'CloseButton'#7'OnClick'#7#16'CloseButtonClick'#8'TabOrder'#2#3
|
+'ght.Control'#7#5'Owner'#20'AnchorSideRight.Side'#7#9'asrBottom'#24'AnchorSi'
|
||||||
+#0#0#7'TButton'#21'ConvertAndBuildButton'#22'AnchorSideLeft.Control'#7#13'Co'
|
+'deBottom.Control'#7#5'Owner'#21'AnchorSideBottom.Side'#7#9'asrBottom'#4'Lef'
|
||||||
+'nvertButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Contro'
|
+'t'#3#170#2#6'Height'#2'%'#3'Top'#3#251#1#5'Width'#2'b'#7'Anchors'#11#7'akRi'
|
||||||
+'l'#7#18'OpenSettingsButton'#4'Left'#3#213#1#6'Height'#2#30#3'Top'#3#2#2#5'W'
|
+'ght'#8'akBottom'#0#8'AutoSize'#9#20'BorderSpacing.Around'#2#5#25'BorderSpac'
|
||||||
+'idth'#3#183#0#8'AutoSize'#9#18'BorderSpacing.Left'#2#6#25'BorderSpacing.Inn'
|
+'ing.InnerBorder'#2#4#7'Caption'#6#11'CloseButton'#7'OnClick'#7#16'CloseButt'
|
||||||
+'erBorder'#2#4#7'Caption'#6#21'ConvertAndBuildButton'#7'OnClick'#7#26'Conver'
|
+'onClick'#8'TabOrder'#2#3#0#0#7'TButton'#21'ConvertAndBuildButton'#22'Anchor'
|
||||||
+'tAndBuildButtonClick'#8'TabOrder'#2#5#0#0#10'TImageList'#18'FileStateImageL'
|
+'SideLeft.Control'#7#13'ConvertButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'
|
||||||
+'ist'#4'left'#3#136#0#3'top'#2'^'#6'Bitmap'#10'}'#3#0#0'li'#2#0#0#0#16#0#0#0
|
+#21'AnchorSideTop.Control'#7#18'OpenSettingsButton'#4'Left'#3#186#1#6'Height'
|
||||||
+#16#0#0#0#191#1#0#0'/* XPM */'#10'static char * pkg_removedfiles_xpm[] = {'
|
+#2'%'#3'Top'#3#251#1#5'Width'#3#169#0#8'AutoSize'#9#18'BorderSpacing.Left'#2
|
||||||
+#10'"14 13 10 1",'#10'" '#9'c None",'#10'".'#9'c #000044",'#10'"+'#9'c #0000'
|
+#6#25'BorderSpacing.InnerBorder'#2#4#7'Caption'#6#21'ConvertAndBuildButton'#7
|
||||||
+'55",'#10'"@'#9'c #FF1414",'#10'"#'#9'c #000084",'#10'"$'#9'c #000033",'#10
|
+'OnClick'#7#26'ConvertAndBuildButtonClick'#8'TabOrder'#2#5#0#0#10'TImageList'
|
||||||
+'"%'#9'c #FFFFFF",'#10'"&'#9'c #D5D5EF",'#10'"*'#9'c #CBCBCB",'#10'"='#9'c #'
|
+#18'FileStateImageList'#4'left'#3#136#0#3'top'#2'^'#6'Bitmap'#10'}'#3#0#0'li'
|
||||||
+'000000",'#10'" ..++.... ",'#10'" .@@####. @@ ",'#10'" $%@@%%&.@@ ",'
|
+#2#0#0#0#16#0#0#0#16#0#0#0#191#1#0#0'/* XPM */'#10'static char * pkg_removed'
|
||||||
+#10'" $*%@@..@@.. ",'#10'" =%%.@@@@... ",'#10'"...++$%@@%%&=%",'#10'".....'
|
+'files_xpm[] = {'#10'"14 13 10 1",'#10'" '#9'c None",'#10'".'#9'c #000044",'
|
||||||
+'$@@@@&&=%",'#10'".%*%%@@%%@@&=%",'#10'".*%%@@%&&&@@=%",'#10'".%%@@======@@%'
|
+#10'"+'#9'c #000055",'#10'"@'#9'c #FF1414",'#10'"#'#9'c #000084",'#10'"$'#9
|
||||||
+'",'#10'".%@@&&&=%%%%@%",'#10'".@@=====% ",'#10'" %%%%%%%% "};'#10
|
+'c #000033",'#10'"%'#9'c #FFFFFF",'#10'"&'#9'c #D5D5EF",'#10'"*'#9'c #CBCBCB'
|
||||||
+#168#1#0#0'/* XPM */'#10'static char * pkg_files_xpm[] = {'#10'"14 13 9 1",'
|
+'",'#10'"='#9'c #000000",'#10'" ..++.... ",'#10'" .@@####. @@ ",'#10'" '
|
||||||
+#10'" '#9'c None",'#10'".'#9'c #000044",'#10'"+'#9'c #000055",'#10'"@'#9'c #'
|
+' $%@@%%&.@@ ",'#10'" $*%@@..@@.. ",'#10'" =%%.@@@@... ",'#10'"...++$%@@%'
|
||||||
+'000084",'#10'"#'#9'c #000033",'#10'"$'#9'c #FFFFFF",'#10'"%'#9'c #CBCBCB",'
|
+'%&=%",'#10'".....$@@@@&&=%",'#10'".%*%%@@%%@@&=%",'#10'".*%%@@%&&&@@=%",'#10
|
||||||
+#10'"&'#9'c #D5D5EF",'#10'"*'#9'c #000000",'#10'" ..++.... ",'#10'" .@@'
|
+'".%%@@======@@%",'#10'".%@@&&&=%%%%@%",'#10'".@@=====% ",'#10'" %%%%%%%'
|
||||||
+'@@@@. ",'#10'" #$%$$$&.$ ",'#10'" #%$........ ",'#10'" *$$........ '
|
+'% "};'#10#168#1#0#0'/* XPM */'#10'static char * pkg_files_xpm[] = {'#10
|
||||||
+'",'#10'"...++#$%$$$&*$",'#10'".....#%$$$&&*$",'#10'".$%$$*$$$&$&*$",'#10'".'
|
+'"14 13 9 1",'#10'" '#9'c None",'#10'".'#9'c #000044",'#10'"+'#9'c #000055",'
|
||||||
+'%$$$*$&&&&&*$",'#10'".$$$$********$",'#10'".$&&&&&*$$$$$$",'#10'".*******$ '
|
+#10'"@'#9'c #000084",'#10'"#'#9'c #000033",'#10'"$'#9'c #FFFFFF",'#10'"%'#9
|
||||||
+' ",'#10'" $$$$$$$$ "};'#10#0#0#0
|
+'c #CBCBCB",'#10'"&'#9'c #D5D5EF",'#10'"*'#9'c #000000",'#10'" ..++.... '
|
||||||
|
,'",'#10'" .@@@@@@. ",'#10'" #$%$$$&.$ ",'#10'" #%$........ ",'#10'" '
|
||||||
|
+' *$$........ ",'#10'"...++#$%$$$&*$",'#10'".....#%$$$&&*$",'#10'".$%$$*$$$&'
|
||||||
|
+'$&*$",'#10'".%$$$*$&&&&&*$",'#10'".$$$$********$",'#10'".$&&&&&*$$$$$$",'#10
|
||||||
|
+'".*******$ ",'#10'" $$$$$$$$ "};'#10#0#0#0
|
||||||
]);
|
]);
|
||||||
|
@ -110,6 +110,7 @@ type
|
|||||||
procedure H2PasFilenameEditEditingDone(Sender: TObject);
|
procedure H2PasFilenameEditEditingDone(Sender: TObject);
|
||||||
procedure LibnameEditEditingDone(Sender: TObject);
|
procedure LibnameEditEditingDone(Sender: TObject);
|
||||||
procedure MergeAllCHeadersExceptCurrentButtonClick(Sender: TObject);
|
procedure MergeAllCHeadersExceptCurrentButtonClick(Sender: TObject);
|
||||||
|
procedure MergeFileCheckBoxEditingDone(Sender: TObject);
|
||||||
procedure MoveFileDownButtonClick(Sender: TObject);
|
procedure MoveFileDownButtonClick(Sender: TObject);
|
||||||
procedure MoveFileUpButtonClick(Sender: TObject);
|
procedure MoveFileUpButtonClick(Sender: TObject);
|
||||||
procedure NewSettingsButtonClick(Sender: TObject);
|
procedure NewSettingsButtonClick(Sender: TObject);
|
||||||
@ -216,9 +217,11 @@ begin
|
|||||||
TextConverterToolClasses.RegisterClass(TRemoveSystemTypes);
|
TextConverterToolClasses.RegisterClass(TRemoveSystemTypes);
|
||||||
TextConverterToolClasses.RegisterClass(TRemoveRedefinedPointerTypes);
|
TextConverterToolClasses.RegisterClass(TRemoveRedefinedPointerTypes);
|
||||||
TextConverterToolClasses.RegisterClass(TRemoveEmptyTypeVarConstSections);
|
TextConverterToolClasses.RegisterClass(TRemoveEmptyTypeVarConstSections);
|
||||||
|
TextConverterToolClasses.RegisterClass(TReduceCompilerDirectivesInUnit);
|
||||||
TextConverterToolClasses.RegisterClass(TReplaceImplicitTypes);
|
TextConverterToolClasses.RegisterClass(TReplaceImplicitTypes);
|
||||||
TextConverterToolClasses.RegisterClass(TFixArrayOfParameterType);
|
TextConverterToolClasses.RegisterClass(TFixArrayOfParameterType);
|
||||||
TextConverterToolClasses.RegisterClass(TRemoveRedefinitionsInUnit);
|
TextConverterToolClasses.RegisterClass(TRemoveRedefinitionsInUnit);
|
||||||
|
TextConverterToolClasses.RegisterClass(TReplaceConstFunctionsInUnit);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TH2PasDialog }
|
{ TH2PasDialog }
|
||||||
@ -525,6 +528,17 @@ begin
|
|||||||
MarkAllCHeadersExceptCurrentToMerge;
|
MarkAllCHeadersExceptCurrentToMerge;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TH2PasDialog.MergeFileCheckBoxEditingDone(Sender: TObject);
|
||||||
|
var
|
||||||
|
CurFile: TH2PasFile;
|
||||||
|
begin
|
||||||
|
if Project=nil then exit;
|
||||||
|
CurFile:=GetCurrentCHeaderFile;
|
||||||
|
if CurFile=nil then exit;
|
||||||
|
CurFile.Merge:=MergeFileCheckBox.Checked;
|
||||||
|
UpdateFileInfo;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TH2PasDialog.MoveFileDownButtonClick(Sender: TObject);
|
procedure TH2PasDialog.MoveFileDownButtonClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
MoveCurrentFile(1);
|
MoveCurrentFile(1);
|
||||||
@ -1066,7 +1080,7 @@ begin
|
|||||||
|
|
||||||
if not Project.HasEnabledFiles then begin
|
if not Project.HasEnabledFiles then begin
|
||||||
IDEMessageDialog('Nothing to do',
|
IDEMessageDialog('Nothing to do',
|
||||||
'No c header file is enabled, so nothing to do.',
|
'Please enable at least one c header file that is not merged.',
|
||||||
mtInformation,[mbOk],'');
|
mtInformation,[mbOk],'');
|
||||||
Result:=mrOK;
|
Result:=mrOK;
|
||||||
exit;
|
exit;
|
||||||
|
@ -743,6 +743,7 @@ constructor TCustomTextConverterTool.Create(TheOwner: TComponent);
|
|||||||
begin
|
begin
|
||||||
inherited Create(TheOwner);
|
inherited Create(TheOwner);
|
||||||
Enabled:=true;
|
Enabled:=true;
|
||||||
|
Caption:=FirstLineOfClassDescription;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomTextConverterTool.Assign(Source: TPersistent);
|
procedure TCustomTextConverterTool.Assign(Source: TPersistent);
|
||||||
|
@ -161,7 +161,6 @@ type
|
|||||||
fOnNewDataSet: TDataSetNotifyEvent;
|
fOnNewDataSet: TDataSetNotifyEvent;
|
||||||
FOnRecordChanged: TFieldNotifyEvent;
|
FOnRecordChanged: TFieldNotifyEvent;
|
||||||
FOnUpdateData: TDataSetNotifyEvent;
|
FOnUpdateData: TDataSetNotifyEvent;
|
||||||
fOldFirstRecord: Integer;
|
|
||||||
|
|
||||||
function GetDataSetName: string;
|
function GetDataSetName: string;
|
||||||
function GetFields(Index: Integer): TField;
|
function GetFields(Index: Integer): TField;
|
||||||
|
@ -1924,7 +1924,7 @@ begin
|
|||||||
// Important: change the BaseBounds too
|
// Important: change the BaseBounds too
|
||||||
OldChildBounds:=AControl.BoundsRect;
|
OldChildBounds:=AControl.BoundsRect;
|
||||||
if not CompareRect(@OldChildBounds,@NewChildBounds) then begin
|
if not CompareRect(@OldChildBounds,@NewChildBounds) then begin
|
||||||
DebugLn(['TWinControl.DoAutoSize moving child: ',DbgSName(AControl),' Old=',dbgs(OldChildBounds),' New=',dbgs(NewChildBounds)]);
|
//DebugLn(['TWinControl.DoAutoSize moving child: ',DbgSName(AControl),' Old=',dbgs(OldChildBounds),' New=',dbgs(NewChildBounds)]);
|
||||||
AControl.BoundsRect:=NewChildBounds;
|
AControl.BoundsRect:=NewChildBounds;
|
||||||
//DebugLn(['TWinControl.DoAutoSize AFTER ',DbgSName(AControl),' ',dbgs(AControl.BoundsRect)]);
|
//DebugLn(['TWinControl.DoAutoSize AFTER ',DbgSName(AControl),' ',dbgs(AControl.BoundsRect)]);
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user