Také nemáte rádi Poznámkový blok? Anebo jste někdy chtěli provést
jednoduchou operaci (jako je třeba vložení určitého textu na určitou
pozici na každém řádku), která nejde udělat ani v Poznámkovém bloku,
ani v profesionálnějších textových procesorech? Právě pro vás je
určen tento miniseriál, který by vás měl provést všemi kroky
potřebnými k vytvoření vlastního poznámkového bloku. Vím, že to pro
zkušenějšího programátora nebude asi žádný problém, ale pro ty méně
zkušenější se myslím bude hodit seznam příkazů k tomu
potřebných.
Takže začneme tedy: Předpokládám, že na ploše máte komponentu
TMemo, která už sama o sobě je vlastně takovým malým
poznámkovým blokem. Tuto komponentu si pojmenujte třeba
Editor (můžete si ji pojmenovat jak chcete, ale potom musíte
podle toho upravit příkazy).
Začněme tedy třeba příkazy z nabídky Soubor (Nabídku si můžete
vytvořit přidáním komponenty TMainmenu a potom jej editovat po
dvojím kliknutí na tuto komponentu.)
Nový dokument:
procedure
Tzakladni.Nov1Click(Sender: TObject);
begin
Editor.Lines.Clear;
end;
Otevření dokumentu: musíte si na form vložit
komponentu TOpendialog(je dobré nastavit si filtr na *.TXT v
property Filtr). Všimněte si, že se jméno uloží i do Captionu
hlavního okna a že se změní proměnná Modified komponenty
Editor, čehož později využijeme.
procedure
Tzakladni.Otevt1Click(Sender: TObject);
begin
if
OpenDialog1.Execute then
begin
Editor.Lines.LoadFromFile( OpenDialog1.FileName
);
Caption :=
OpenDialog1.FileName;
Editor.Modified := FALSE
end
end;
Uložit:Je třeba vložit komponentu
Tsavedialog. Pokud v Captionu hlavního okna nebude
jméno souboru vyvolá se procedura Uloitjako1Click,
kterou si popíšeme níže. Aby procedura korektně fungovala, je třeba
připsat do eventu Oncreate hlavního okna příkaz:
Caption := meNoname;
procedure Tzakladni.Uloit1Click(Sender: TObject);
begin
if Caption = meNoname then
Uloitjako1Click( nil ); else
begin
Editor.Lines.SaveToFile( Caption );
Editor.Modified := FALSE
end
end;
Uložit jako:Velmi jednoduché. Jenom malá poznámka:
Předpokládám dva filtry v SaveDialogu1. První pro *.* a druhý
pro *.txt. Jméno se zase vloží do Captionu hlavního okna.
procedure Tzakladni.Uloitjako1Click(Sender: TObject);
begin
if SaveDialog1.Execute then
begin
if Savedialog1.filterindex=1 then Editor.Lines.SaveToFile( SaveDialog1.FileName );
if Savedialog1.filterindex=2 then Editor.Lines.SaveToFile( SaveDialog1.FileName+'.txt');
Editor.Modified := FALSE;
Caption := SaveDialog1.FileName;
if Savedialog1.filterindex=2 then Caption:=Caption+'.txt';
end
end;
Tisk: Trochu složitější. Je třeba vložit komponentu
TprintDialog. Prozatím umí vytisknou jen celý dokument.
procedure Tzakladni.Tisk1Click(Sender: TObject);
var a,b:integer;
begin
if not printdialog1.execute then exit;
with Printer do
begin
begindoc;
canvas.font:=Editor.font;
if Printdialog1.PrintRange=prALLPages then
for b:=0 to Printdialog1.Copies do
begin
if b>0 then Newpage;
for a:=0 to Editor.lines.count do
Canvas.TextOut(0,0,Editor.Lines[a]);
end
else showmessage('Tento program umí vytisknout pouze celý dokument!!');
enddoc;
end;
end;
Konec: Úplně stupidní.
procedure
Tzakladni.Konec1Click(Sender: TObject);
begin
close;
end;
Tímto končí první díl a doufám, že vám aspoň trochu pomohl a že
se podíváte i na druhý a snad i nějaký ten další. Komponenty které
jsem výše psal, že je třeba vložit na hlavní formulář, a nenapsal k
nim, jaké mají mít jméno, by měly zůstat beze změny jména (Například
když vložíte TSavedialog, bude se automaticky jmenovat Savedialog1,
pokud již nějaká komponenta s takovým názvem
neexistuje.)