
          O PROGRAMOVN DANIELSOFT EDITORU
          
Ned mi to a musm vm povdt Pbh O Straliv
Vci Jmnem RichEdit:
 Pokud nevte, co RichEdit je, pak vzte, e se na
nj (pokud tento soubor prohlte v DanielSoft Editoru)
prv dvte. Je to onen bl box, do kterho se v tomto
editoru zapisuje a ze kterho se te text. RichEdit
jsem neprogramoval j, je zabudovan ve Windows a mj
editor se pi nzkorovovch operacch mus spolhat
na jeho sluby.
Dlouhou dobu jsem byl msto nho nucen pouvat jeho
"mladho brku" Memo, kter se vyznaovalo hlavn 
nzkou kapacitou. Maximln velikost souboru, kter
bylo Memo schopn nast bylo nco kolem 63k (skuten
63k a ne onch v DOSu notoricky znmch 64k)
a to jsem jet ml dojem, e soubory blc se tto 
magick hranici se nenatou cel. Samozejm celou dobu
mluvm (a taky mluvit budu) o 32bitovch Windows.
V 16bitovch to bylo jet hor (32k).
RichEdit _tak_ vt soubory odmtal, avak tvrdil o
sob, e je v podku nat. Soubory od 100k ve 
byly nateny v jakmsi podivnm "read only" mdu, kdy
do nich lo zapisovat pouze kdy jsem nco smazal
pes schrnku (???). Znovu opakuji, e celou dobu jde
 o vci do Windows vestavn, kter jsem nemohl
 sm nijak peprogramovat, jen se spolehnout na jejich    
"skvl" sluby. Nakonec jsem z hlubin Internetu vythl,
e kdy snm (??) maximln velikost akceptovatelnho
souboru RichEditem tak, aby byl nejvy byte nulov,
divn chovn pestane. Pitom tvrce tto rady napsal,
e sm nev pro to tak je. Prost ern magie 
nejmenovan monopoln softwarov firmy. 
Kdy jsem tedy mohl RichEdit konen msto Mema pout,
radostn jsem je zamnil a zdlo se, e kapacita se
zv a vechno bude "chodit" jako dve. To byla
verze 4.1 editoru. Bohuel nkter vci, kter
se u Mema programovaly jednm zpsobem se u RichEditu
(ve stejnm OS od stejn firmy) programovaly nyn
pln jinak. A to jet nemluvm o tom, e pomocn
skryt Mema, kter pomhala tomu hlavnmu zpracovat
text, jsem musel zmnit na pomocn RichEdity, protoe
milostpn RichEdit se se svmi chudmi pbuznmi
nehodlal bavit. Dky tmto problmm byla verze 4.1
chybov a musel jsem j urychlen opravit na 4.2 a
upgradovat to na webu.
Nkte programtoi, kte tou tento text by mohli
namtnout "a pro jste musel nco u RichEditu i
Mema *programovat*, kdy on poskytuje nzkorovov
sluby, jak jste kal. Pro jste tyto sluby pouze
*nevolal* ?". Hmmm ... tito programtoi zejm mlo
programovali ve Windows (to jim nevytkm, pouze to
konstatuji).
Nkter -podle m bazln- sluby se musely po
Memu/RichEditu dat vskutku krkolom. Posute sami 
- pro zjitn, na kterm dku je kurzor, se
mus provst nco takto neintuitivnho a
pekombinovanho:

function GetTextPosLine(var rich:TRichEdit):longint;
var c:TCharRange;{co je to proboha za datov typ???}
begin
rich.Perform(EM_GETSEL,0,integer(addr(c)));
Result:=rich.Perform(EM_EXLINEFROMCHAR, 0 , c.CpMin);
end;

u Mema se to dlalo pln jinak, takt krkolom.
Bohuel si to u nepamatuju. Pokud jsem ten "memov"
postup pouil na RichEdit, VRACELO TO VDY NULU, take
pokad kdy jsem se zeptal na kterm jsem dku
odpovdlo to e na nultm - tj. prvnm! Tm vznikaly
(zpotku tko odhaliteln) chyby.

A nastaven dku jsem si taky musel napsat sm:

procedure SetTextPosLine(rich:TRichEdit;pozice:longint);
var pocet,i:integer;
begin
pocet:=0;
for i:=0 to pozice-1 do                     
              inc(pocet,length(rich.lines[i])+2);
         {to +2 jsou zejm znaky CR LF, ale kdo v...}           
rich.selStart:=pocet;
rich.selLength:=0;
end;

Vimnte si, e ani pro zmnu pozice potan ve znacch
neexistuje funkce a mus se celkem hloup "vybrat"
nulov mnostv znaku do Selection (pomoc SelStart
a SelEnd).
Tak jsou tu nepjemnosti, jako e napklad RichEdit 
pepne pokad pi svm sputn klvesnici na "Cz" a
pepne ji tak tak pokad, co u jednou "vejdu" do ji
napsanho textu. Jako programtor vak asto potebuju
hranat zvorky, mku, zavin, ampersand apod.,
take bych nutn poteboval mt nastaven *anglick*,
jak mm jinak v celch Window$, ale RichEdit to
prost nebere. eenm je oznait cel dokument a
pepnout na "En".

Nyn se mi ji KONEN povedlo toto pekonat, avak
jet jsem se musel potkat s tm, e pokud jsem
klvesnici pepnul na En, najednou pestaly "chodit"
esk znaky, co se mi nakonec natst podailo 
obejt. Znovu je vak ped pepnutm nutno oznait
cel text, dky emu neme uivatel pepnout normln
alt+shift, ale mus pout poloku z menu etina, kter
ozna text, pepne a zase ho odzna. Jinak by toti
neoznaen sti textu, pokud by k nim lovk doel
kurzorem, znovu "samy pepnuly" do pvodn klvesnice,
bh v pro. Uff. 

A to jet nemluvm o tom, e nkolikrt text pi 
naten prost
zmiz a mus se zmnit rozmry RichEditu aby se
zase objevil... Stane se to teba pi posouvn textu
pomoc Ctrl+Alt+ -> hodn doleva, nevm pro.

