* added Win32 RichText save/loading

* updated simpe test (fixing utf8toansi filenames) 

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@845 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
skalogryz
2009-06-15 20:40:16 +00:00
parent 1ab05002a9
commit f38cb7d9ab
6 changed files with 257 additions and 144 deletions

View File

@ -6,7 +6,7 @@
<MainUnit Value="0"/> <MainUnit Value="0"/>
<TargetFileExt Value=""/> <TargetFileExt Value=""/>
<UseXPManifest Value="True"/> <UseXPManifest Value="True"/>
<ActiveEditorIndexAtStart Value="4"/> <ActiveEditorIndexAtStart Value="0"/>
</General> </General>
<VersionInfo> <VersionInfo>
<ProjectVersion Value=""/> <ProjectVersion Value=""/>
@ -32,14 +32,14 @@
<PackageName Value="LCL"/> <PackageName Value="LCL"/>
</Item2> </Item2>
</RequiredPackages> </RequiredPackages>
<Units Count="40"> <Units Count="44">
<Unit0> <Unit0>
<Filename Value="project1.lpr"/> <Filename Value="project1.lpr"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="project1"/> <UnitName Value="project1"/>
<CursorPos X="32" Y="12"/> <CursorPos X="32" Y="12"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="50"/> <UsageCount Value="56"/>
</Unit0> </Unit0>
<Unit1> <Unit1>
<Filename Value="unit1.pas"/> <Filename Value="unit1.pas"/>
@ -47,10 +47,10 @@
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="Unit1"/> <UnitName Value="Unit1"/>
<CursorPos X="26" Y="52"/> <CursorPos X="1" Y="98"/>
<TopLine Value="41"/> <TopLine Value="94"/>
<EditorIndex Value="0"/> <EditorIndex Value="0"/>
<UsageCount Value="50"/> <UsageCount Value="56"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit1> </Unit1>
<Unit2> <Unit2>
@ -58,84 +58,84 @@
<UnitName Value="CarbonRichMemo"/> <UnitName Value="CarbonRichMemo"/>
<CursorPos X="31" Y="137"/> <CursorPos X="31" Y="137"/>
<TopLine Value="114"/> <TopLine Value="114"/>
<UsageCount Value="13"/> <UsageCount Value="12"/>
</Unit2> </Unit2>
<Unit3> <Unit3>
<Filename Value="../RichMemo/win32/win32richmemo.pas"/> <Filename Value="../RichMemo/win32/win32richmemo.pas"/>
<UnitName Value="Win32RichMemo"/> <UnitName Value="Win32RichMemo"/>
<CursorPos X="1" Y="32"/> <CursorPos X="1" Y="32"/>
<TopLine Value="15"/> <TopLine Value="15"/>
<UsageCount Value="7"/> <UsageCount Value="6"/>
</Unit3> </Unit3>
<Unit4> <Unit4>
<Filename Value="../RichMemo/richmemofactory.pas"/> <Filename Value="../RichMemo/richmemofactory.pas"/>
<UnitName Value="RichMemoFactory"/> <UnitName Value="RichMemoFactory"/>
<CursorPos X="20" Y="22"/> <CursorPos X="20" Y="22"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="7"/> <UsageCount Value="6"/>
</Unit4> </Unit4>
<Unit5> <Unit5>
<Filename Value="../RichMemo/wsrichmemo.pas"/> <Filename Value="../RichMemo/wsrichmemo.pas"/>
<UnitName Value="WSRichMemo"/> <UnitName Value="WSRichMemo"/>
<CursorPos X="32" Y="18"/> <CursorPos X="32" Y="18"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="7"/> <UsageCount Value="6"/>
</Unit5> </Unit5>
<Unit6> <Unit6>
<Filename Value="../lazarus/lcl/widgetset/wsstdctrls.pp"/> <Filename Value="../lazarus/lcl/widgetset/wsstdctrls.pp"/>
<UnitName Value="WSStdCtrls"/> <UnitName Value="WSStdCtrls"/>
<CursorPos X="32" Y="140"/> <CursorPos X="32" Y="140"/>
<TopLine Value="126"/> <TopLine Value="126"/>
<UsageCount Value="7"/> <UsageCount Value="6"/>
</Unit6> </Unit6>
<Unit7> <Unit7>
<Filename Value="../lazarus/lcl/widgetset/wscontrols.pp"/> <Filename Value="../lazarus/lcl/widgetset/wscontrols.pp"/>
<UnitName Value="WSControls"/> <UnitName Value="WSControls"/>
<CursorPos X="33" Y="115"/> <CursorPos X="33" Y="115"/>
<TopLine Value="100"/> <TopLine Value="100"/>
<UsageCount Value="7"/> <UsageCount Value="6"/>
</Unit7> </Unit7>
<Unit8> <Unit8>
<Filename Value="../lazarus/lcl/lcltype.pp"/> <Filename Value="../lazarus/lcl/lcltype.pp"/>
<UnitName Value="LCLType"/> <UnitName Value="LCLType"/>
<CursorPos X="3" Y="2330"/> <CursorPos X="3" Y="2330"/>
<TopLine Value="2316"/> <TopLine Value="2316"/>
<UsageCount Value="8"/> <UsageCount Value="7"/>
</Unit8> </Unit8>
<Unit9> <Unit9>
<Filename Value="../lazarus/lcl/interfaces/carbon/carbonedits.pp"/> <Filename Value="../lazarus/lcl/interfaces/carbon/carbonedits.pp"/>
<UnitName Value="CarbonEdits"/> <UnitName Value="CarbonEdits"/>
<CursorPos X="3" Y="140"/> <CursorPos X="3" Y="140"/>
<TopLine Value="124"/> <TopLine Value="124"/>
<UsageCount Value="13"/> <UsageCount Value="12"/>
</Unit9> </Unit9>
<Unit10> <Unit10>
<Filename Value="../lazarus/lcl/widgetset/wscomctrls.pp"/> <Filename Value="../lazarus/lcl/widgetset/wscomctrls.pp"/>
<UnitName Value="WSComCtrls"/> <UnitName Value="WSComCtrls"/>
<CursorPos X="1" Y="144"/> <CursorPos X="1" Y="144"/>
<TopLine Value="144"/> <TopLine Value="144"/>
<UsageCount Value="7"/> <UsageCount Value="6"/>
</Unit10> </Unit10>
<Unit11> <Unit11>
<Filename Value="../lazarus/lcl/interfaces/carbon/carbonwsstdctrls.pp"/> <Filename Value="../lazarus/lcl/interfaces/carbon/carbonwsstdctrls.pp"/>
<UnitName Value="CarbonWSStdCtrls"/> <UnitName Value="CarbonWSStdCtrls"/>
<CursorPos X="20" Y="39"/> <CursorPos X="20" Y="39"/>
<TopLine Value="30"/> <TopLine Value="30"/>
<UsageCount Value="11"/> <UsageCount Value="10"/>
</Unit11> </Unit11>
<Unit12> <Unit12>
<Filename Value="../fpc/packages/univint/src/MacOSAll.pas"/> <Filename Value="../fpc/packages/univint/src/MacOSAll.pas"/>
<UnitName Value="MacOSAll"/> <UnitName Value="MacOSAll"/>
<CursorPos X="3" Y="35065"/> <CursorPos X="3" Y="35065"/>
<TopLine Value="35051"/> <TopLine Value="35051"/>
<UsageCount Value="12"/> <UsageCount Value="11"/>
</Unit12> </Unit12>
<Unit13> <Unit13>
<Filename Value="../lazarus/lcl/interfaces/carbon/carbongdiobjects.pp"/> <Filename Value="../lazarus/lcl/interfaces/carbon/carbongdiobjects.pp"/>
<UnitName Value="CarbonGDIObjects"/> <UnitName Value="CarbonGDIObjects"/>
<CursorPos X="3" Y="1109"/> <CursorPos X="3" Y="1109"/>
<TopLine Value="1100"/> <TopLine Value="1100"/>
<UsageCount Value="25"/> <UsageCount Value="28"/>
<Bookmarks Count="1"> <Bookmarks Count="1">
<Item0 X="25" Y="150" ID="1"/> <Item0 X="25" Y="150" ID="1"/>
</Bookmarks> </Bookmarks>
@ -146,7 +146,7 @@
<UnitName Value="CarbonProc"/> <UnitName Value="CarbonProc"/>
<CursorPos X="13" Y="554"/> <CursorPos X="13" Y="554"/>
<TopLine Value="538"/> <TopLine Value="538"/>
<UsageCount Value="11"/> <UsageCount Value="10"/>
<Bookmarks Count="2"> <Bookmarks Count="2">
<Item0 X="25" Y="151" ID="1"/> <Item0 X="25" Y="151" ID="1"/>
<Item1 X="3" Y="536" ID="2"/> <Item1 X="3" Y="536" ID="2"/>
@ -157,98 +157,98 @@
<UnitName Value="Controls"/> <UnitName Value="Controls"/>
<CursorPos X="3" Y="2457"/> <CursorPos X="3" Y="2457"/>
<TopLine Value="2448"/> <TopLine Value="2448"/>
<UsageCount Value="10"/> <UsageCount Value="9"/>
</Unit15> </Unit15>
<Unit16> <Unit16>
<Filename Value="../fpc/rtl/objpas/sysutils/sysutilh.inc"/> <Filename Value="../fpc/rtl/objpas/sysutils/sysutilh.inc"/>
<CursorPos X="17" Y="34"/> <CursorPos X="17" Y="34"/>
<TopLine Value="2"/> <TopLine Value="2"/>
<UsageCount Value="8"/> <UsageCount Value="7"/>
</Unit16> </Unit16>
<Unit17> <Unit17>
<Filename Value="../fpc/rtl/bsd/system.pp"/> <Filename Value="../fpc/rtl/bsd/system.pp"/>
<UnitName Value="System"/> <UnitName Value="System"/>
<CursorPos X="64" Y="52"/> <CursorPos X="64" Y="52"/>
<TopLine Value="29"/> <TopLine Value="29"/>
<UsageCount Value="8"/> <UsageCount Value="7"/>
</Unit17> </Unit17>
<Unit18> <Unit18>
<Filename Value="../fpc/rtl/amiga/sysosh.inc"/> <Filename Value="../fpc/rtl/amiga/sysosh.inc"/>
<CursorPos X="22" Y="18"/> <CursorPos X="22" Y="18"/>
<TopLine Value="7"/> <TopLine Value="7"/>
<UsageCount Value="8"/> <UsageCount Value="7"/>
</Unit18> </Unit18>
<Unit19> <Unit19>
<Filename Value="../RichMemo/richmemo.pas"/> <Filename Value="../RichMemo/richmemo.pas"/>
<UnitName Value="RichMemo"/> <UnitName Value="RichMemo"/>
<CursorPos X="15" Y="39"/> <CursorPos X="15" Y="39"/>
<TopLine Value="23"/> <TopLine Value="23"/>
<UsageCount Value="12"/> <UsageCount Value="11"/>
</Unit19> </Unit19>
<Unit20> <Unit20>
<Filename Value="../lazarus/lcl/interfaces/carbon/carbonprivate.pp"/> <Filename Value="../lazarus/lcl/interfaces/carbon/carbonprivate.pp"/>
<UnitName Value="CarbonPrivate"/> <UnitName Value="CarbonPrivate"/>
<CursorPos X="17" Y="649"/> <CursorPos X="17" Y="649"/>
<TopLine Value="640"/> <TopLine Value="640"/>
<UsageCount Value="24"/> <UsageCount Value="27"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit20> </Unit20>
<Unit21> <Unit21>
<Filename Value="../lazarus/lcl/interfaces/carbon/carbonprivatecontrol.inc"/> <Filename Value="../lazarus/lcl/interfaces/carbon/carbonprivatecontrol.inc"/>
<CursorPos X="42" Y="499"/> <CursorPos X="42" Y="499"/>
<TopLine Value="495"/> <TopLine Value="495"/>
<UsageCount Value="9"/> <UsageCount Value="8"/>
</Unit21> </Unit21>
<Unit22> <Unit22>
<Filename Value="../lazarus/lcl/interfaces/carbon/carbondef.pp"/> <Filename Value="../lazarus/lcl/interfaces/carbon/carbondef.pp"/>
<UnitName Value="CarbonDef"/> <UnitName Value="CarbonDef"/>
<CursorPos X="17" Y="649"/> <CursorPos X="17" Y="649"/>
<TopLine Value="640"/> <TopLine Value="640"/>
<UsageCount Value="9"/> <UsageCount Value="8"/>
</Unit22> </Unit22>
<Unit23> <Unit23>
<Filename Value="../lazarus/lcl/graphics.pp"/> <Filename Value="../lazarus/lcl/graphics.pp"/>
<UnitName Value="Graphics"/> <UnitName Value="Graphics"/>
<CursorPos X="3" Y="59"/> <CursorPos X="3" Y="59"/>
<TopLine Value="45"/> <TopLine Value="45"/>
<UsageCount Value="9"/> <UsageCount Value="8"/>
</Unit23> </Unit23>
<Unit24> <Unit24>
<Filename Value="../lazarus/lcl/interfaces/carbon/carbondbgconsts.pp"/> <Filename Value="../lazarus/lcl/interfaces/carbon/carbondbgconsts.pp"/>
<UnitName Value="CarbonDbgConsts"/> <UnitName Value="CarbonDbgConsts"/>
<CursorPos X="1" Y="1"/> <CursorPos X="1" Y="1"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="8"/> <UsageCount Value="7"/>
</Unit24> </Unit24>
<Unit25> <Unit25>
<Filename Value="Unit1.lrs"/> <Filename Value="Unit1.lrs"/>
<CursorPos X="1" Y="1"/> <CursorPos X="1" Y="1"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="8"/> <UsageCount Value="7"/>
</Unit25> </Unit25>
<Unit26> <Unit26>
<Filename Value="../../../lazarus/ide/keymapping.pp"/> <Filename Value="../../../lazarus/ide/keymapping.pp"/>
<UnitName Value="KeyMapping"/> <UnitName Value="KeyMapping"/>
<CursorPos X="74" Y="1565"/> <CursorPos X="74" Y="1565"/>
<TopLine Value="1558"/> <TopLine Value="1558"/>
<UsageCount Value="8"/> <UsageCount Value="7"/>
</Unit26> </Unit26>
<Unit27> <Unit27>
<Filename Value="../../richmemo.pas"/> <Filename Value="../../richmemo.pas"/>
<UnitName Value="RichMemo"/> <UnitName Value="RichMemo"/>
<CursorPos X="18" Y="181"/> <CursorPos X="3" Y="249"/>
<TopLine Value="178"/> <TopLine Value="247"/>
<EditorIndex Value="4"/> <EditorIndex Value="8"/>
<UsageCount Value="21"/> <UsageCount Value="24"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit27> </Unit27>
<Unit28> <Unit28>
<Filename Value="../../wsrichmemo.pas"/> <Filename Value="../../wsrichmemo.pas"/>
<UnitName Value="WSRichMemo"/> <UnitName Value="WSRichMemo"/>
<CursorPos X="1" Y="1"/> <CursorPos X="1" Y="36"/>
<TopLine Value="1"/> <TopLine Value="11"/>
<EditorIndex Value="3"/> <EditorIndex Value="7"/>
<UsageCount Value="21"/> <UsageCount Value="24"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit28> </Unit28>
<Unit29> <Unit29>
@ -256,7 +256,7 @@
<UnitName Value="CarbonRichMemo"/> <UnitName Value="CarbonRichMemo"/>
<CursorPos X="24" Y="222"/> <CursorPos X="24" Y="222"/>
<TopLine Value="222"/> <TopLine Value="222"/>
<UsageCount Value="19"/> <UsageCount Value="18"/>
<Bookmarks Count="1"> <Bookmarks Count="1">
<Item0 X="16" Y="230" ID="2"/> <Item0 X="16" Y="230" ID="2"/>
</Bookmarks> </Bookmarks>
@ -266,25 +266,25 @@
<UnitName Value="MacOSAll"/> <UnitName Value="MacOSAll"/>
<CursorPos X="39" Y="220678"/> <CursorPos X="39" Y="220678"/>
<TopLine Value="220670"/> <TopLine Value="220670"/>
<UsageCount Value="18"/> <UsageCount Value="17"/>
</Unit30> </Unit30>
<Unit31> <Unit31>
<Filename Value="../../../fpc/rtl/objpas/sysutils/osutilsh.inc"/> <Filename Value="../../../fpc/rtl/objpas/sysutils/osutilsh.inc"/>
<CursorPos X="10" Y="34"/> <CursorPos X="10" Y="34"/>
<TopLine Value="20"/> <TopLine Value="20"/>
<UsageCount Value="10"/> <UsageCount Value="9"/>
</Unit31> </Unit31>
<Unit32> <Unit32>
<Filename Value="../../../fpc/rtl/objpas/classes/classesh.inc"/> <Filename Value="../../../fpc/rtl/objpas/classes/classesh.inc"/>
<CursorPos X="19" Y="728"/> <CursorPos X="19" Y="728"/>
<TopLine Value="714"/> <TopLine Value="714"/>
<UsageCount Value="10"/> <UsageCount Value="9"/>
</Unit32> </Unit32>
<Unit33> <Unit33>
<Filename Value="../../../fpc/rtl/objpas/classes/streams.inc"/> <Filename Value="../../../fpc/rtl/objpas/classes/streams.inc"/>
<CursorPos X="8" Y="147"/> <CursorPos X="8" Y="147"/>
<TopLine Value="140"/> <TopLine Value="140"/>
<UsageCount Value="10"/> <UsageCount Value="9"/>
</Unit33> </Unit33>
<Unit34> <Unit34>
<Filename Value="../../../../wnlibsvn/CarbonPaste.pas"/> <Filename Value="../../../../wnlibsvn/CarbonPaste.pas"/>
@ -292,167 +292,207 @@
<UnitName Value="CarbonPaste"/> <UnitName Value="CarbonPaste"/>
<CursorPos X="43" Y="9"/> <CursorPos X="43" Y="9"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="34"/> <UsageCount Value="40"/>
</Unit34> </Unit34>
<Unit35> <Unit35>
<Filename Value="../../../fpc/rtl/objpas/sysutils/sysutilh.inc"/> <Filename Value="../../../fpc/rtl/objpas/sysutils/sysutilh.inc"/>
<CursorPos X="13" Y="185"/> <CursorPos X="13" Y="185"/>
<TopLine Value="169"/> <TopLine Value="169"/>
<UsageCount Value="9"/> <UsageCount Value="8"/>
</Unit35> </Unit35>
<Unit36> <Unit36>
<Filename Value="../../../lazarus/lcl/widgetset/wsstdctrls.pp"/> <Filename Value="../../../lazarus/lcl/widgetset/wsstdctrls.pp"/>
<UnitName Value="WSStdCtrls"/> <UnitName Value="WSStdCtrls"/>
<CursorPos X="20" Y="145"/> <CursorPos X="20" Y="145"/>
<TopLine Value="138"/> <TopLine Value="138"/>
<UsageCount Value="15"/> <UsageCount Value="14"/>
</Unit36> </Unit36>
<Unit37> <Unit37>
<Filename Value="../../richmemotypes.pas"/> <Filename Value="../../richmemotypes.pas"/>
<UnitName Value="RichMemoTypes"/> <UnitName Value="RichMemoTypes"/>
<CursorPos X="1" Y="1"/> <CursorPos X="1" Y="1"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="10"/> <UsageCount Value="9"/>
</Unit37> </Unit37>
<Unit38> <Unit38>
<Filename Value="../../win32/win32richmemo.pas"/> <Filename Value="../../win32/win32richmemo.pas"/>
<UnitName Value="Win32RichMemo"/> <UnitName Value="Win32RichMemo"/>
<CursorPos X="1" Y="1"/> <CursorPos X="21" Y="190"/>
<TopLine Value="1"/> <TopLine Value="185"/>
<EditorIndex Value="1"/> <EditorIndex Value="3"/>
<UsageCount Value="11"/> <UsageCount Value="14"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit38> </Unit38>
<Unit39> <Unit39>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<UnitName Value="Win32RichMemoProc"/> <UnitName Value="Win32RichMemoProc"/>
<CursorPos X="1" Y="1"/> <CursorPos X="23" Y="230"/>
<TopLine Value="1"/> <TopLine Value="215"/>
<EditorIndex Value="2"/> <EditorIndex Value="4"/>
<UsageCount Value="11"/> <UsageCount Value="14"/>
<Bookmarks Count="1"> <Bookmarks Count="1">
<Item0 X="1" Y="99" ID="2"/> <Item0 X="1" Y="102" ID="2"/>
</Bookmarks> </Bookmarks>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit39> </Unit39>
<Unit40>
<Filename Value="../../../../../fpc/packages/winunits-base/src/richedit.pp"/>
<UnitName Value="richedit"/>
<CursorPos X="1" Y="372"/>
<TopLine Value="359"/>
<EditorIndex Value="6"/>
<UsageCount Value="10"/>
<Bookmarks Count="1">
<Item0 X="98" Y="366" ID="3"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit40>
<Unit41>
<Filename Value="../../../../../fpc/rtl/win/wininc/base.inc"/>
<CursorPos X="6" Y="211"/>
<TopLine Value="197"/>
<EditorIndex Value="5"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit41>
<Unit42>
<Filename Value="../../../../../fpc/rtl/objpas/classes/classesh.inc"/>
<CursorPos X="1" Y="791"/>
<TopLine Value="782"/>
<EditorIndex Value="1"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit42>
<Unit43>
<Filename Value="../../../../../fpc/rtl/objpas/classes/streams.inc"/>
<CursorPos X="3" Y="465"/>
<TopLine Value="462"/>
<EditorIndex Value="2"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit43>
</Units> </Units>
<JumpHistory Count="29" HistoryIndex="28"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemo.pas"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="189" Column="11" TopLine="164"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="96" Column="33" TopLine="81"/> <Caret Line="30" Column="20" TopLine="15"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="141" Column="53" TopLine="137"/> <Caret Line="29" Column="33" TopLine="15"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="197" Column="5" TopLine="167"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="26" Column="40" TopLine="1"/> <Caret Line="30" Column="58" TopLine="15"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="../../win32/win32richmemo.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="158" Column="38" TopLine="142"/> <Caret Line="200" Column="17" TopLine="187"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="../../win32/win32richmemo.pas"/> <Filename Value="../../../../../fpc/packages/winunits-base/src/richedit.pp"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="366" Column="98" TopLine="356"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="../../win32/win32richmemo.pas"/> <Filename Value="../../../../../fpc/packages/winunits-base/src/richedit.pp"/>
<Caret Line="163" Column="36" TopLine="143"/> <Caret Line="1" Column="1" TopLine="1"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="158" Column="38" TopLine="141"/> <Caret Line="194" Column="36" TopLine="187"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="unit1.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="53" Column="20" TopLine="38"/> <Caret Line="203" Column="15" TopLine="187"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="../../win32/win32richmemo.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="150" Column="42" TopLine="142"/> <Caret Line="246" Column="32" TopLine="218"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="unit1.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="53" Column="19" TopLine="38"/> <Caret Line="237" Column="1" TopLine="210"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="148" Column="24" TopLine="130"/> <Caret Line="206" Column="23" TopLine="191"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="207" Column="21" TopLine="192"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="100" Column="36" TopLine="90"/> <Caret Line="214" Column="72" TopLine="203"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="31" Column="58" TopLine="30"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="48" Column="18" TopLine="33"/> <Caret Line="196" Column="19" TopLine="182"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="100" Column="48" TopLine="85"/> <Caret Line="218" Column="31" TopLine="203"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="119" Column="47" TopLine="104"/> <Caret Line="242" Column="31" TopLine="217"/>
</Position19> </Position19>
<Position20> <Position20>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemoproc.pas"/>
<Caret Line="133" Column="47" TopLine="104"/> <Caret Line="238" Column="59" TopLine="220"/>
</Position20> </Position20>
<Position21> <Position21>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="../../win32/win32richmemo.pas"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="193" Column="36" TopLine="186"/>
</Position21> </Position21>
<Position22> <Position22>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="48" Column="18" TopLine="33"/> <Caret Line="53" Column="26" TopLine="77"/>
</Position22> </Position22>
<Position23> <Position23>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="122" Column="1" TopLine="117"/> <Caret Line="102" Column="23" TopLine="94"/>
</Position23> </Position23>
<Position24> <Position24>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="99" Column="3" TopLine="94"/>
</Position24> </Position24>
<Position25> <Position25>
<Filename Value="../../win32/win32richmemoproc.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="156" Column="1" TopLine="148"/> <Caret Line="105" Column="21" TopLine="96"/>
</Position25> </Position25>
<Position26> <Position26>
<Filename Value="../../win32/win32richmemo.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="159" Column="19" TopLine="144"/> <Caret Line="40" Column="35" TopLine="33"/>
</Position26> </Position26>
<Position27> <Position27>
<Filename Value="../../wsrichmemo.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="29" Column="20" TopLine="14"/> <Caret Line="42" Column="3" TopLine="33"/>
</Position27> </Position27>
<Position28> <Position28>
<Filename Value="../../richmemo.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="197" Column="22" TopLine="184"/> <Caret Line="139" Column="1" TopLine="138"/>
</Position28> </Position28>
<Position29> <Position29>
<Filename Value="../../richmemo.pas"/> <Filename Value="unit1.pas"/>
<Caret Line="1" Column="1" TopLine="1"/> <Caret Line="39" Column="1" TopLine="33"/>
</Position29> </Position29>
<Position30>
<Filename Value="unit1.pas"/>
<Caret Line="112" Column="1" TopLine="112"/>
</Position30>
</JumpHistory> </JumpHistory>
</ProjectOptions> </ProjectOptions>
<CompilerOptions> <CompilerOptions>
@ -460,13 +500,6 @@
<SearchPaths> <SearchPaths>
<IncludeFiles Value="$(ProjOutDir)/"/> <IncludeFiles Value="$(ProjOutDir)/"/>
</SearchPaths> </SearchPaths>
<Linking>
<Options>
<Win32>
<GraphicApplication Value="True"/>
</Win32>
</Options>
</Linking>
<Other> <Other>
<CompilerPath Value="$(CompPath)"/> <CompilerPath Value="$(CompPath)"/>
</Other> </Other>

View File

@ -10,9 +10,9 @@ object Form1: TForm1
OnCreate = FormCreate OnCreate = FormCreate
LCLVersion = '0.9.27' LCLVersion = '0.9.27'
object RichMemo1: TRichMemo object RichMemo1: TRichMemo
Left = 8 Left = 16
Height = 366 Height = 366
Top = 8 Top = 16
Width = 619 Width = 619
Anchors = [akTop, akLeft, akRight, akBottom] Anchors = [akTop, akLeft, akRight, akBottom]
Font.Height = -13 Font.Height = -13
@ -22,9 +22,8 @@ object Form1: TForm1
'RichMemo1' 'RichMemo1'
) )
ParentFont = False ParentFont = False
ScrollBars = ssBoth ScrollBars = ssVertical
TabOrder = 0 TabOrder = 0
WordWrap = False
end end
object Button1: TButton object Button1: TButton
Left = 24 Left = 24
@ -62,7 +61,7 @@ object Form1: TForm1
Top = 382 Top = 382
Width = 75 Width = 75
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
Caption = 'Export' Caption = 'Save RTF'
OnClick = Button4Click OnClick = Button4Click
TabOrder = 4 TabOrder = 4
end end
@ -72,7 +71,7 @@ object Form1: TForm1
Top = 382 Top = 382
Width = 75 Width = 75
Anchors = [akLeft, akBottom] Anchors = [akLeft, akBottom]
Caption = 'Import' Caption = 'Load RTF'
OnClick = Button5Click OnClick = Button5Click
TabOrder = 5 TabOrder = 5
end end

