V minulém díle jsem popsal základní procedury pro načítání,
ukládání a tisk souboru, teď bych se zaměřil na záložku Upravit. Tu
lze zase samozřejmě vytvořit v MainMenu1.
Zpět: Zde bych jen uvedl, že procedura Undo
komponenty Tmemo vrátí všechny změny provedené v komponentě
Tmemo od posledního volání ClearUndo.
procedure Tzakladni.Zpt1Click(Sender: TObject);
begin
editor.undo;
end;
Vyjmout: Vloží do schránky a odstraní označený
text.
procedure Tzakladni.Vyjmout1Click(Sender: TObject);
begin
Editor.CutToClipboard;
end;
Kopírovat: Zkopíruje
označený text do schránky. K označenému textu se dá přistupovat i
přes proměnné SelStart(označuje číslem začátek),
SelLenght(číslem udává počet označených písmen) a
SelText(samotný označený text).
procedure Tzakladni.Koprovat1Click(Sender: TObject);
begin
Editor.CopyToClipboard;
end;
Vložit: Vloží text ze schránky na aktuální
pozici.
procedure Tzakladni.Vloit1Click(Sender: TObject);
begin
Editor.PasteFromClipboard;
end;
Odstranit: Odstraní označený text.
procedure Tzakladni.Odstranit1Click(Sender: TObject);
begin
Editor.ClearSelection;
end;
Vybrat vše: Označí celý dokument.
procedure Tzakladni.Vybratve1Click(Sender: TObject);
begin
Editor.selectall;
end;
Vložit datum a čas: Na aktuální pozici, nebo místo
označeného textu vloží aktuální datum a čas.
procedure
Tzakladni.Vloitdatumaas1Click(Sender: TObject);
begin
editor.Seltext:=datetostr(now)+' '+timetostr(now)+' ';
end;
Zalamování: Komponenta Tmemo má vlastnost
Scrollbars, která udává, které posuvníky mají být zobrazeny.
Buď ssBoth (oba),ssVertical (pouze svislý),
ssHorizontal (pouze vodorovný) nebo ssNone (ani
jeden). A podle toho, které posuvníky jsou zobrazeny, se automaticky
formátuje text v Tmemo. Tuto vlastnost je dobré nastavit na
ssBoth a vlastnost Checked komponenty Tmenuitem
na False.
procedure Tzakladni.Zalamovndk1Click(Sender: TObject);
begin
Zalamovndk1.checked:=not Zalamovndk1.checked;
if not Zalamovndk1.checked then Editor.scrollbars:=ssBoth
else Editor.scrollbars:=ssVertical;
end;
Nakonec bych chtěl uvést ještě jednu proceduru, na kterou jsem v
minulém díle zapomněl. Jde o to, že když ve svém dokumentu provedete
nějaké změny a pak třeba náhodou kliknete na Konec, nebo zmáčknete
ALT+F4, tak se program zavře, ale neuloží se změny. Proto se dá
využít Eventu OnCloseQuery, který je volán vždy, když je program
uzavírán. Má proměnnou Canclose, se kterou můžete v této proceduře
pracovat. Pokud je na konci procedury v této proměnné hodnota True,
program se zavře, pokud False program pracuje dál a nic se neděje
(jako byste ani neklikli na Konec). A toho zde využívám:
procedure Tzakladni.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Editor.Modified then
{ soubor nebyl ulozen }
case MessageDlg( 'Soubor '+Caption+' není uložen. Uložit?',
mtConfirmation, [mbYes, mbNo, mbCancel], 0) of
mrYes: { preje si ulozit }
begin
Uloit1Click( NIL );
CanClose := not Editor.Modified
{ pokud neulozil ani ted, nedovolime zavrit okno }
end;
mrNo: ;{ nechce ulozit => mohu skoncit }
else
CanClose := FALSE
end { case }
end;
Využívá se zde také vlastnosti
Modified, která udává, zda byl dokument změněn. A proto jsme
tuto proměnnou při ukládání a načítaní souboru nastavovali na False
(viz první díl). Také je zde procedurou MessageDlg volána
hláška (spíše dotaz), zda má být dokument uložen, a podle toho na
které tlačítko (Ano, Ne, Storno) uživatel klikne, se buď spustí
procedura Uložit nebo se povolí skončení (proměnná Canclose je
automaticky na začátku procedury True) anebo se skončení
nepovolí.