mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 23:08:05 +02:00
IDE: improved xml parser to keep TDomText nodes
git-svn-id: trunk@13928 -
This commit is contained in:
parent
7901ce1c95
commit
1802d34238
@ -460,11 +460,11 @@ begin
|
||||
SetWideStringManager(WideStringManager, OldWideStringManager);
|
||||
try
|
||||
{$ENDIF}
|
||||
// do not call SkipWhitespace. The text is needed by ParseCharData.
|
||||
// do not call SkipWhitespace. They are needed by ParseCharData.
|
||||
while ParseCharData(AOwner) or ParseCDSect(AOwner) or ParsePI or
|
||||
ParseComment(AOwner) or ParseElement(AOwner) or
|
||||
ParseReference(AOwner) do
|
||||
;
|
||||
ParseReference(AOwner)
|
||||
do ;
|
||||
{$IFDEF UsesFPCWidestrings}
|
||||
finally
|
||||
SetWideStringManager(OldWideStringManager);
|
||||
|
@ -56,6 +56,17 @@ procedure WriteDocumentType(node: TDOMNode); forward;
|
||||
procedure WriteDocumentFragment(node: TDOMNode); forward;
|
||||
procedure WriteNotation(node: TDOMNode); forward;
|
||||
|
||||
function NodeFrontIsText(Node: TDOMNode): boolean;
|
||||
begin
|
||||
Result:=(Node is TDOMText) or (Node.ParentNode is TDOMText)
|
||||
or (Node.PreviousSibling is TDOMText);
|
||||
end;
|
||||
|
||||
function NodeAfterIsText(Node: TDOMNode): boolean;
|
||||
begin
|
||||
Result:=(Node is TDOMText) or (Node.ParentNode is TDOMText)
|
||||
or (Node.NextSibling is TDOMText);
|
||||
end;
|
||||
|
||||
type
|
||||
TWriteNodeProc = procedure(node: TDOMNode);
|
||||
@ -84,7 +95,6 @@ threadvar
|
||||
f: ^Text;
|
||||
stream: TStream;
|
||||
wrt, wrtln: TOutputProc;
|
||||
InsideTextNode: Boolean;
|
||||
|
||||
procedure Text_Write(const Buffer; Count: Longint);
|
||||
var s: string;
|
||||
@ -241,10 +251,9 @@ procedure WriteElement(node: TDOMNode);
|
||||
var
|
||||
i: Integer;
|
||||
attr, child: TDOMNode;
|
||||
SavedInsideTextNode: Boolean;
|
||||
s: String;
|
||||
begin
|
||||
if not InsideTextNode then
|
||||
if not NodeFrontIsText(Node) then
|
||||
wrtIndent;
|
||||
wrtChr('<');
|
||||
wrtStr(node.NodeName);
|
||||
@ -266,29 +275,30 @@ begin
|
||||
if Child = nil then begin
|
||||
wrtChr('/');
|
||||
wrtChr('>');
|
||||
if not InsideTextNode then wrtLineEnd;
|
||||
if not NodeAfterIsText(Node) then
|
||||
wrtLineEnd;
|
||||
end else
|
||||
begin
|
||||
SavedInsideTextNode := InsideTextNode;
|
||||
wrtChr('>');
|
||||
if not (InsideTextNode or Child.InheritsFrom(TDOMText)) then
|
||||
if not ((Node is TDOMText) or (Node.ParentNode is TDOMText) or
|
||||
(Child is TDOMText))
|
||||
then
|
||||
wrtLineEnd;
|
||||
IncIndent;
|
||||
repeat
|
||||
if Child.InheritsFrom(TDOMText) then
|
||||
InsideTextNode := True;
|
||||
WriteNode(Child);
|
||||
Child := Child.NextSibling;
|
||||
until child = nil;
|
||||
DecIndent;
|
||||
if not InsideTextNode then
|
||||
if not ((Node is TDOMText) or (Node.ParentNode is TDOMText) or
|
||||
(Node.LastChild is TDOMText))
|
||||
then
|
||||
wrtIndent;
|
||||
InsideTextNode := SavedInsideTextNode;
|
||||
wrtChr('<');
|
||||
wrtChr('/');
|
||||
wrtStr(node.NodeName);
|
||||
wrtChr('>');
|
||||
if not InsideTextNode then
|
||||
if not NodeAfterIsText(Node) then
|
||||
wrtLineEnd;
|
||||
end;
|
||||
end;
|
||||
@ -306,7 +316,7 @@ end;
|
||||
|
||||
procedure WriteCDATA(node: TDOMNode);
|
||||
begin
|
||||
if not InsideTextNode then
|
||||
if not NodeFrontIsText(Node) then
|
||||
wrtStr('<![CDATA[' + node.NodeValue + ']]>')
|
||||
else begin
|
||||
wrtIndent;
|
||||
@ -328,22 +338,22 @@ end;
|
||||
|
||||
procedure WritePI(node: TDOMNode);
|
||||
begin
|
||||
if not InsideTextNode then wrtIndent;
|
||||
if not NodeFrontIsText(Node) then wrtIndent;
|
||||
wrtChr('<'); wrtChr('!');
|
||||
wrtStr(TDOMProcessingInstruction(node).Target);
|
||||
wrtChr(' ');
|
||||
wrtStr(TDOMProcessingInstruction(node).Data);
|
||||
wrtChr('>');
|
||||
if not InsideTextNode then wrtLineEnd;
|
||||
if not NodeAfterIsText(Node) then wrtLineEnd;
|
||||
end;
|
||||
|
||||
procedure WriteComment(node: TDOMNode);
|
||||
begin
|
||||
if not InsideTextNode then wrtIndent;
|
||||
if not NodeFrontIsText(Node) then wrtIndent;
|
||||
wrtStr('<!--');
|
||||
wrtStr(node.NodeValue);
|
||||
wrtStr('-->');
|
||||
if not InsideTextNode then wrtLineEnd;
|
||||
if not NodeAfterIsText(Node) then wrtLineEnd;
|
||||
end;
|
||||
|
||||
procedure WriteDocument(node: TDOMNode);
|
||||
@ -366,10 +376,8 @@ begin
|
||||
if node=nil then ;
|
||||
end;
|
||||
|
||||
|
||||
procedure InitWriter;
|
||||
begin
|
||||
InsideTextNode := False;
|
||||
SetLength(Indent, 0);
|
||||
end;
|
||||
|
||||
|
204
ide/codehelp.pas
204
ide/codehelp.pas
@ -17,6 +17,12 @@
|
||||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
Author: Mattias Gaertner
|
||||
|
||||
Abstract:
|
||||
This unit is part of the IDE's help system. It implements the help for sources via
|
||||
fpdoc files and pascal comments.
|
||||
}
|
||||
unit CodeHelp;
|
||||
|
||||
@ -65,17 +71,18 @@ type
|
||||
);
|
||||
TLazFPDocFileFlags = set of TLazFPDocFileFlag;
|
||||
|
||||
{ TLazFPDocFile }
|
||||
{ TLazFPDocFile
|
||||
An fpdoc xml file. The CodeBuffer is the xml source. The Doc is the parsed dom tree. }
|
||||
|
||||
TLazFPDocFile = class
|
||||
private
|
||||
fUpdateLock: integer;
|
||||
FFlags: TLazFPDocFileFlags;
|
||||
public
|
||||
Filename: string;
|
||||
Filename: string;// the fpdoc xml filename
|
||||
Doc: TXMLdocument;// IMPORTANT: if you change this, call DocChanging and DocChanged to notify the references
|
||||
DocModified: boolean;
|
||||
ChangeStep: integer;// the CodeBuffer.ChangeStep value, when Doc was build
|
||||
ChangeStep: integer;// the CodeBuffer.ChangeStep value, when Doc was built
|
||||
CodeBuffer: TCodeBuffer;
|
||||
destructor Destroy; override;
|
||||
function GetModuleNode: TDOMNode;
|
||||
@ -102,7 +109,8 @@ type
|
||||
FilesTimeStamp: integer;
|
||||
end;
|
||||
|
||||
{ TCodeHelpElement }
|
||||
{ TCodeHelpElement - mapping between one codetools position and a fpdoc xml node.
|
||||
This data is only valid for short times, so don't store it. }
|
||||
|
||||
TCodeHelpElement = class
|
||||
public
|
||||
@ -114,7 +122,9 @@ type
|
||||
FPDocFile: TLazFPDocFile;
|
||||
end;
|
||||
|
||||
{ TCodeHelpElementChain }
|
||||
{ TCodeHelpElementChain - a list of TCodeHelpElement.
|
||||
For example the list of one element plus its ancestors.
|
||||
Only valid for short time. So always check IsValid. }
|
||||
|
||||
TCodeHelpElementChain = class
|
||||
private
|
||||
@ -227,6 +237,7 @@ function CompareAnsistringWithLDSrc2DocSrcFile(Key, Data: Pointer): integer;
|
||||
|
||||
function ToUnixLineEnding(const s: String): String;
|
||||
function ToOSLineEnding(const s: String): String;
|
||||
function ReplaceLineEndings(const s, NewLineEnds: string): string;
|
||||
|
||||
|
||||
implementation
|
||||
@ -286,6 +297,27 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function ReplaceLineEndings(const s, NewLineEnds: string): string;
|
||||
var
|
||||
p: Integer;
|
||||
StartPos: LongInt;
|
||||
begin
|
||||
Result:=s;
|
||||
p:=1;
|
||||
while (p<=length(Result)) do begin
|
||||
if Result[p] in [#10,#13] then begin
|
||||
StartPos:=p;
|
||||
if (p<length(Result))
|
||||
and (Result[p+1] in [#10,#13]) and (Result[p]<>Result[p+1]) then
|
||||
inc(p);
|
||||
Result:=copy(Result,1,StartPos-1)+NewLineEnds+copy(Result,p+1,length(Result));
|
||||
inc(p,length(NewLineEnds));
|
||||
end else begin
|
||||
inc(p);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
function CompareLazFPDocFilenames(Data1, Data2: Pointer): integer;
|
||||
begin
|
||||
Result:=CompareFilenames(TLazFPDocFile(Data1).Filename,
|
||||
@ -384,6 +416,22 @@ begin
|
||||
end;
|
||||
|
||||
function TLazFPDocFile.GetChildValuesAsString(Node: TDOMNode): String;
|
||||
|
||||
procedure FindEndOfTag(const Src: string; var EndPos: integer);
|
||||
begin
|
||||
while (EndPos<=length(Src)) do begin
|
||||
if (Src[EndPos]='>') then begin
|
||||
inc(EndPos);
|
||||
exit;
|
||||
end else if Src[EndPos]='"' then begin
|
||||
repeat
|
||||
inc(EndPos);
|
||||
until (EndPos>=length(Src)) or (Src[EndPos]='"');
|
||||
end;
|
||||
inc(EndPos);
|
||||
end;
|
||||
end;
|
||||
|
||||
var
|
||||
MemStream: TMemoryStream;
|
||||
StartPos: Integer;
|
||||
@ -398,28 +446,25 @@ begin
|
||||
SetLength(Result,MemStream.Size);
|
||||
if Result<>'' then
|
||||
MemStream.Read(Result[1],length(Result));
|
||||
// remove tag(s) for node, because Result should only contain the child values:
|
||||
// remove enclosing tag(s) for Node, because Result should only
|
||||
// contain the child values:
|
||||
// <nodename/> or <nodename>...<nodename/>
|
||||
// <nodename something=""/>
|
||||
// plus line ends
|
||||
StartPos:=1;
|
||||
EndPos:=length(Result)+1;
|
||||
// skip start tag
|
||||
// skip start tag and spaces at start
|
||||
while (StartPos<=length(Result))
|
||||
and (Result[StartPos] in [' ',#9,#10,#13]) do
|
||||
inc(StartPos);
|
||||
if (Result<>'') and (Result[StartPos]='<') then begin
|
||||
inc(StartPos);
|
||||
while (StartPos<=EndPos) do begin
|
||||
if (Result[StartPos]='>') then begin
|
||||
inc(StartPos);
|
||||
break;
|
||||
end else if Result[StartPos]='"' then begin
|
||||
repeat
|
||||
inc(StartPos);
|
||||
until (StartPos>=EndPos) or (Result[StartPos]='"');
|
||||
end;
|
||||
FindEndOfTag(Result,StartPos);
|
||||
while (StartPos<=length(Result))
|
||||
and (Result[StartPos] in [' ',#9,#10,#13]) do
|
||||
inc(StartPos);
|
||||
end;
|
||||
end;
|
||||
// skip ending line ends
|
||||
// skip ending line ends and spaces at end
|
||||
while (EndPos>StartPos) and (Result[EndPos-1] in [' ',#9,#10,#13]) do
|
||||
dec(EndPos);
|
||||
// skip end tag
|
||||
@ -436,31 +481,37 @@ begin
|
||||
break;
|
||||
end;
|
||||
until false;
|
||||
while (EndPos>StartPos) and (Result[EndPos-1] in [' ',#9,#10,#13]) do
|
||||
dec(EndPos);
|
||||
end;
|
||||
Result:=copy(Result,StartPos,EndPos-StartPos);
|
||||
|
||||
// the xml writer adds/removes spaces/new lines automatically
|
||||
// add newlines after br and p tags
|
||||
StartPos:=1;
|
||||
while StartPos<length(Result) do begin
|
||||
if Result[StartPos]='<' then begin
|
||||
// search end of tag
|
||||
EndPos:=StartPos+1;
|
||||
FindEndOfTag(Result,EndPos);
|
||||
if Result[StartPos+1]='/' then
|
||||
inc(StartPos);
|
||||
if (CompareIdentifiers(@Result[StartPos+1],'br')=0)
|
||||
or (CompareIdentifiers(@Result[StartPos+1],'p')=0) then
|
||||
begin
|
||||
// add new line
|
||||
if not (Result[EndPos] in [#10,#13]) then
|
||||
Result:=copy(Result,1,EndPos-1)+LineEnding+copy(Result,EndPos,length(Result));
|
||||
end;
|
||||
StartPos:=EndPos;
|
||||
end else begin
|
||||
inc(StartPos);
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
MemStream.Free;
|
||||
end;
|
||||
DebugLn(['TLazFPDocFile.GetChildValuesAsString Node=',Node.NodeName,' Result=',Result]);
|
||||
|
||||
{Child:=Node.FirstChild;
|
||||
//DebugLn(['TLazFPDocFile.GetChildValuesAsString Node=',Node.NodeName]);
|
||||
while Child<>nil do begin
|
||||
//DebugLn(['TLazFPDocFile.GetChildValuesAsString ',dbgsName(Child),' ',Child.NodeName]);
|
||||
if Child is TDOMText then begin
|
||||
//DebugLn(['TLazFPDocFile.GetChildValuesAsString Data="',TDOMText(Child).Data,'" Length=',TDOMText(Child).Length]);
|
||||
Result:=Result+TDOMText(Child).Data;
|
||||
end else if Child is TDOMElement then begin
|
||||
if Child.FirstChild=nil then begin
|
||||
Result:=Result+'<'+Child.NodeName+'/>';
|
||||
end else begin
|
||||
Result:=Result+'<'+Child.NodeName+'>'
|
||||
+GetChildValuesAsString(Child)
|
||||
+'</'+Child.NodeName+'>'
|
||||
end;
|
||||
end;
|
||||
Child:=Child.NextSibling;
|
||||
end;}
|
||||
end;
|
||||
|
||||
function TLazFPDocFile.GetValuesFromNode(Node: TDOMNode): TFPDocElementValues;
|
||||
@ -530,54 +581,61 @@ procedure TLazFPDocFile.SetChildValue(Node: TDOMNode; const ChildName: string;
|
||||
|
||||
var
|
||||
Child: TDOMNode;
|
||||
OldNode: TDOMNode;
|
||||
FileAttribute: TDOMAttr;
|
||||
begin
|
||||
Child:=Node.FindNode(ChildName);
|
||||
NewValue:=ToUnixLineEnding(NewValue);
|
||||
if Child=nil then begin
|
||||
{if ChildName = 'example' then begin
|
||||
if ChildName = 'example' then begin
|
||||
OldNode:=nil;
|
||||
if Child<>nil then
|
||||
OldNode:=Child.Attributes.GetNamedItem('file');
|
||||
NewValue:=FilenameToURLPath(NewValue);
|
||||
if (NewValue<>'')
|
||||
or (not (OldNode is TDOMAttr))
|
||||
or (TDOMAttr(OldNode).Value<>NewValue) then begin
|
||||
DebugLn(['TLazFPDocFile.SetChildValue Changing Name=',ChildName,' NewValue="',NewValue,'"']);
|
||||
// add or change example
|
||||
DocChanging;
|
||||
NewValue:=FilenameToURLPath(NewValue);
|
||||
if (NewValue<>'')
|
||||
or (not (OldNode is TDOMAttr))
|
||||
or (TDOMAttr(OldNode).Value<>NewValue) then begin
|
||||
DebugLn(['TLazFPDocFile.SetChildValue Changing Name=',ChildName,' NewValue="',NewValue,'"']);
|
||||
// add or change example
|
||||
DocChanging;
|
||||
try
|
||||
FileAttribute := Doc.CreateAttribute('file');
|
||||
FileAttribute.Value := NewValue;
|
||||
OldNode:=Node.Attributes.SetNamedItem(FileAttribute);
|
||||
OldNode.Free;
|
||||
DocChanged;
|
||||
end;
|
||||
end
|
||||
else }
|
||||
// add node
|
||||
if NewValue<>'' then begin
|
||||
DebugLn(['TLazFPDocFile.SetChildValue Adding Name=',ChildName,' NewValue="',NewValue,'"']);
|
||||
DocChanging;
|
||||
try
|
||||
Child := Doc.CreateElement(ChildName);
|
||||
Node.AppendChild(Child);
|
||||
ReadXMLFragmentFromString(Child,NewValue);
|
||||
finally
|
||||
DocChanged;
|
||||
end;
|
||||
end;
|
||||
end else if GetChildValuesAsString(Child)<>NewValue then begin
|
||||
// change node
|
||||
DocChanging;
|
||||
try
|
||||
DebugLn(['TLazFPDocFile.CheckAndWriteNode Changing ',Node.NodeName,
|
||||
' ChildName=',Child.NodeName,
|
||||
' OldValue=',GetChildValuesAsString(Child),
|
||||
' NewValue="',NewValue,'"']);
|
||||
// remove old content
|
||||
while Child.LastChild<>nil do
|
||||
Child.RemoveChild(Child.LastChild);
|
||||
// set new content
|
||||
ReadXMLFragmentFromString(Child,NewValue);
|
||||
finally
|
||||
DocChanged;
|
||||
end else begin
|
||||
if Child=nil then begin
|
||||
// add node
|
||||
if NewValue<>'' then begin
|
||||
DebugLn(['TLazFPDocFile.SetChildValue Adding Name=',ChildName,' NewValue="',NewValue,'"']);
|
||||
DocChanging;
|
||||
try
|
||||
Child := Doc.CreateElement(ChildName);
|
||||
Node.AppendChild(Child);
|
||||
ReadXMLFragmentFromString(Child,NewValue);
|
||||
finally
|
||||
DocChanged;
|
||||
end;
|
||||
end;
|
||||
end else if GetChildValuesAsString(Child)<>NewValue then begin
|
||||
// change node
|
||||
DocChanging;
|
||||
try
|
||||
DebugLn(['TLazFPDocFile.CheckAndWriteNode Changing ',Node.NodeName,
|
||||
' ChildName=',Child.NodeName,
|
||||
' OldValue=',GetChildValuesAsString(Child),
|
||||
' NewValue="',NewValue,'"']);
|
||||
// remove old content
|
||||
while Child.LastChild<>nil do
|
||||
Child.RemoveChild(Child.LastChild);
|
||||
// set new content
|
||||
ReadXMLFragmentFromString(Child,NewValue);
|
||||
finally
|
||||
DocChanged;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
@ -5,7 +5,7 @@ object FPDocEditor: TFPDocEditor
|
||||
Width = 753
|
||||
HorzScrollBar.Page = 752
|
||||
VertScrollBar.Page = 116
|
||||
ActiveControl = LinkIdComboBox
|
||||
ActiveControl = DescrMemo
|
||||
Caption = 'FPDoc editor'
|
||||
ClientHeight = 117
|
||||
ClientWidth = 753
|
||||
@ -16,9 +16,9 @@ object FPDocEditor: TFPDocEditor
|
||||
Left = 17
|
||||
Height = 117
|
||||
Width = 736
|
||||
ActivePage = SeeAlsoTabSheet
|
||||
ActivePage = DescrTabSheet
|
||||
Align = alClient
|
||||
TabIndex = 3
|
||||
TabIndex = 1
|
||||
TabOrder = 0
|
||||
TabPosition = tpBottom
|
||||
object ShortTabSheet: TTabSheet
|
||||
@ -30,7 +30,8 @@ object FPDocEditor: TFPDocEditor
|
||||
Width = 730
|
||||
Align = alTop
|
||||
BorderSpacing.Right = 2
|
||||
OnEditingDone = DocumentationTagChange
|
||||
OnChange = ShortEditEditingDone
|
||||
OnEditingDone = ShortEditEditingDone
|
||||
TabOrder = 0
|
||||
Text = 'ShortEdit'
|
||||
end
|
||||
@ -75,7 +76,7 @@ object FPDocEditor: TFPDocEditor
|
||||
Lines.Strings = (
|
||||
'DescrMemo'
|
||||
)
|
||||
OnChange = DocumentationTagChange
|
||||
OnChange = DescrMemoChange
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
@ -92,7 +93,7 @@ object FPDocEditor: TFPDocEditor
|
||||
Lines.Strings = (
|
||||
'ErrorsMemo'
|
||||
)
|
||||
OnChange = DocumentationTagChange
|
||||
OnChange = ErrorsMemoChange
|
||||
TabOrder = 0
|
||||
end
|
||||
end
|
||||
@ -177,17 +178,17 @@ object FPDocEditor: TFPDocEditor
|
||||
Width = 730
|
||||
Align = alTop
|
||||
BorderSpacing.Right = 2
|
||||
OnChange = DocumentationTagChange
|
||||
OnChange = ExampleEditChange
|
||||
TabOrder = 0
|
||||
Text = 'ExampleEdit'
|
||||
end
|
||||
object BrowseExampleButton: TButton
|
||||
AnchorSideRight.Control = ExampleTabSheet
|
||||
AnchorSideRight.Side = asrBottom
|
||||
Left = 592
|
||||
Height = 25
|
||||
Left = 574
|
||||
Height = 29
|
||||
Top = 28
|
||||
Width = 134
|
||||
Width = 156
|
||||
Anchors = [akTop, akRight]
|
||||
AutoSize = True
|
||||
BorderSpacing.Right = 2
|
||||
|
@ -3,153 +3,153 @@
|
||||
LazarusResources.Add('TFPDocEditor','FORMDATA',[
|
||||
'TPF0'#12'TFPDocEditor'#11'FPDocEditor'#4'Left'#3'/'#1#6'Height'#2'u'#3'Top'#3
|
||||
+'$'#2#5'Width'#3#241#2#18'HorzScrollBar.Page'#3#240#2#18'VertScrollBar.Page'
|
||||
+#2't'#13'ActiveControl'#7#14'LinkIdComboBox'#7'Caption'#6#12'FPDoc editor'#12
|
||||
+'ClientHeight'#2'u'#11'ClientWidth'#3#241#2#8'OnCreate'#7#10'FormCreate'#9'O'
|
||||
+'nDestroy'#7#11'FormDestroy'#8'OnResize'#7#10'FormResize'#0#12'TPageControl'
|
||||
+#11'PageControl'#4'Left'#2#17#6'Height'#2'u'#5'Width'#3#224#2#10'ActivePage'
|
||||
+#7#15'SeeAlsoTabSheet'#5'Align'#7#8'alClient'#8'TabIndex'#2#3#8'TabOrder'#2#0
|
||||
+#11'TabPosition'#7#8'tpBottom'#0#9'TTabSheet'#13'ShortTabSheet'#7'Caption'#6
|
||||
+#13'ShortTabSheet'#12'ClientHeight'#2'V'#11'ClientWidth'#3#220#2#0#5'TEdit'#9
|
||||
+'ShortEdit'#6'Height'#2#23#5'Width'#3#218#2#5'Align'#7#5'alTop'#19'BorderSpa'
|
||||
+'cing.Right'#2#2#13'OnEditingDone'#7#22'DocumentationTagChange'#8'TabOrder'#2
|
||||
+#0#4'Text'#6#9'ShortEdit'#0#0#7'TButton'#12'CreateButton'#21'AnchorSideTop.C'
|
||||
+'ontrol'#7#9'ShortEdit'#18'AnchorSideTop.Side'#7#9'asrBottom'#4'Left'#2#6#6
|
||||
+'Height'#2#29#3'Top'#2#29#5'Width'#2'b'#8'AutoSize'#9#20'BorderSpacing.Aroun'
|
||||
+'d'#2#6#7'Caption'#6#12'CreateButton'#7'OnClick'#7#17'CreateButtonClick'#8'T'
|
||||
+'abOrder'#2#1#0#0#7'TButton'#10'SaveButton'#22'AnchorSideLeft.Control'#7#12
|
||||
+'CreateButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21'AnchorSideTop.Contr'
|
||||
+'ol'#7#12'CreateButton'#4'Left'#2'n'#6'Height'#2#29#3'Top'#2#29#5'Width'#2'W'
|
||||
+#8'AutoSize'#9#18'BorderSpacing.Left'#2#6#7'Caption'#6#10'SaveButton'#7'OnCl'
|
||||
+'ick'#7#15'SaveButtonClick'#8'TabOrder'#2#2#0#0#0#9'TTabSheet'#13'DescrTabSh'
|
||||
+'eet'#7'Caption'#6#13'DescrTabSheet'#12'ClientHeight'#2'V'#11'ClientWidth'#3
|
||||
+#220#2#0#5'TMemo'#9'DescrMemo'#6'Height'#2'R'#5'Width'#3#218#2#5'Align'#7#8
|
||||
+'alClient'#19'BorderSpacing.Right'#2#2#20'BorderSpacing.Bottom'#2#4#13'Lines'
|
||||
+'.Strings'#1#6#9'DescrMemo'#0#8'OnChange'#7#22'DocumentationTagChange'#8'Tab'
|
||||
+'Order'#2#0#0#0#0#9'TTabSheet'#14'ErrorsTabSheet'#7'Caption'#6#14'ErrorsTabS'
|
||||
+'heet'#12'ClientHeight'#2'V'#11'ClientWidth'#3#220#2#0#5'TMemo'#10'ErrorsMem'
|
||||
+'o'#6'Height'#2'R'#5'Width'#3#218#2#5'Align'#7#8'alClient'#19'BorderSpacing.'
|
||||
+'Right'#2#2#20'BorderSpacing.Bottom'#2#4#13'Lines.Strings'#1#6#10'ErrorsMemo'
|
||||
+#0#8'OnChange'#7#22'DocumentationTagChange'#8'TabOrder'#2#0#0#0#0#9'TTabShee'
|
||||
+'t'#15'SeeAlsoTabSheet'#7'Caption'#6#15'SeeAlsoTabSheet'#12'ClientHeight'#2
|
||||
+'V'#11'ClientWidth'#3#220#2#0#8'TListBox'#11'LinkListBox'#21'AnchorSideTop.C'
|
||||
+'ontrol'#7#13'AddLinkButton'#18'AnchorSideTop.Side'#7#9'asrBottom'#6'Height'
|
||||
+#2'1'#3'Top'#2'!'#5'Width'#3#218#2#5'Align'#7#8'alBottom'#7'Anchors'#11#5'ak'
|
||||
+'Top'#6'akLeft'#7'akRight'#8'akBottom'#0#17'BorderSpacing.Top'#2#4#19'Border'
|
||||
+'Spacing.Right'#2#2#20'BorderSpacing.Bottom'#2#4#7'OnClick'#7#16'LinkListBox'
|
||||
+'Click'#8'TabOrder'#2#0#8'TopIndex'#2#255#0#0#7'TButton'#13'AddLinkButton'#23
|
||||
+'AnchorSideRight.Control'#7#16'DeleteLinkButton'#4'Left'#3#241#1#6'Height'#2
|
||||
+#29#5'Width'#2'i'#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#19'Borde'
|
||||
+'rSpacing.Right'#2#6#7'Caption'#6#13'AddLinkButton'#7'OnClick'#7#18'AddLinkB'
|
||||
+'uttonClick'#8'TabOrder'#2#1#0#0#7'TButton'#16'DeleteLinkButton'#23'AnchorSi'
|
||||
+'deRight.Control'#7#15'SeeAlsoTabSheet'#20'AnchorSideRight.Side'#7#9'asrBott'
|
||||
+'om'#4'Left'#3'`'#2#6'Height'#2#29#5'Width'#2'z'#7'Anchors'#11#5'akTop'#7'ak'
|
||||
+'Right'#0#8'AutoSize'#9#19'BorderSpacing.Right'#2#2#7'Caption'#6#16'DeleteLi'
|
||||
+'nkButton'#7'OnClick'#7#21'DeleteLinkButtonClick'#8'TabOrder'#2#2#0#0#5'TEdi'
|
||||
+'t'#12'LinkTextEdit'#22'AnchorSideLeft.Control'#7#14'LinkIdComboBox'#19'Anch'
|
||||
+'orSideLeft.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7#13'AddLinkBut'
|
||||
+'ton'#4'Left'#3#229#0#6'Height'#2#27#3'Top'#2#1#5'Width'#3#8#1#7'Anchors'#11
|
||||
+#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#9#18'BorderSpacing.Left'#2#4#19
|
||||
+'BorderSpacing.Right'#2#4#8'OnChange'#7#10'LinkChange'#8'TabOrder'#2#3#4'Tex'
|
||||
+'t'#6#12'LinkTextEdit'#0#0#9'TComboBox'#14'LinkIdComboBox'#6'Height'#2#27#3
|
||||
+'Top'#2#1#5'Width'#3#225#0#16'AutoCompleteText'#11#22'cbactEndOfLineComplete'
|
||||
+#20'cbactSearchAscending'#0#8'AutoSize'#9#9'MaxLength'#2#0#8'OnChange'#7#10
|
||||
+'LinkChange'#8'TabOrder'#2#4#4'Text'#6#14'LinkIdComboBox'#0#0#0#9'TTabSheet'
|
||||
+#15'ExampleTabSheet'#7'Caption'#6#15'ExampleTabSheet'#12'ClientHeight'#2'V'
|
||||
+#11'ClientWidth'#3#220#2#0#5'TEdit'#11'ExampleEdit'#6'Height'#2#23#5'Width'#3
|
||||
+#218#2#5'Align'#7#5'alTop'#19'BorderSpacing.Right'#2#2#8'OnChange'#7#22'Docu'
|
||||
+'mentationTagChange'#8'TabOrder'#2#0#4'Text'#6#11'ExampleEdit'#0#0#7'TButton'
|
||||
+#19'BrowseExampleButton'#23'AnchorSideRight.Control'#7#15'ExampleTabSheet'#20
|
||||
+'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3'P'#2#6'Height'#2#25#3'Top'#2
|
||||
+#28#5'Width'#3#134#0#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#19'Bo'
|
||||
+'rderSpacing.Right'#2#2#7'Caption'#6#19'BrowseExampleButton'#7'OnClick'#7#24
|
||||
+'BrowseExampleButtonClick'#8'TabOrder'#2#1#0#0#0#9'TTabSheet'#17'InheritedTa'
|
||||
+'bSheet'#7'Caption'#6#17'InheritedTabSheet'#12'ClientHeight'#2'V'#11'ClientW'
|
||||
+'idth'#3#220#2#0#6'TLabel'#19'InheritedShortLabel'#6'Height'#2#20#3'Top'#2#2
|
||||
,#5'Width'#3#220#2#5'Align'#7#5'alTop'#17'BorderSpacing.Top'#2#2#7'Caption'#6
|
||||
+#19'InheritedShortLabel'#11'ParentColor'#8#0#0#5'TEdit'#18'InheritedShortEdi'
|
||||
+'t'#22'AnchorSideLeft.Control'#7#17'InheritedTabSheet'#21'AnchorSideTop.Cont'
|
||||
+'rol'#7#19'InheritedShortLabel'#18'AnchorSideTop.Side'#7#9'asrBottom'#23'Anc'
|
||||
+'horSideRight.Control'#7#17'InheritedTabSheet'#20'AnchorSideRight.Side'#7#9
|
||||
+'asrBottom'#6'Height'#2#23#3'Top'#2#24#5'Width'#3#220#2#7'Anchors'#11#5'akTo'
|
||||
+'p'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#2#8'ReadOnly'#9#8'TabOrde'
|
||||
+'r'#2#0#4'Text'#6#18'InheritedShortEdit'#0#0#7'TButton'#21'MoveToInheritedBu'
|
||||
+'tton'#6'Height'#2#29#3'Top'#2'6'#5'Width'#3#158#0#8'AutoSize'#9#7'Caption'#6
|
||||
+#21'MoveToInheritedButton'#7'OnClick'#7#26'MoveToInheritedButtonClick'#8'Tab'
|
||||
+'Order'#2#1#0#0#7'TButton'#23'CopyFromInheritedButton'#22'AnchorSideLeft.Con'
|
||||
+'trol'#7#21'MoveToInheritedButton'#19'AnchorSideLeft.Side'#7#9'asrBottom'#21
|
||||
+'AnchorSideTop.Control'#7#21'MoveToInheritedButton'#18'AnchorSideTop.Side'#7
|
||||
+#9'asrCenter'#4'Left'#3#168#0#6'Height'#2#29#3'Top'#2'6'#5'Width'#3#175#0#8
|
||||
+'AutoSize'#9#18'BorderSpacing.Left'#2#10#7'Caption'#6#23'CopyFromInheritedBu'
|
||||
+'tton'#7'OnClick'#7#28'CopyFromInheritedButtonClick'#8'TabOrder'#2#2#0#0#0#0
|
||||
+#6'TPanel'#6'Panel1'#6'Height'#2'u'#5'Width'#2#17#5'Align'#7#6'alLeft'#10'Be'
|
||||
+'velOuter'#7#6'bvNone'#12'ClientHeight'#2'u'#11'ClientWidth'#2#17#11'FullRep'
|
||||
+'aint'#8#14'ParentShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#1#0#12'TSpeedButto'
|
||||
+'n'#16'BoldFormatButton'#6'Height'#2#17#5'Width'#2#17#5'Align'#7#5'alTop'#5
|
||||
+'Color'#7#9'clBtnFace'#10'Glyph.Data'#10#190#4#0#0#186#4#0#0'BM'#186#4#0#0#0
|
||||
+#0#0#0'6'#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0' '#0#0#0#0#0#132#4#0#0'd'#0#0
|
||||
+#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#219#152' '#0#0#14#165#0#243#165#13#0
|
||||
+#0#0'g'#0#250#226'c'#0#0#255#0#0#0#0#0#0#0#255#255#0#255#255#0#0#0#0#0#0#221
|
||||
+#255#255#0#0#2'|'#0#250#205'R'#0#0#0#0#0#0#0#0#0#136#4#0#0#0#0#0#0#0#0#0#0'h'
|
||||
+#3#0#0#0'|'#167#0#5'9'#178#0#0#0#0#0#0#0#0#0#0#255#255#0#255#255#255#0#0'L'
|
||||
+#218#0#221'W'#255#0#0#255#255#0#255#255#255#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0
|
||||
+#0#0#0#236'M'#0' '#161#255#0#0#138'v'#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#0
|
||||
+#0#0#0#0#255#0#0'#p'#226#0#0#151#168#0#19#171#150#0#0'n'#204#0#4#29#151#0#0
|
||||
+#255#0#0#0#0#0#0#0#0#0#0#0#0'd'#0#0#232#31#0#0'!'#231#0#0#222'-'#0#0#0#0#0#0
|
||||
+#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#8#0#0#0#0#224#13#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#251#255#0#255#255#254#0#0#0#0#255
|
||||
+#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#255
|
||||
+#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#255#255#255#0#0#0#0#0'~'#0#0#0#0#255
|
||||
+#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#23#0#0#252#3#0#0#0#0#255#0#0#0
|
||||
+#255#0#0#0#255#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#231' '#0#0'!'#230#0#0#221
|
||||
+'-'#0#0#0#0#0#0#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#255#0#0#0#255#0#0#0#255#0#0#0#0#0#255#0#0#0#0#0#0#0'8'#194#0#0#0#0#0#0'}'
|
||||
+#185#0#13#154#152#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#8#246#0#0
|
||||
+#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#255#0#0#4'0'#191#0#0#255#0#0#0#0#4#0#0
|
||||
+#0#0#0#0'z'#133#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0
|
||||
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#242#161#11#0#0#0'd'#0#249#224'b'#0#0#255#0#0#0#0#0#0#0#0#0#255#0#0#0#255
|
||||
+#0#0#0#255#0#0#0#0#0#3#133#0#0#0#0#255#0#0#0#255#0#0#0#255#0#255#0#0#0#0#0#0
|
||||
+#0#0#163#0#7's'#189#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0#0#255#0#0
|
||||
+#0#255#0#0#0#255#0#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0
|
||||
+#23#0#0#255#0#0#0#0'd'#0#0#12#163#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#5'0'
|
||||
+#189#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0
|
||||
+#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#255#255
|
||||
+#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255
|
||||
+#0#0#0#255#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#255#0
|
||||
+#255#255#255#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0
|
||||
+#255#255#255#0#0#255#255#0#251#222#136#0#0#255#255#0#218#151' '#0#0#0#0#0#0#0
|
||||
+#2't'#13'ActiveControl'#7#9'DescrMemo'#7'Caption'#6#12'FPDoc editor'#12'Clie'
|
||||
+'ntHeight'#2'u'#11'ClientWidth'#3#241#2#8'OnCreate'#7#10'FormCreate'#9'OnDes'
|
||||
+'troy'#7#11'FormDestroy'#8'OnResize'#7#10'FormResize'#0#12'TPageControl'#11
|
||||
+'PageControl'#4'Left'#2#17#6'Height'#2'u'#5'Width'#3#224#2#10'ActivePage'#7
|
||||
+#13'DescrTabSheet'#5'Align'#7#8'alClient'#8'TabIndex'#2#1#8'TabOrder'#2#0#11
|
||||
+'TabPosition'#7#8'tpBottom'#0#9'TTabSheet'#13'ShortTabSheet'#7'Caption'#6#13
|
||||
+'ShortTabSheet'#12'ClientHeight'#2'V'#11'ClientWidth'#3#220#2#0#5'TEdit'#9'S'
|
||||
+'hortEdit'#6'Height'#2#23#5'Width'#3#218#2#5'Align'#7#5'alTop'#19'BorderSpac'
|
||||
+'ing.Right'#2#2#8'OnChange'#7#20'ShortEditEditingDone'#13'OnEditingDone'#7#20
|
||||
+'ShortEditEditingDone'#8'TabOrder'#2#0#4'Text'#6#9'ShortEdit'#0#0#7'TButton'
|
||||
+#12'CreateButton'#21'AnchorSideTop.Control'#7#9'ShortEdit'#18'AnchorSideTop.'
|
||||
+'Side'#7#9'asrBottom'#4'Left'#2#6#6'Height'#2#29#3'Top'#2#29#5'Width'#2'b'#8
|
||||
+'AutoSize'#9#20'BorderSpacing.Around'#2#6#7'Caption'#6#12'CreateButton'#7'On'
|
||||
+'Click'#7#17'CreateButtonClick'#8'TabOrder'#2#1#0#0#7'TButton'#10'SaveButton'
|
||||
+#22'AnchorSideLeft.Control'#7#12'CreateButton'#19'AnchorSideLeft.Side'#7#9'a'
|
||||
+'srBottom'#21'AnchorSideTop.Control'#7#12'CreateButton'#4'Left'#2'n'#6'Heigh'
|
||||
+'t'#2#29#3'Top'#2#29#5'Width'#2'W'#8'AutoSize'#9#18'BorderSpacing.Left'#2#6#7
|
||||
+'Caption'#6#10'SaveButton'#7'OnClick'#7#15'SaveButtonClick'#8'TabOrder'#2#2#0
|
||||
+#0#0#9'TTabSheet'#13'DescrTabSheet'#7'Caption'#6#13'DescrTabSheet'#12'Client'
|
||||
+'Height'#2'V'#11'ClientWidth'#3#220#2#0#5'TMemo'#9'DescrMemo'#6'Height'#2'R'
|
||||
+#5'Width'#3#218#2#5'Align'#7#8'alClient'#19'BorderSpacing.Right'#2#2#20'Bord'
|
||||
+'erSpacing.Bottom'#2#4#13'Lines.Strings'#1#6#9'DescrMemo'#0#8'OnChange'#7#15
|
||||
+'DescrMemoChange'#8'TabOrder'#2#0#0#0#0#9'TTabSheet'#14'ErrorsTabSheet'#7'Ca'
|
||||
+'ption'#6#14'ErrorsTabSheet'#12'ClientHeight'#2'V'#11'ClientWidth'#3#220#2#0
|
||||
+#5'TMemo'#10'ErrorsMemo'#6'Height'#2'R'#5'Width'#3#218#2#5'Align'#7#8'alClie'
|
||||
+'nt'#19'BorderSpacing.Right'#2#2#20'BorderSpacing.Bottom'#2#4#13'Lines.Strin'
|
||||
+'gs'#1#6#10'ErrorsMemo'#0#8'OnChange'#7#16'ErrorsMemoChange'#8'TabOrder'#2#0
|
||||
+#0#0#0#9'TTabSheet'#15'SeeAlsoTabSheet'#7'Caption'#6#15'SeeAlsoTabSheet'#12
|
||||
+'ClientHeight'#2'V'#11'ClientWidth'#3#220#2#0#8'TListBox'#11'LinkListBox'#21
|
||||
+'AnchorSideTop.Control'#7#13'AddLinkButton'#18'AnchorSideTop.Side'#7#9'asrBo'
|
||||
+'ttom'#6'Height'#2'1'#3'Top'#2'!'#5'Width'#3#218#2#5'Align'#7#8'alBottom'#7
|
||||
+'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#8'akBottom'#0#17'BorderSpacing.To'
|
||||
+'p'#2#4#19'BorderSpacing.Right'#2#2#20'BorderSpacing.Bottom'#2#4#7'OnClick'#7
|
||||
+#16'LinkListBoxClick'#8'TabOrder'#2#0#8'TopIndex'#2#255#0#0#7'TButton'#13'Ad'
|
||||
+'dLinkButton'#23'AnchorSideRight.Control'#7#16'DeleteLinkButton'#4'Left'#3
|
||||
+#241#1#6'Height'#2#29#5'Width'#2'i'#7'Anchors'#11#5'akTop'#7'akRight'#0#8'Au'
|
||||
+'toSize'#9#19'BorderSpacing.Right'#2#6#7'Caption'#6#13'AddLinkButton'#7'OnCl'
|
||||
+'ick'#7#18'AddLinkButtonClick'#8'TabOrder'#2#1#0#0#7'TButton'#16'DeleteLinkB'
|
||||
+'utton'#23'AnchorSideRight.Control'#7#15'SeeAlsoTabSheet'#20'AnchorSideRight'
|
||||
+'.Side'#7#9'asrBottom'#4'Left'#3'`'#2#6'Height'#2#29#5'Width'#2'z'#7'Anchors'
|
||||
+#11#5'akTop'#7'akRight'#0#8'AutoSize'#9#19'BorderSpacing.Right'#2#2#7'Captio'
|
||||
+'n'#6#16'DeleteLinkButton'#7'OnClick'#7#21'DeleteLinkButtonClick'#8'TabOrder'
|
||||
+#2#2#0#0#5'TEdit'#12'LinkTextEdit'#22'AnchorSideLeft.Control'#7#14'LinkIdCom'
|
||||
+'boBox'#19'AnchorSideLeft.Side'#7#9'asrBottom'#23'AnchorSideRight.Control'#7
|
||||
+#13'AddLinkButton'#4'Left'#3#229#0#6'Height'#2#27#3'Top'#2#1#5'Width'#3#8#1#7
|
||||
+'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'#0#8'AutoSize'#9#18'BorderSpacing.'
|
||||
+'Left'#2#4#19'BorderSpacing.Right'#2#4#8'OnChange'#7#10'LinkChange'#8'TabOrd'
|
||||
+'er'#2#3#4'Text'#6#12'LinkTextEdit'#0#0#9'TComboBox'#14'LinkIdComboBox'#6'He'
|
||||
+'ight'#2#27#3'Top'#2#1#5'Width'#3#225#0#16'AutoCompleteText'#11#22'cbactEndO'
|
||||
+'fLineComplete'#20'cbactSearchAscending'#0#8'AutoSize'#9#9'MaxLength'#2#0#8
|
||||
+'OnChange'#7#10'LinkChange'#8'TabOrder'#2#4#4'Text'#6#14'LinkIdComboBox'#0#0
|
||||
+#0#9'TTabSheet'#15'ExampleTabSheet'#7'Caption'#6#15'ExampleTabSheet'#12'Clie'
|
||||
+'ntHeight'#2'V'#11'ClientWidth'#3#220#2#0#5'TEdit'#11'ExampleEdit'#6'Height'
|
||||
+#2#23#5'Width'#3#218#2#5'Align'#7#5'alTop'#19'BorderSpacing.Right'#2#2#8'OnC'
|
||||
+'hange'#7#17'ExampleEditChange'#8'TabOrder'#2#0#4'Text'#6#11'ExampleEdit'#0#0
|
||||
+#7'TButton'#19'BrowseExampleButton'#23'AnchorSideRight.Control'#7#15'Example'
|
||||
+'TabSheet'#20'AnchorSideRight.Side'#7#9'asrBottom'#4'Left'#3'>'#2#6'Height'#2
|
||||
+#29#3'Top'#2#28#5'Width'#3#156#0#7'Anchors'#11#5'akTop'#7'akRight'#0#8'AutoS'
|
||||
+'ize'#9#19'BorderSpacing.Right'#2#2#7'Caption'#6#19'BrowseExampleButton'#7'O'
|
||||
+'nClick'#7#24'BrowseExampleButtonClick'#8'TabOrder'#2#1#0#0#0#9'TTabSheet'#17
|
||||
+'InheritedTabSheet'#7'Caption'#6#17'InheritedTabSheet'#12'ClientHeight'#2'V'
|
||||
+#11'ClientWidth'#3#220#2#0#6'TLabel'#19'InheritedShortLabel'#6'Height'#2#20#3
|
||||
,'Top'#2#2#5'Width'#3#220#2#5'Align'#7#5'alTop'#17'BorderSpacing.Top'#2#2#7'C'
|
||||
+'aption'#6#19'InheritedShortLabel'#11'ParentColor'#8#0#0#5'TEdit'#18'Inherit'
|
||||
+'edShortEdit'#22'AnchorSideLeft.Control'#7#17'InheritedTabSheet'#21'AnchorSi'
|
||||
+'deTop.Control'#7#19'InheritedShortLabel'#18'AnchorSideTop.Side'#7#9'asrBott'
|
||||
+'om'#23'AnchorSideRight.Control'#7#17'InheritedTabSheet'#20'AnchorSideRight.'
|
||||
+'Side'#7#9'asrBottom'#6'Height'#2#23#3'Top'#2#24#5'Width'#3#220#2#7'Anchors'
|
||||
+#11#5'akTop'#6'akLeft'#7'akRight'#0#17'BorderSpacing.Top'#2#2#8'ReadOnly'#9#8
|
||||
+'TabOrder'#2#0#4'Text'#6#18'InheritedShortEdit'#0#0#7'TButton'#21'MoveToInhe'
|
||||
+'ritedButton'#6'Height'#2#29#3'Top'#2'6'#5'Width'#3#158#0#8'AutoSize'#9#7'Ca'
|
||||
+'ption'#6#21'MoveToInheritedButton'#7'OnClick'#7#26'MoveToInheritedButtonCli'
|
||||
+'ck'#8'TabOrder'#2#1#0#0#7'TButton'#23'CopyFromInheritedButton'#22'AnchorSid'
|
||||
+'eLeft.Control'#7#21'MoveToInheritedButton'#19'AnchorSideLeft.Side'#7#9'asrB'
|
||||
+'ottom'#21'AnchorSideTop.Control'#7#21'MoveToInheritedButton'#18'AnchorSideT'
|
||||
+'op.Side'#7#9'asrCenter'#4'Left'#3#168#0#6'Height'#2#29#3'Top'#2'6'#5'Width'
|
||||
+#3#175#0#8'AutoSize'#9#18'BorderSpacing.Left'#2#10#7'Caption'#6#23'CopyFromI'
|
||||
+'nheritedButton'#7'OnClick'#7#28'CopyFromInheritedButtonClick'#8'TabOrder'#2
|
||||
+#2#0#0#0#0#6'TPanel'#6'Panel1'#6'Height'#2'u'#5'Width'#2#17#5'Align'#7#6'alL'
|
||||
+'eft'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#2'u'#11'ClientWidth'#2#17
|
||||
+#11'FullRepaint'#8#14'ParentShowHint'#8#8'ShowHint'#9#8'TabOrder'#2#1#0#12'T'
|
||||
+'SpeedButton'#16'BoldFormatButton'#6'Height'#2#17#5'Width'#2#17#5'Align'#7#5
|
||||
+'alTop'#5'Color'#7#9'clBtnFace'#10'Glyph.Data'#10#190#4#0#0#186#4#0#0'BM'#186
|
||||
+#4#0#0#0#0#0#0'6'#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0' '#0#0#0#0#0#132#4#0#0
|
||||
+'d'#0#0#0'd'#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#219#152' '#0#0#14#165#0#243
|
||||
+#165#13#0#0#0'g'#0#250#226'c'#0#0#255#0#0#0#0#0#0#0#255#255#0#255#255#0#0#0#0
|
||||
+#0#0#221#255#255#0#0#2'|'#0#250#205'R'#0#0#0#0#0#0#0#0#0#136#4#0#0#0#0#0#0#0
|
||||
+#0#0#0'h'#3#0#0#0'|'#167#0#5'9'#178#0#0#0#0#0#0#0#0#0#0#255#255#0#255#255#255
|
||||
+#0#0'L'#218#0#221'W'#255#0#0#255#255#0#255#255#255#0#0#255#0#0#0#0#0#0#0#255
|
||||
+#0#0#0#0#0#0#0#236'M'#0' '#161#255#0#0#138'v'#0#0#0#0#0#0#255#0#0#0#0#0#0#0
|
||||
+#255#0#0#0#0#0#0#0#255#0#0'#p'#226#0#0#151#168#0#19#171#150#0#0'n'#204#0#4#29
|
||||
+#151#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0'd'#0#0#232#31#0#0'!'#231#0#0#222'-'#0#0
|
||||
+#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#8#0#0#0#0#224#13#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#251#255#0#255#255#254#0#0
|
||||
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0
|
||||
+#255#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255#0#0#255#255#255#0#0#0#0#0'~'#0
|
||||
+#0#0#0#255#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#23#0#0#252#3#0#0#0#0
|
||||
+#255#0#0#0#255#0#0#0#255#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#231' '#0#0'!'
|
||||
+#230#0#0#221'-'#0#0#0#0#0#0#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#255#0#0#0#0#0#0#0'8'#194#0#0#0
|
||||
+#0#0#0'}'#185#0#13#154#152#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0
|
||||
+#8#246#0#0#0#0#0#0#0#0#255#0#0#0#255#0#0#0#255#0#255#0#0#4'0'#191#0#0#255#0#0
|
||||
+#0#0#4#0#0#0#0#0#0'z'#133#0#0#255#0#0#0#0#0#0#0#255#0#0#0#0#0#255#0#0#0#255#0
|
||||
+#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#255#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#242#161#11#0#0#0'd'#0#249#224'b'#0#0#255#0#0#0#0#0#0#0#0#0#255
|
||||
+#0#0#0#255#0#0#0#255#0#0#0#0#0#3#133#0#0#0#0#255#0#0#0#255#0#0#0#255#0#255#0
|
||||
+#0#0#0#0#0#0#0#163#0#7's'#189#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0#0
|
||||
+#0#255#0#0#0#255#0#0#0#255#0#255#255#0#255#255#255#0#0#0#0#255#0#0#0#255#0#0
|
||||
+#0#255#0#0#23#0#0#255#0#0#0#0'd'#0#0#12#163#0#0#0#0#0#0#255#0#0#0#0#0#0#0#255
|
||||
+#0#0#5'0'#189#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#255#0#0#0
|
||||
+#255#0#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0
|
||||
+#255#255#255#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0
|
||||
+#0#0#255#0#0#0#255#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255
|
||||
+#255#0#255#255#255#0#0#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255
|
||||
+#255#0#255#255#255#0#0#255#255#0#251#222#136#0#0#255#255#0#218#151' '#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#184#163#18#0#152#28#241
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#9'NumGlyphs'#2#0#7'OnClick'#7
|
||||
+#17'FormatButtonClick'#0#0#12'TSpeedButton'#18'ItalicFormatButton'#3'Tag'#2#1
|
||||
+#6'Height'#2#17#3'Top'#2#17#5'Width'#2#17#5'Align'#7#5'alTop'#5'Color'#7#9'c'
|
||||
+'lBtnFace'#10'Glyph.Data'#10#190#4#0#0#186#4#0#0'BM'#186#4#0#0#0#0#0#0'6'#0#0
|
||||
+#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0' '#0#0#0#0#0#132#4#0#0'd'#0#0#0'd'#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#25#0#0#0#0#0#0#0'd'#253'F'#0#0#0#1#0#239#239
|
||||
,#136#0#255#255#255#0#0#0#0#0#4#0#0#0#0#4#0#0#1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#136#4#0#0#197'}N'#0#8#4#0#0#128#0#0#0#1#0#24#0#230#2#224#0#0#0#0#0
|
||||
+#16#0#16#0#152'N$'#0'H'#129'j'#0#0#0#0#0'@'#0#0#0#136#228'D'#0#244#167#18#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#8#168#18#0#251#224#201#0#197'}N'#0' '#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#212'l'#187#0#0#0'h'#0#26#26#198#0#0#0#0#0#0#0#156#0#197'}N'#0
|
||||
+#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#252#226#206#0#251#224#201
|
||||
+#0#197'}N'#0#255#0#0#0#0#0#0#0'O'#7'"'#0#174#133'j'#0#181#142'v'#0#188#153
|
||||
+#129#0#195#162#142#0#211#139'h'#0#225#143'p'#0#195'}C'#0#251#224#201#0#251
|
||||
+#224#201#0#251#224#201#0#251#224#201#0#228#157'X'#0#228#157'X'#0#250#223#199
|
||||
+#0#197'}N'#0#162#0#0#0#0#0#0#0#164'uV'#0#171'c'#0#177#137'o'#0#198#131'U'#0
|
||||
+#239#206#186#0#221#255#255#0#135#238#199#0#228#174'z'#0#228#157'X'#0#229#157
|
||||
+'\'#0#228#174'z'#0#228#157'X'#0#228#174'z'#0#250#223#199#0#246#218#189#0#0#0
|
||||
+#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#195'Q'#0#239#182
|
||||
+#154#0#234#243#232#0#228#157'X'#0#228#157'X'#0#254#232#214#0#253#231#214#0
|
||||
+#252#227#207#0#252#228#207#0#250#225#202#0#246#217#188#0#247#242#236#0#197'}'
|
||||
+'N'#0#0#0#0#255#0#0#0#255#175#150#150#255#164'tV'#0#170'~b'#0#177#137'n'#0
|
||||
+#234#182#151#0#243#243#234#0#237#241#230#0#228#174'z'#0#228#157'X'#0#197'}N'
|
||||
+#0#250#224#199#0#251#226#201#0#249#223#197#0#244#214#184#0#246#216#180#0#175
|
||||
+#150#150#255#0#0#0#255#0#0#0#255#154'eB'#0#160'oO'#0#167'y\'#0#201#139'a'#0
|
||||
+#230#181#146#0#226#167#129#0#225#167#129#0#197'}N'#0#254#252#251#0#197'}N'#0
|
||||
+#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#0#0#0#255#0#0#0#255#175
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#255#255#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#184#163#18#0#152
|
||||
+#28#241#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#9'NumGlyphs'#2#0#7'OnCl'
|
||||
+'ick'#7#17'FormatButtonClick'#0#0#12'TSpeedButton'#18'ItalicFormatButton'#3
|
||||
+'Tag'#2#1#6'Height'#2#17#3'Top'#2#17#5'Width'#2#17#5'Align'#7#5'alTop'#5'Col'
|
||||
+'or'#7#9'clBtnFace'#10'Glyph.Data'#10#190#4#0#0#186#4#0#0'BM'#186#4#0#0#0#0#0
|
||||
+#0'6'#0#0#0'('#0#0#0#17#0#0#0#17#0#0#0#1#0' '#0#0#0#0#0#132#4#0#0'd'#0#0#0'd'
|
||||
+#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#25#0#0#0#0#0#0#0'd'#253'F'#0#0#0#1#0
|
||||
,#239#239#136#0#255#255#255#0#0#0#0#0#4#0#0#0#0#4#0#0#1#0#0#0#0#0#0#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#136#4#0#0#197'}N'#0#8#4#0#0#128#0#0#0#1#0#24#0#230#2#224#0#0
|
||||
+#0#0#0#16#0#16#0#152'N$'#0'H'#129'j'#0#0#0#0#0'@'#0#0#0#136#228'D'#0#244#167
|
||||
+#18#0#0#0#0#0#0#0#0#0#0#0#0#0#8#168#18#0#251#224#201#0#197'}N'#0' '#0#0#0#0#0
|
||||
+#0#0#0#0#0#0#0#0#0#0#212'l'#187#0#0#0'h'#0#26#26#198#0#0#0#0#0#0#0#156#0#197
|
||||
+'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#252#226#206#0#251
|
||||
+#224#201#0#197'}N'#0#255#0#0#0#0#0#0#0'O'#7'"'#0#174#133'j'#0#181#142'v'#0
|
||||
+#188#153#129#0#195#162#142#0#211#139'h'#0#225#143'p'#0#195'}C'#0#251#224#201
|
||||
+#0#251#224#201#0#251#224#201#0#251#224#201#0#228#157'X'#0#228#157'X'#0#250
|
||||
+#223#199#0#197'}N'#0#162#0#0#0#0#0#0#0#164'uV'#0#171'c'#0#177#137'o'#0#198
|
||||
+#131'U'#0#239#206#186#0#221#255#255#0#135#238#199#0#228#174'z'#0#228#157'X'#0
|
||||
+#229#157'\'#0#228#174'z'#0#228#157'X'#0#228#174'z'#0#250#223#199#0#246#218
|
||||
+#189#0#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#0#0#0#255#195'Q'#0
|
||||
+#239#182#154#0#234#243#232#0#228#157'X'#0#228#157'X'#0#254#232#214#0#253#231
|
||||
+#214#0#252#227#207#0#252#228#207#0#250#225#202#0#246#217#188#0#247#242#236#0
|
||||
+#197'}N'#0#0#0#0#255#0#0#0#255#175#150#150#255#164'tV'#0#170'~b'#0#177#137'n'
|
||||
+#0#234#182#151#0#243#243#234#0#237#241#230#0#228#174'z'#0#228#157'X'#0#197'}'
|
||||
+'N'#0#250#224#199#0#251#226#201#0#249#223#197#0#244#214#184#0#246#216#180#0
|
||||
+#175#150#150#255#0#0#0#255#0#0#0#255#154'eB'#0#160'oO'#0#167'y\'#0#201#139'a'
|
||||
+#0#230#181#146#0#226#167#129#0#225#167#129#0#197'}N'#0#254#252#251#0#197'}N'
|
||||
+#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#197'}N'#0#0#0#0#255#0#0#0#255#175
|
||||
+#150#150#255#150'_<'#0#157'jH'#0#224#187#155#0#202#141'e'#0#234#184#153#0#221
|
||||
+#165'~'#0#221#166#128#0#208#169#140#0#204#147'n'#0#255#255#255#0#255#255#255
|
||||
+#0#255#251#247#0#255#248#241#0#228#175#140#0#175#150#150#255#0#0#0#255#0#0#0
|
||||
|
@ -96,7 +96,9 @@ type
|
||||
procedure CopyFromInheritedButtonClick(Sender: TObject);
|
||||
procedure CreateButtonClick(Sender: TObject);
|
||||
procedure DeleteLinkButtonClick(Sender: TObject);
|
||||
procedure DocumentationTagChange(Sender: TObject);
|
||||
procedure DescrMemoChange(Sender: TObject);
|
||||
procedure ErrorsMemoChange(Sender: TObject);
|
||||
procedure ExampleEditChange(Sender: TObject);
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
procedure FormResize(Sender: TObject);
|
||||
@ -106,6 +108,7 @@ type
|
||||
procedure ApplicationIdle(Sender: TObject; var Done: Boolean);
|
||||
procedure MoveToInheritedButtonClick(Sender: TObject);
|
||||
procedure SaveButtonClick(Sender: TObject);
|
||||
procedure ShortEditEditingDone(Sender: TObject);
|
||||
private
|
||||
FCaretXY: TPoint;
|
||||
FModified: Boolean;
|
||||
@ -114,6 +117,7 @@ type
|
||||
fSourceFilename: string;
|
||||
fChain: TCodeHelpElementChain;
|
||||
FOldValues: TFPDocElementValues;
|
||||
FOldVisualValues: TFPDocElementValues;
|
||||
function GetDoc: TXMLdocument;
|
||||
function GetDocFile: TLazFPDocFile;
|
||||
function GetSourceFilename: string;
|
||||
@ -426,6 +430,12 @@ begin
|
||||
Save;
|
||||
end;
|
||||
|
||||
procedure TFPDocEditor.ShortEditEditingDone(Sender: TObject);
|
||||
begin
|
||||
if ShortEdit.Text<>FOldVisualValues[fpdiShort] then
|
||||
Modified:=true;
|
||||
end;
|
||||
|
||||
function TFPDocEditor.GetContextTitle(Element: TCodeHelpElement): string;
|
||||
// get codetools path. for example: TButton.Align
|
||||
begin
|
||||
@ -619,24 +629,31 @@ begin
|
||||
if EnabledState then
|
||||
begin
|
||||
FOldValues:=Element.FPDocFile.GetValuesFromNode(Element.ElementNode);
|
||||
ShortEdit.Text := ConvertLineEndings(FOldValues[fpdiShort]);
|
||||
DescrMemo.Lines.Text := ConvertLineEndings(FOldValues[fpdiDescription]);
|
||||
ErrorsMemo.Lines.Text := ConvertLineEndings(FOldValues[fpdiErrors]);
|
||||
LinkListBox.Items.Text := ConvertLineEndings(FOldValues[fpdiSeeAlso]);
|
||||
FOldVisualValues[fpdiShort]:=ReplaceLineEndings(FOldValues[fpdiShort],'');
|
||||
FOldVisualValues[fpdiDescription]:=ConvertLineEndings(FOldValues[fpdiDescription]);
|
||||
FOldVisualValues[fpdiErrors]:=ConvertLineEndings(FOldValues[fpdiErrors]);
|
||||
FOldVisualValues[fpdiSeeAlso]:=ConvertLineEndings(FOldValues[fpdiSeeAlso]);
|
||||
FOldVisualValues[fpdiExample]:=ConvertLineEndings(FOldValues[fpdiExample]);
|
||||
DebugLn(['TFPDocEditor.LoadGUIValues Short="',dbgstr(FOldValues[fpdiShort]),'"']);
|
||||
LinkListBox.Items.Text := FOldVisualValues[fpdiSeeAlso];
|
||||
LinkIdComboBox.Text := '';
|
||||
LinkTextEdit.Clear;
|
||||
ExampleEdit.Text := ConvertLineEndings(FOldValues[fpdiExample]);
|
||||
end
|
||||
else
|
||||
begin
|
||||
ShortEdit.Text := lisCodeHelpNoDocumentation;
|
||||
DescrMemo.Lines.Text := lisCodeHelpNoDocumentation;
|
||||
ErrorsMemo.Lines.Text := lisCodeHelpNoDocumentation;
|
||||
FOldVisualValues[fpdiShort]:=lisCodeHelpNoDocumentation;
|
||||
FOldVisualValues[fpdiDescription]:=lisCodeHelpNoDocumentation;
|
||||
FOldVisualValues[fpdiErrors]:=lisCodeHelpNoDocumentation;
|
||||
FOldVisualValues[fpdiSeeAlso]:=lisCodeHelpNoDocumentation;
|
||||
FOldVisualValues[fpdiExample]:=lisCodeHelpNoDocumentation;
|
||||
LinkIdComboBox.Text := lisCodeHelpNoDocumentation;
|
||||
LinkTextEdit.Text := lisCodeHelpNoDocumentation;
|
||||
LinkListBox.Clear;
|
||||
ExampleEdit.Text := lisCodeHelpNoDocumentation;
|
||||
end;
|
||||
ShortEdit.Text := FOldVisualValues[fpdiShort];
|
||||
DescrMemo.Lines.Text := FOldVisualValues[fpdiDescription];
|
||||
ErrorsMemo.Lines.Text := FOldVisualValues[fpdiErrors];
|
||||
ExampleEdit.Text := FOldVisualValues[fpdiExample];
|
||||
|
||||
ShortEdit.Enabled := EnabledState;
|
||||
DescrMemo.Enabled := EnabledState;
|
||||
@ -929,9 +946,16 @@ begin
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
procedure TFPDocEditor.DocumentationTagChange(Sender: TObject);
|
||||
procedure TFPDocEditor.ErrorsMemoChange(Sender: TObject);
|
||||
begin
|
||||
Modified := True;
|
||||
if ErrorsMemo.Text<>FOldVisualValues[fpdiErrors] then
|
||||
Modified:=true;
|
||||
end;
|
||||
|
||||
procedure TFPDocEditor.ExampleEditChange(Sender: TObject);
|
||||
begin
|
||||
if ExampleEdit.Text<>FOldVisualValues[fpdiExample] then
|
||||
Modified:=true;
|
||||
end;
|
||||
|
||||
function TFPDocEditor.MakeLink: String;
|
||||
@ -1012,6 +1036,12 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFPDocEditor.DescrMemoChange(Sender: TObject);
|
||||
begin
|
||||
if DescrMemo.Text<>FOldVisualValues[fpdiDescription] then
|
||||
Modified:=true;
|
||||
end;
|
||||
|
||||
initialization
|
||||
{$I fpdoceditwindow.lrs}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user