Talk:RichMemo
Downloading Trunk
Downloading the entire CCR and extracting just RichMemo is a slow process. This bash script will pull down just trunk into the current dir. Note it depends on file names not changing.
#!/usr/bin/bash
# Gets the trunk version of Richmemo, overwriting current version if present.
# NOTE : if files added or renamed, will require attention !
# DRB Dec 30, 2019
BASE='http://svn.code.sf.net/p/lazarus-ccr/svn/components/richmemo/'
for i in wsrichmeno.pas rtfparspre211.pas rtfdata.inc richmemoutils.pas richmemortf.pas richmemoregister.pas richmemopackage.pas richmemopackage.lrs richmemopackage.lpk richmemohelpers.pas richmemofactory.pas richmemo.pas ; do
rm "$i" 2>/dev/null
wget "$BASE$i"
done;
mkdir -p win32
cd win32
rm *.pas
for i in win32richmemo.pas win32richmemoole.pas win32richmemoproc.pas ; do
rm "$i" 2>/dev/null
wget "$BASE"win32/"$i"
done;
cd ..
for i in carbon cocoa gtk2 qt qt5 ; do
mkdir -p "$i"
cd "$i"
rm "$i"richmemo.pas 2>/dev/null
wget "$BASE""$i/$i"richmemo.pas
cd ..
done;
mkdir -p ide
cd ide
rm *.lfm *.pas 2>/dev/null
wget "$BASE"ide/rtfeditpropdialog.lfm
wget "$BASE"ide/rtfeditpropdialog.pas
cd ..
ls -l
--Dbannon (talk) 01:36, 30 December 2019 (CET)
Page Renaming
Arent. Recently you moved RichMemo to TRichMemo. Not sure why this occurred and what's the reason for it (is there a page that disclose the requirement?), but Russian page was not moved and now it is lost (from user interface!).
Here's a consideration for renaming. While the visual component itself is indeed named TRichMemo, the package is named RichMemo. It includes a little bit more than just TRichMemo component. For example it contains TCustomRichMemo, that is used as a base for a separate package TDBRichMemo!
Thus I'm thinking that the page should named after the package name rather than component name.
Todo SetParaTabs
Add more examples and descriptions about TabStops.
The sample below adjusts RichMemo, to have tab stops for 8 characters sharp in Mono-Width text
procedure InitTabStopWithWidth(out lst: TTabstopList; width: double);
const
ReasonableCount = 12;
var
i : integer;
begin
lst.Count:=ReasonableCount;
SetLength(lst.Tabs, ReasonableCount);
for i:=0 to ReasonableCount-1 do
lst.Tabs[i].Offset:=width*i;
end;
procedure TForm1.FormShow(Sender: TObject);
var
w : double;
lst : TTabStopList;
begin
Canvas.Font.Name:='Courier New'; // RichMemo1.Font.Name
Canvas.Font.Size:=10; // RichMemo1.Font.Size
w:=Canvas.TextWidth('w')/96*72; // should be mono-width anyway
InitTabStopWithWidth(lst, w*8);
RichMemo1.HandleNeeded;
RichMemo1.SetParaTabs (0,-1, lst);
end;