On Thursday 11 September 2008 22.33:32 listmember wrote: > >> procedure TLabel.Paint(...) > >> begin > >> if *Caption.IsRTL *then > >> DrawCaptionRTL(0,0,*Caption.AsUTF8*, flags) > >> else > >> DrawCaption(0,0,*Caption.AsUTF8*, flags); > >> end; > >> > >> Is not that enough? > > > > What is the gain as opposed to > > > > procedure TLabel.Paint(...) > > begin > > if IsRTL(Caption) then > > DrawCaptionRTL(0,0,AsUTF8(Caption), flags) > > else > > DrawCaption(0,0,AsUTF8(Caption), flags); > > end; > > > > In other words where is the benefit from OOP in this ? > > IMO, both are deficient as they both assume that a string block (text) > is either RTL or LTR. > > Doesn't that mean we will be --by design-- unable to write something > like 'Yom Kippur (יוֹם כִּפּוּר)' on a caption? > > This is why I keep asking that the 'TCharacter' or 'TChar' needs to have > a language attribute. > MSEgui has a richstringty type, a combination of a widestring and a dynamic array of formatting info. There are formatting infos for the changes only, a richstringty without formatting info has a nil pointer for the dynamic array. See lib/common/kernel/mserichstring.pas http://sourceforge.net/projects/mseide-msegui/
" type newinfoty = (ni_bold=ord(fs_bold),ni_italic=ord(fs_italic), ni_underline=ord(fs_underline),ni_strikeout=ord(fs_strikeout), ni_selected=ord(fs_selected), //same order as in fontstylety ni_fontcolor,ni_colorbackground,ni_delete); newinfosty = set of newinfoty; const fonthandleflags = [ni_bold,ni_italic]; fontstyleflags = [ni_bold,ni_italic,ni_underline,ni_strikeout,ni_selected]; type charstylety = record fontcolor,colorbackground: pcolorty; fontstyle: fontstylesty; end; pcharstylety = ^charstylety; charstylearty = array of charstylety; formatinfoty = record index: integer; //0-> from first char newinfos: newinfosty; style: charstylety; end; pformatinfoty = ^formatinfoty; formatinfoarty = array of formatinfoty; pformatinfoarty = ^formatinfoarty; richstringty = record text: msestring; format: formatinfoarty; end; " It was designed for fast processing in MSEide source code editor. Martin _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-devel