View File

@ -4,31 +4,31 @@ LazarusResources.Add('TForm1','FORMDATA',[
'TPF0'#6'TForm1'#5'Form1'#4'Left'#3#196#0#6'Height'#3#201#1#3'Top'#3#181#0#5 'TPF0'#6'TForm1'#5'Form1'#4'Left'#3#196#0#6'Height'#3#201#1#3'Top'#3#181#0#5
+'Width'#3'z'#2#13'ActiveControl'#7#9'RichMemo1'#7'Caption'#6#5'Form1'#12'Cli' +'Width'#3'z'#2#13'ActiveControl'#7#9'RichMemo1'#7'Caption'#6#5'Form1'#12'Cli'
+'entHeight'#3#201#1#11'ClientWidth'#3'z'#2#8'OnCreate'#7#10'FormCreate'#10'L' +'entHeight'#3#201#1#11'ClientWidth'#3'z'#2#8'OnCreate'#7#10'FormCreate'#10'L'
+'CLVersion'#6#6'0.9.27'#0#9'TRichMemo'#9'RichMemo1'#4'Left'#2#8#6'Height'#3 +'CLVersion'#6#6'0.9.27'#0#9'TRichMemo'#9'RichMemo1'#4'Left'#2#16#6'Height'#3
+'n'#1#3'Top'#2#8#5'Width'#3'k'#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight' +'n'#1#3'Top'#2#16#5'Width'#3'k'#2#7'Anchors'#11#5'akTop'#6'akLeft'#7'akRight'
+#8'akBottom'#0#11'Font.Height'#2#243#9'Font.Name'#6#6'Tahoma'#13'HideSelecti' +#8'akBottom'#0#11'Font.Height'#2#243#9'Font.Name'#6#6'Tahoma'#13'HideSelecti'
+'on'#8#13'Lines.Strings'#1#6#9'RichMemo1'#0#10'ParentFont'#8#10'ScrollBars'#7 +'on'#8#13'Lines.Strings'#1#6#9'RichMemo1'#0#10'ParentFont'#8#10'ScrollBars'#7
+#6'ssBoth'#8'TabOrder'#2#0#8'WordWrap'#8#0#0#7'TButton'#7'Button1'#4'Left'#2 +#10'ssVertical'#8'TabOrder'#2#0#0#0#7'TButton'#7'Button1'#4'Left'#2#24#6'Hei'
+#24#6'Height'#2#25#3'Top'#3'~'#1#5'Width'#3#160#0#7'Anchors'#11#6'akLeft'#8 +'ght'#2#25#3'Top'#3'~'#1#5'Width'#3#160#0#7'Anchors'#11#6'akLeft'#8'akBottom'
+'akBottom'#0#7'Caption'#6#17'Make Bold and Red'#7'OnClick'#7#12'Button1Click' +#0#7'Caption'#6#17'Make Bold and Red'#7'OnClick'#7#12'Button1Click'#8'TabOrd'
+#8'TabOrder'#2#1#0#0#7'TButton'#7'Button2'#4'Left'#3#192#0#6'Height'#2#25#3 +'er'#2#1#0#0#7'TButton'#7'Button2'#4'Left'#3#192#0#6'Height'#2#25#3'Top'#3'~'
+'Top'#3'~'#1#5'Width'#2'a'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6 +#1#5'Width'#2'a'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#11'Get A'
+#11'Get Attribs'#7'OnClick'#7#12'Button2Click'#8'TabOrder'#2#2#0#0#7'TButton' +'ttribs'#7'OnClick'#7#12'Button2Click'#8'TabOrder'#2#2#0#0#7'TButton'#7'Butt'
+#7'Button3'#4'Left'#3'0'#1#6'Height'#2#25#3'Top'#3'~'#1#5'Width'#2'`'#7'Anch' +'on3'#4'Left'#3'0'#1#6'Height'#2#25#3'Top'#3'~'#1#5'Width'#2'`'#7'Anchors'#11
+'ors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#11'Select Font'#7'OnClick'#7#12 +#6'akLeft'#8'akBottom'#0#7'Caption'#6#11'Select Font'#7'OnClick'#7#12'Button'
+'Button3Click'#8'TabOrder'#2#3#0#0#7'TButton'#7'Button4'#4'Left'#3#16#2#6'He' +'3Click'#8'TabOrder'#2#3#0#0#7'TButton'#7'Button4'#4'Left'#3#16#2#6'Height'#2
+'ight'#2#25#3'Top'#3'~'#1#5'Width'#2'K'#7'Anchors'#11#6'akLeft'#8'akBottom'#0 +#25#3'Top'#3'~'#1#5'Width'#2'K'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Capt'
+#7'Caption'#6#6'Export'#7'OnClick'#7#12'Button4Click'#8'TabOrder'#2#4#0#0#7 +'ion'#6#8'Save RTF'#7'OnClick'#7#12'Button4Click'#8'TabOrder'#2#4#0#0#7'TBut'
+'TButton'#7'Button5'#4'Left'#3#184#1#6'Height'#2#25#3'Top'#3'~'#1#5'Width'#2 +'ton'#7'Button5'#4'Left'#3#184#1#6'Height'#2#25#3'Top'#3'~'#1#5'Width'#2'K'#7
+'K'#7'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#6'Import'#7'OnClick'#7 +'Anchors'#11#6'akLeft'#8'akBottom'#0#7'Caption'#6#8'Load RTF'#7'OnClick'#7#12
+#12'Button5Click'#8'TabOrder'#2#5#0#0#7'TButton'#7'Button6'#4'Left'#2#24#6'H' +'Button5Click'#8'TabOrder'#2#5#0#0#7'TButton'#7'Button6'#4'Left'#2#24#6'Heig'
+'eight'#2#25#3'Top'#3#159#1#5'Width'#3#160#0#7'Anchors'#11#6'akLeft'#8'akBot' +'ht'#2#25#3'Top'#3#159#1#5'Width'#3#160#0#7'Anchors'#11#6'akLeft'#8'akBottom'
+'tom'#0#7'Caption'#6#16'Next Style Range'#7'OnClick'#7#12'Button6Click'#8'Ta' +#0#7'Caption'#6#16'Next Style Range'#7'OnClick'#7#12'Button6Click'#8'TabOrde'
+'bOrder'#2#6#0#0#11'TFontDialog'#11'FontDialog1'#11'MinFontSize'#2#0#11'MaxF' +'r'#2#6#0#0#11'TFontDialog'#11'FontDialog1'#11'MinFontSize'#2#0#11'MaxFontSi'
+'ontSize'#2#0#4'left'#3'`'#1#3'top'#3'('#2#0#0#11'TSaveDialog'#11'SaveDialog' +'ze'#2#0#4'left'#3'`'#1#3'top'#3'('#2#0#0#11'TSaveDialog'#11'SaveDialog1'#10
+'1'#10'DefaultExt'#6#4'.rtf'#6'Filter'#6#27'RichText file (*.rtf)|*.rtf'#7'O' +'DefaultExt'#6#4'.rtf'#6'Filter'#6#27'RichText file (*.rtf)|*.rtf'#7'Options'
+'ptions'#11#17'ofOverwritePrompt'#14'ofEnableSizing'#12'ofViewDetail'#0#4'le' +#11#17'ofOverwritePrompt'#14'ofEnableSizing'#12'ofViewDetail'#0#4'left'#3#24
+'ft'#3#24#1#3'top'#3'('#2#0#0#11'TOpenDialog'#11'OpenDialog1'#10'DefaultExt' +#1#3'top'#3'('#2#0#0#11'TOpenDialog'#11'OpenDialog1'#10'DefaultExt'#6#4'.rtf'
+#6#4'.rtf'#6'Filter'#6#27'RichText file (*.rtf)|*.rtf'#4'left'#3#208#0#3'top' +#6'Filter'#6#27'RichText file (*.rtf)|*.rtf'#4'left'#3#208#0#3'top'#3'('#2#0
+#3'('#2#0#0#0 +#0#0
]); ]);

