Komponenta DataMemo


Přehled vlastností, metod a událostí objektu:
--------------------------------------------------------------
Align (RW)           Alignment (RW)       AutoDisplay (RW)
BorderStyle (RW)     Color (RW)           Ctl3D (RW)
Cursor (RW)          DataField (RW)       DataSource (RW)
Enabled (RW)         Font (RW)            Height (RW)
HelpContext (RW)     Hint (RW)            Left (RW)
Lines (*RW)          MaxLength (RW)       Modified (*RW)
Name (R)             ParentColor (RW)     ParentCtl3D (RW)
ParentFont (RW)      ParentShowHint (RW)  PopupMenu (RW)
ReadOnly (RW)        ScrollBars (RW)      SelLength (*RW)
SelStart (*RW)       SelText (*RW)        ShowHint (RW)
TabOrder (RW)        TabStop (RW)         Tag (RW)
Top (RW)             Visible (RW)         WantTabs (RW)
Width (RW)           WordWrap (RW)        
--------------------------------------------------------------
Clear                ClearSelection       CopyToClipboard
CutToClipboard       LoadMemo             PasteFromClipboard
SelectAll            SetFocus             
--------------------------------------------------------------
OnChange             OnClick              OnDblClick
OnEnter              OnExit               OnKeyDown
OnKeyPress           OnKeyUp              OnMouseDown
OnMouseMove          OnMouseUp            
--------------------------------------------------------------
Legenda: * -> pouze z programu, R -> lze číst, W -> lze zadat

Komponenta DataMemo se používá pro zápis a zobrazení víceřádkového textu umístěného v databázi. Při nastavení vlastnosti ReadOnly ji lze také použít pro zobrazení víceřádkového textu bez možnosti editace.

Nejdůležitější vlastností je DataSource, ve které se udává zdroj připojených dat. Položku databáze zadáváte ve vlastnosti DataField.

Pokud bude text editován uživatelsky z klávesnice, je změna zaznamenána automaticky do databáze při změně pozice v databázi nebo na příkaz uživatele kliknutím na příslušné tlačítko objektu DataNavigator. Při změně textu z programu musíte použít nejprve metodu Edit pro přepnutí do editačního módu, následně změnit text a nakonec uložit provedené změny metodou Post:


Jazyk KLONDAIK: DataTable.Edit; DataMemo.Text := 'abcd'; DataTable.Post;


Jazyk BONANZA: DataTable.Edit DataMemo.Text = "abcd" DataTable.Post

Druh orámování textu zadává vlastnost BorderStyle, barvu podkladu zadáte ve vlastnosti Color. Můžete také změnit Font. Pokud požadujete možnost přístupu k editovanému textu na formuláři pomocí rychlé Alt klávesy, umístěte nad editovaný text komponentu Label s nastavením vlastnosti FocusControl, ve které zadáte objekt s editovaným textem.

Editovaný text lze přenášet přes schránku Windows do jiného textu. Buď uživatelsky z klávesnice, nebo z programu. Vybraný text lze označit pomocí vlastností SelStart, SelLength a SelText. Celý text lze označit metodou SelectAll, pro výmaz označené části textu se použije ClearSelection. Přenos textu mezi schránkou a objektem zajišťují metody CopyToClipboard, CutToClipboard, PasteFromClipboard.

Komponenta obsahuje mimo běžných událostí i událost OnChange, která nastane v okamžiku změny textu. Ta může nastat ve dvou případech. Buď je uživatelem změněn text z klávesnice, avšak také v případě změny textu při přechodu na nový záznam databáze. Pokud proto potřebujete ošetřit uživatelskou změnu z klávesnice, použijte událost OnKeyPress.

Text je uložen ve vlastnosti Lines, kterou představuje proměnná typu StrArray. Uvedený typ proměnné má své vlastní metody pro práci s obsaženým textem. Pro zadání počátečního obsahu textu můžete použít editor přístupný z okna nastavení objektů, který se aktivuje kliknutím na ikonu se třemi tečkami vpravo od vlastnosti Lines.

Jednotlivé řádky textu jsou z programu přístupné svým indexem, to je pořadovým číslem řádku. Řádky jsou číslovány od nuly. První řádek má proto index nula, pátý řádek má index 4. Pokud potřebujete zjistit obsah řádku, musíte zadat jeho pořadový index. Obsah prvního řádku proto zobrazíte:


Jazyk KLONDAIK: ShowMessage(DataMemo.Lines[0]);


Jazyk BONANZA: ShowMessage(DataMemo.Lines(0))

Podobným způsobem můžete změnit obsah řádku, kdy opět zadáváte index řádku a nový obsah. Pro druhý řádek v pořadí proto zadáte:


Jazyk KLONDAIK: DataMemo.Lines[1]:='druhý řádek';


Jazyk BONANZA: DataMemo.Lines(1)= "druhý řádek"

Nový řádek zadáte do textu z programu použitím metody Add následujícím způsobem:


Jazyk KLONDAIK: DataMemo.Lines.Add('aaa');


Jazyk BONANZA: DataMemo.Lines.Add("aaa")

Pokud potřebujete některý řádek textu zrušit, použijte volání metody Delete následujícím způsobem:


Jazyk KLONDAIK: DataMemo.Lines.Delete(2);


Jazyk BONANZA: DataMemo.Lines.Delete(2)

Potřebujete-li v textu vyhledat index řádku se známým obsahem, použijte funkci IndexOf:


Jazyk KLONDAIK: ShowMessage(DataMemo.Lines.IndexOf('aaa'));


Jazyk BONANZA: ShowMessage(DataMemo.Lines.IndexOf("aaa"))

Editovaný text můžete uložit na disk do textového souboru metodou SaveToFile, případně načít textový soubor do textu metodou LoadFromFile:


Jazyk KLONDAIK: DataMemo.Lines.SaveToFile('seznam.txt'); DataMemo.Lines.LoadFromFile('seznam.txt');


Jazyk BONANZA: DataMemo.Lines.SaveToFile("seznam.txt") DataMemo.Lines.LoadFromFile("seznam.txt")

Potřebujete-li projít celý text a provést s každým řádkem nějakou akci, použijte vlastnost Lines.Count. Musíte přitom počítat s tím, že se řádky číslují od nuly, počet položek řádek textu je však uváděn od jedničky. Od počtu řádků musíte proto v cyklu jedničku odečíst:


Jazyk KLONDAIK: DataMemo.Edit; for x:= 0 to DataMemo.Lines.Count-1 do DataMemo.Lines[x] := CsWinToLat(DataMemo.Lines[x]); DataMemo.Post;


Jazyk BONANZA: DataMemo.Edit For x = 0 to DataMemo.Lines.Count-1 DataMemo.Lines(x) = CsWinToLat(DataMemo.Lines(x)) Next DataMemo.Post

Editovaný text je také přístupný jako celek ve vlastnosti Text, která je přístupná pouze z programu. Délka editovaného textu se zadává ve vlastnosti MaxLength. Standardně je zadána nula, což znamená, že délka textu je omezena velikostí do 65 Kb. Větší délku nelze nastavit.


OZOGAN, 1 Máje 97, 460 01 Liberec
tel.,fax: (048) 52 28 338, e-mail: info@ozogan.cz