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.
#!/bin/bash
# Gets the trunk version of Richmemo, overwriting current version if present.
# NOTE : if files added or renamed, will require attention !
# DRB Sep 26, 2020
BASE='http://svn.code.sf.net/p/lazarus-ccr/svn/components/richmemo/'
for i in wsrichmemo.pas rtfparspre211.pas rtfdata.inc richmemoutils.pas richmemortf.pas richmemopackage.pas richmemopackage.lpk richmemohelpers.pas richmemofactory.pas richmemo.pas ; do
rm "$i" 2>/dev/null
wget "$BASE$i"
done;
for i in ide cocoa gtk2 qt carbon qt5 win32; do
mkdir -p "$i"
done;
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 ..
cd cocoa
rm *.pas
wget "$BASE"cocoa/cocoarichmemo.pas
cd ..
cd qt
rm *.pas
wget "$BASE"qt/qtrichmemo.pas
cd ..
cd carbon
rm *.pas
wget "$BASE"carbon/carbonrichmemo.pas
cd ..
cd ide
rm *.lfm *.pas *.lrs *.lpk 2>/dev/null
for i in rtfeditpropdialog.lfm rtfeditpropdialog.pas richmemo_design.lpk richmemo_design.pas richmemopackage.lrs richmemoregister.pas ; do
rm "$i" 2>/dev/null
wget "$BASE"ide/"$i"
done;
cd ..
cd gtk2
rm *.pas 2>/dev/null
wget "$BASE"gtk2/gtk2richmemo.pas
cd ..
cd qt5
rm *.pas 2>/dev/null
wget "$BASE"qt5/qt5richmemo.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.
- I moved it back (I guess I overlooked the /ru page). - Arent (talk) 12:35, 29 July 2016 (CEST)
- Thanks! Why did you rename it in the first place? Skalogryz (talk) 14:10, 29 July 2016 (CEST)
- Kinda late reacton, but anyway - Most components have a page conform their component name TEdit, not just Edit, a TCustomEdit has is source in StdCtrls (as well as all standard controls) but has a separate page for user reference. Might as well be a matter of preference, I'd prefer many small pages over single big one. - Arent (talk) 13:35, 5 October 2020 (CEST)
- Thanks! Why did you rename it in the first place? Skalogryz (talk) 14:10, 29 July 2016 (CEST)
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;