View File

@ -83,7 +83,7 @@ begin
if OpenDialog1.Execute then begin if OpenDialog1.Execute then begin
fs := nil; fs := nil;
try try
fs := TFileStream.Create(OpenDialog1.FileName, fmCreate); fs := TFileStream.Create( Utf8ToAnsi(OpenDialog1.FileName), fmCreate);
RichMemo1.SaveRichText(fs); RichMemo1.SaveRichText(fs);
except except
end; end;
@ -98,7 +98,8 @@ begin
if OpenDialog1.Execute then begin if OpenDialog1.Execute then begin
fs := nil; fs := nil;
try try
fs := TFileStream.Create(OpenDialog1.FileName, fmOpenRead or fmShareDenyNone); // Utf8ToAnsi is required for windows
fs := TFileStream.Create(Utf8ToAnsi(OpenDialog1.FileName), fmOpenRead or fmShareDenyNone);
RichMemo1.LoadRichText(fs); RichMemo1.LoadRichText(fs);
except except
end; end;

View File

@ -30,6 +30,8 @@ type
const Params: TIntFontParams); override; const Params: TIntFontParams); override;
class procedure SetHideSelection(const AWinControl: TWinControl; AHideSelection: Boolean); override; class procedure SetHideSelection(const AWinControl: TWinControl; AHideSelection: Boolean); override;
class function GetStyleRange(const AWinControl: TWinControl; TextStart: Integer; var RangeStart, RangeLen: Integer): Boolean; override; class function GetStyleRange(const AWinControl: TWinControl; TextStart: Integer; var RangeStart, RangeLen: Integer): Boolean; override;
class function LoadRichText(const AWinControl: TWinControl; Source: TStream): Boolean; override;
class function SaveRichText(const AWinControl: TWinControl; Dst: TStream): Boolean; override;
end; end;
implementation implementation
@ -180,5 +182,25 @@ begin
Result:=inherited GetStyleRange(AWinControl, TextStart, RangeStart, RangeLen); Result:=inherited GetStyleRange(AWinControl, TextStart, RangeStart, RangeLen);
end; end;
class function TWin32WSCustomRichMemo.LoadRichText(
const AWinControl: TWinControl; Source: TStream): Boolean;
begin
Result := false;
if not Assigned(RichEditManager) or not Assigned(AWinControl) then begin
writeln('failed!');
Exit;
end;
writeln('loading rich edit text');
Result := RichEditManager.LoadRichText(AWinControl.Handle, Source);
end;
class function TWin32WSCustomRichMemo.SaveRichText(
const AWinControl: TWinControl; Dst: TStream): Boolean;
begin
Result := false;
if not Assigned(RichEditManager) or not Assigned(AWinControl) then Exit;
Result := RichEditManager.SaveRichText(AWinControl.Handle, Dst);
end;
end. end.

