Відображення та редагування багаторядкових текстових даних використовуючи компонент TDBMemo

Delphi-компонент TDBMemo являє собою багаторядковий текстовий редактор, який, зазвичай, зв’язується з текстовими полями великих розмірів або з BLOB-полями, що спеціалізуються на збереженні текстових даних. Такі поля іноді називають MEMO-полями і вони реалізовані в таблицях формату dBase і Paradox. Нагадаємо, що при проектуванні таблиці за допомогою утиліти Database Desktop поле такого типу позначається символом «M».

Зауваження: у компоненті можна використовувати буфер обміну за допомогою стандартних засобів операційної системи або успадкованими від предка TCustomMemo методами CopyToClipBoard, CutToClipBoard і PasteFromClipBoard.

Як уже зазначалося, при розгляді основних характеристик візуальних компонентів призначених для роботи з базами даних, серед властивостей компонентів такого типу, і зокрема компонента TDBMemo, виділяють дві, що забезпечують зв’язок з даними. Це властивість DataSource типу TDataSource (вказує на джерело даних, з яким пов’язаний компонент TDBMemo) і властивість DataField типу TDataField (вказує на поле набору даних, з яким пов’язаний компонент TDBMemo). Скориставшись даними властивостями пов’яжемо компонент TDBMemo з полем description таблиці cars («Автомобілі») бази даних autobazar («Автобазар»). Для цього, відкриємо delphi-проект, який ми створювали при розгляді однорядкового текстового редактора TDBEdit та доповнимо головну форму одним компонентом DBMemo1 типу TDBMemo та ще одним компонентом типу TLabel (містяться на закладках Data Controls та Standard палітри компонентів Delphi відповідно).

Головна форма delphi-проекту

Виходячи з того, що зв’язок всіх візуальних об’єктів з відповіднимим полями набору даних Table1 в даному delphi-проекті ми встановлювали програмно, тож не будемо відхилятися від такого способу і для компонента DBMemo1 встановимо зв’язок аналогічним чином. Для цього, перейдемо до обробника події OnCreate головної форми проекту і в тілі процедури FormCreate допишемо наступний програмний код.

procedure TForm1.FormCreate(Sender: TObject);
begin
// Підключення компонента DBMemo1 до поля Description набору даних Table1
DBMemo1.DataSource := DataSource1;
DBMemo1.DataField := ‘Description’;
end;

Відкомпілювавши та запустивши проект на виконання, перевіримо правильність його роботи.

Перегляд та редагування багаторядкового тексту використовуючи компонент TDMemo

Виходячи з того, що більшість інших властивостей і методів аналогічні властивостям і методам компонента TMemo, то розглядати кожну з них детально не будемо. Зупинемося лише на найбільш використовуваних.

Отже, головна властивість тексового редактора Lines типу TStrings – являє собою масив рядків, що містяться у вікні типу TDBMemo і є, на відміну від одноіменної властивості багаторядкового редактора TMemo, недоступною під час проектування. Текст у вікні визначається відповідним полем поточного запису і може змінюватися користувачем або програмно під час виконання. Відредаговане значення у вікні поміщається у відповідне поле набору даних.

Якщо delphi-компонент TDBMemo підключений до BLOB-поля чи до текстового поля великих розмірів, то розробник може визначити порядок завантаження даних з таблиці в компонент за допомогою властивості AutoDisplay типу Boolean (за замовчуванням приймає значення True).

Якщо властивість приймає значення True, то оновлення рядків в компоненті здійснюється автоматично після кожної зміни даних в полі, наприклад при переході до наступного запису в наборі даних. Якщо ж властивість приймає значення False, то замість реальних даних компонент буде відображати назву поля.

Встановлення для властивості AutoDisplay компонента DBMemo1 значення False

Відмова від автоматичного режиму завантаження BLOB-даних в редактор TDBMemo дещо прискорює процес виведення даних, так як ми звільняємося від необхідності обробки досить великого масиву інформації при відкритті набору даних і переміщенні по його записах. Але, в останньому випадку, кожен раз, коли виникає необхідність завантажити дані в елемент управління, потрібно викликати метод LoadMemo або ж скористатись клавішою Enter при активному компоненті.

Далі, розглянемо ще одну властивість, яка, при використанні багаторядкового редактора TDBMemo може бути корисною і на цьому, розгляд його властивостей зевершимо. Отож, поведінкою компонента при роботі з дуже довгими рядками можна управляти за допомогою властивості WordWrap типу Boolean. При її значенні True занадто довгий рядок зсувається вліво при переміщенні текстового курсора за праву межу компонента. При значенні False залишок довжини рядка переноситься на новий рядок, при цьому реально новий рядок в даних не створюється.

Скачати delphi-проект Відображення та редагування багаторядкових текстових даних використовуючи компонент TDBMemo.

Залишити коментар

Your email address will not be published. Required fields are marked *

*