Další vylepšení textového editoru

Náš editor z minulých lekcí vylepšíme o další nabídky a některé drobnosti, které jste možná dosud postrádali :-) a které budou podstatně "viditelnější" než ty z minulé lekce. Využití mnohých dalších vlastností, ať už komponenty RichEdit, dalších komponent nebo dialogů, přenecháme větším odborníkům.

Nejprve přidáme další standardní dialog - TFontDialog, který nám umožní určovat vlastnosti vybraného textu a příslušnou nabídku - například novou nabídku Písmo a v ní nabídku Font....
K určení vlastností vybraného textu využijeme další vlastnost RichEditu a to SelAttributes, kterou je možné upravovat metodou (funkcí) Assign - k pochopení bude lepší ukázka možné procedury na tlačítku (nabídce) Font...:
procedure TForm2.Font1Click(Sender: TObject);
begin
if FontDialog1.Execute then //zobrazení dialogového okna
RichEdit1.SelAttributes.Assign(FontDialog1.Font); //nastavení vlastností písma
end;
Vlastnost HideSelection komponenty RichEdit určuje, jestli má označení vybraného textu zůstat, i když se "přepnete" jinam, můžete ji upravit přímo v návrhu.


Pokud chceme uchovat různé vlastnosti částí textu (nebo například barvu atd.), nemůžeme už ukládat soubor ve formátu .txt, ale musíme využít formát .rtf. Při práci s více formáty (ale nejen tehdy) už je vhodné upravit vlastnosti dialogových oken pro práci se soubory.

Pro práci se soubory používáme SaveDialog a OpenDialog, oba mají řadu vlastností (viz Umíme to s Delphi - 12. díl), zajímavý je například Filter, který do výpisu vyfiltruje soubory daného typu.
Editace této vlastnosti je zřejmá podle obrázku:
Po úpravě filtru už můžeme dle zvyklostí vybírat typ (příponu) souboru, při ukládání pamatujte na to, že musíme stále ještě ke jménu souboru připisovat jeho příponu "ručně".


Protože vytváříme aplikaci pro Windows, mají zkratkové klávesy, které nepředefinujeme, stejný význam jako v operačním systému. Nebylo by ani vhodné měnit ustálené zkratkové klávesy, na které už je uživatel zvyklý. V našem textovém editoru tak například bez našeho přičinění fungují klávesy Ctrl+C (resp. Ctrl+X) a Ctrl+V pro kopírování a vkládání textu. Doplníme také nabídky, to ale bude jednoduché:

Pro práci se schránkou můžeme využít další metody (funkce) komponenty RichEdit:
CopyToClipboard - zkopíruje označený text do schránky
CutToClipboard - vystřihne označený text do schránky, tj. text z dokumentu vyjme
PasteFromClipboard - vloží na pozici kurzoru text ze schránky, je-li označen jiný text, nahradí se

Můžeme doplnit hlavní nabídku o nabídky Kopírovat a Vložit (asi do nabídky Úpravy) a využít následující proceduru pro nabídku Kopírovat:
procedure TForm2.KopieClick(Sender: TObject);
begin
RichEdit1.CopyToClipboard;
end;

Vzhledem k tomu, že už můžeme nějaký text vytvořit a upravit, zkusíme doplnit i nabídku pro tisk. To opět nebude žádný problém, protože jen využijeme dialog pro tisk a další metodu komponenty RichEdit.

Chceme-li tisknout, musíme přidat další standardní dialog, tentokrát PrintDialog (profesionální editory obsahují také dialog PrinterSetupDialog pro nastavení vlastností tiskárny). Dále přidáme nabídku Tisk - nejspíš do nabídky Soubor.
K tisku stačí využít další metodu komponenty RichEdit - Print. Tato metoda je natolik inteligentní, že dokáže vytisknout obsah RichEditu ve správném formátování. Jejím parametrem je znakový řetězec, který se vypisuje v textové frontě na tiskárně. Procedura na tlačítku pro tisk je velmi jednoduchá:
procedure TForm2.Tisk1Click(Sender: TObject);
begin
if PrintDialog1.execute then RichEdit1.Print(JmenoSouboru);
end;


Aplikaci ukládej do složky s názvem lekce17 .

Úkoly:

Základní úloha:

Doplňte váš textový editor podle textu lekce (viz ukázka ) - přidejte nabídku Font..., filtr pro práci se soubory, nabídky pro práci se schránkou (doplňte i proceduru pro nabídku Vložit) a nabídku pro tisk.


Úloha na plus:

Zajistěte, aby nový, ještě nepojmenovaný soubor měl automaticky přiřazený název např.: Bez názvu.txt.


Úlohy na jedničku:

Za pomoci kurzu Umíme to s Delphi (13. díl) zkuste doplnit nabídku pro hledání textu.

Upravte editor tak, abychom při ukládání souboru nemuseli "ručně" připisovat příponu, aby se po uložení k názvu souboru přidala podle vybraného filtru.