View File

@ -27,6 +27,9 @@ type
class procedure GetSelection(RichEditWnd: Handle; var TextStart, TextLen: Integer); virtual; class procedure GetSelection(RichEditWnd: Handle; var TextStart, TextLen: Integer); virtual;
class procedure SetSelection(RichEditWnd: Handle; TextStart, TextLen: Integer); virtual; class procedure SetSelection(RichEditWnd: Handle; TextStart, TextLen: Integer); virtual;
class procedure SetHideSelection(RichEditWnd: Handle; AValue: Boolean); virtual; class procedure SetHideSelection(RichEditWnd: Handle; AValue: Boolean); virtual;
class function LoadRichText(RichEditWnd: Handle; ASrc: TStream): Boolean; virtual;
class function SaveRichText(RichEditWnd: Handle; ADst: TStream): Boolean; virtual;
end; end;
TRichManagerClass = class of TRichEditManager; TRichManagerClass = class of TRichEditManager;
@ -188,5 +191,60 @@ begin
SendMessage(RichEditWnd, EM_SETOPTIONS, ECOOP_OR, ECO_NOHIDESEL); SendMessage(RichEditWnd, EM_SETOPTIONS, ECOOP_OR, ECO_NOHIDESEL);
end; end;
type
TEditStream_ = record
dwCookie : PDWORD;
dwError : DWORD;
pfnCallback : EDITSTREAMCALLBACK;
end;
function RTFLoadCallback(dwCookie:PDWORD; pbBuff:LPBYTE; cb:LONG; var pcb:LONG):DWORD; stdcall;
var
s : TStream;
begin
try
s := TStream(dwCookie);
pcb := s.Read(pbBuff^, cb);
Result := 0;
except
Result := 1;
end;
end;
class function TRichEditManager.LoadRichText(RichEditWnd: Handle; ASrc: TStream): Boolean;
var
cbs : TEditStream_;
begin
cbs.dwCookie := PDWORD(ASrc);
cbs.dwError := 0;
cbs.pfnCallback := @RTFLoadCallback;
SendMessage(RichEditWnd, EM_STREAMIN, SF_RTF, LPARAM(@cbs) );
Result := cbs.dwError = 0;
end;
function RTFSaveCallback(dwCookie:PDWORD; pbBuff:LPBYTE; cb:LONG; var pcb:LONG):DWORD; stdcall;
var
s : TStream;
begin
try
s := TStream(dwCookie);
pcb := s.Write(pbBuff^, cb);
Result := 0;
except
Result := 1;
end;
end;
class function TRichEditManager.SaveRichText(RichEditWnd: Handle; ADst: TStream): Boolean;
var
cbs : TEditStream_;
begin
cbs.dwCookie := PDWORD(ADst);
cbs.dwError := 0;
cbs.pfnCallback := @RTFSaveCallback;
SendMessage(RichEditWnd, EM_STREAMOUT, SF_RTF, LPARAM(@cbs) );
Result := cbs.dwError = 0;
end;
end. end.