§ 16. Кампаненты для работы са спісамі радкоў

16.2. Кампанент Мемо

Кампанент шматрадковы рэдактар Memo прызначаны для ўводу, вываду і рэдагавання шматрадковых тэкстаў. На панэлі кампанентаў Standard кампанент Memo намаляваны ў выглядзе , імя аб'екта — Memo. Кампанент Memo, які змяшчаецца на форму, атрымлівае імя MemoN, дзе N — нумар 1, 2, 3… (прыклад 16.2).

Дадзены кампанент, гэтак жа як і кампанент Edit, забяспечаны функцыямі, уласцівымі рэдактарам: капіраваць, выразаць, уставіць, адмена апошняй каманды рэдагавання. Некаторыя ўласцівасці кампанента прыведзены ў прыкладзе 16.3.

Асноўная ўласцівасць кампанента Memo — уласцівасць Lines, якая змяшчае тэкст акна ў выглядзе спісу радкоў і якая мае тып TStrings. Пачатковае значэнне спісу радкоў можна задаць на этапе праектавання. Для гэтага трэба націснуць кнопку  каля ўласцівасці Lines у акне інспектара аб'ектаў. Пры гэтым адкрыецца акно рэдагавання спісаў радкоў (String List Editor) (прыклад 16.4).

Пры выкананні праграмы для змены змесціва акна кампанента Memo прымяняюцца метады класа TString (гл. прыклад 16.1).

Прыклад 16.5. Змяніць праект Калькулятор з практыкавання 3 (§6). Замяніць кампанент LabeledEdit3 (для вываду выніку) кампанентам Memo. Увесці ў кампаненце Memo «журнал» дзеянняў: запісваць кожны выкананы прыклад. Дадаць кнопкі: «Сохранить», націснуўшы на якую, можна захаваць «журнал» у файл і «Очистить», націснуўшы на якую можна ачысціць змесціва акна Memo.

Этапы выканання задання

  1. Выдаліць кампанент LabeledEdit3.
  2. Уставіць кампанент Memo1.
  3. Ачысціць кампанент Memo1 з дапамогай акна рэдагавання спісаў радкоў.
  4. Змяніць апрацоўшчыкі кнопак «+», «-», «*» і «/».
  5. Дадаць на форму дыялог SaveDialog1 для захавання файла. Можна дадаць дыялог SaveTextFileDialog1, паколькі змесцівам Memo з'яўляюцца радкі і запіс будзе ажыццяўляцца ў тэкставы файл. Для таго каб па змоўчанні адкрывалася папка, якая змяшчае выкананы файл, у апрацоўшчык падзеі FormCreate упісаць каманду
    SaveDialog1 -> InitialDir =  ExtractFilePath(ParamStr(0));
  6. Напісаць апрацоўшчык OnClick для кнопкі «Сохранить».
  7. Напісаць апрацоўшчык OnClick для кнопкі «Очистить».

Прагледзець змесціва захаванага файла можна з выкарыстаннем праграмы Блокнот.

Прыклад 16.2. Кампанент Меmо на форме:

Прыклад 16.3. Некаторыя ўласцівасці кампанента Memo:

Уласцівасць

Прызначэнне

Font

Вызначае, як будзе выглядаць тэкст унутры акна Memo. Фармат усіх радкоў для дадзенага кампанента аднолькавы

Alignment

Адпавядаюць аналагічным уласцівасцям кампанентаў Label і Edit (прыклады 6.8, 6.9)

WordWrap

ReadOnly

ScrollBars

Вызначае наяўнасць палос пракруткі ў акне. Па змоўчанні ўласцівасць мае значэнне ssNone, што азначае іх адсутнасць. Можна задаваць значэнні: ssHorizontal (гарызантальная), ssVertical (вертыкальная), ssBoth (абедзве)

Калі ўключана гарызантальная паласа пракруткі, то ігнаруецца ўласцівасць WordWrap, якая адказвае на перанос слоў на новы радок (перанос радкоў ажыццяўляецца толькі на экране, новыя радкі ў спіс радкоў не дадаюцца).

Прыклад 16.4. Акно рэдагавання спісу радкоў:

Прыклад 16.5. Форма на этапе праектавання:

Апрацоўшчык падзеі OnClick для кнопкі «Сумма».

void __fastcall TForm1::Button1Click
               (TObject *Sender)

{

  int a = StrToInt(LabeledEdit1 -> Text);

  int b = StrToInt(LabeledEdit2 -> Text);

  int c = a + b;

  String s = LabeledEdit1 -> Text +

       "+" + LabeledEdit2 -> Text +

       "=" + IntToStr(c);

  Memo1 -> Lines -> Add(s);

}

Апрацоўшчык падзеі OnClick для кнопкі «Сохранить».

void __fastcall TForm1::Button5Click
                TObject *Sender)

{

  if (SaveDialog1 -> Execute())

    Memo1 -> Lines ->SaveToFile

    (SaveDialog1 -> FileName);

}

Апрацоўшчык падзеі OnClick для кнопкі «Очистить».

void __fastcall TForm1::Button5Click
                (TObject *Sender)

{

  Memo1 -> Lines -> Clear();

}

Дадатак у час працы: