Програмування.
Delphi
Delphi має можливість доступу до інформацією базі даних, яка доставляється поруч компонентів, відомі як набори даних (DataSets), однією із є компонент TTable. Прив’язані до даних ком-оненты (data-aware) — це керівні органи, які відбивають і маніпулюють тими даними, доступними Delphi. Щоб якось забезпечити рівень абстракції для органів управління, які можуть опинитися переміщатися за даними і… Читати ще >
Програмування. Delphi (реферат, курсова, диплом, контрольна)
ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАМУВАННЯ.
Исторически склалося отже програмування виникло і розвивалося як процедурне програмування, яка передбачає, що основою програми є алгоритм, процедура обробки даних.
Объектно-ориентированное програмування (ОВП) — це методика розробки програм, основу якої лежить поняття об'єкта, як деякою структури, яка описує об'єкт реального світу, її поведінка. Завдання, розв’язувана з допомогою методики ОВП, описується в термінах об'єктів і операцій з них, а програма за такого підходу є набір об'єктів і перетинів поміж ними.
Замечание.
Строго кажучи, у тому, щоб розробляти докладання в Delphi з урахуванням наданих середовищем розробки компонентів, знання концепції ОВП перестав бути необхідним. Проте задля глибшого розуміння, як програма взаємодіє зі компонентами, чого і чому Delphi додає до тексту програми, матеріал даної глави дуже корисним.
Класс.
Классический мову Pascal дозволяє програмісту визначати свої власні складні типи даних — записи (records). Object Pascal, підтримуючи концепцію объектно-ориентированного програмування, дає можливість визначати класи. Клас — це складна структура, куди входять у собі крім описи даних опис процедур і державних функцій, які можна виконані над представником класу — об'єктом.
Вот приклад описи простого класу:
TTPerson=class.
Private.
fname: string [15] ;.
f address: string [35] ;.
public.
procedure show;
end;
Данные класу називаються полями, процедури і функції - методами. У наведеному прикладі TTPerson — це класу, fname і faddress — імена полів, show — ім'я методу.
Замечание.
Согласно ухваленого Delphi угоді імена полів повинні починатися з літери f (від слова field — полі).
В програмі опис класу вміщують у розділ описи типів (type).
Объект.
В програмі представники класу — об'єкти, з’являються розділ var. Наприклад, так:
var.
student: TTPerson;
professor: TTPerson;
Следует особливо звернути увагу те що, що у Object Pascal об'єкт — це динамічна структура. Переменная-объект містить не дані, а посилання дані об'єкта. Тому програміст має потурбуватися виділення пам’яті тих даних.
Выделение пам’яті здійснюється за допомогою спеціального методу класу — конструктора, якому зазвичай привласнюють ім'я create (створити). Щоб підкреслити особливу роль і поведінку конструктора, описання класу замість слова procedure використовується слово constructor. Нижче наведено опис класу TTPerson, до складу якої запроваджено конструктор.
TTPerson = class.
private.
fname: string [ 15] ;
f address: string [35] ;
constructor create; // конструктор
public.
procedure show; // метод.
end;
Выделение пам’яті для даних об'єкта відбувається присвоюванням значення результату застосування метода-конструктора до типу (класу) об'єкта. Наприклад, після виконання інструкції.
professor: =TTPerson.create ;
выделяется необхідна пам’ять для даних об'єкта professor .
Помимо виділення пам’яті, конструктор, зазвичай, переймається тим присвоювання полях об'єкта початкових значень, т. е. здійснює ініціалізацію об'єкта. Нижче наведено приклад реалізації конструктора для об'єкта TTPerson.
constructor TTPerson. create ;
begin.
fname: = ‘ ‘ ;.
faddress:='' «;
end;
Реализация конструктора трохи незвичайна. По-перше, у тілі конструктора немає звичних інструкцій New, які забезпечують виділення динамічної пам’яті (всю роботу зі виділенню пам’яті виконує компілятор). По-друге, формально, конструктор не повертає значення, хоча у програмі звернення до конструктору здійснюється виключно як до методу-функции.
После оголошення і ініціалізації об'єкт можна використовувати, наприклад, встановити значення поля об'єкта. Доступ від поля об'єкта здійснюється зазначенням імені об'єкту і імені поля, які відокремлюються друг від друга точкою. Хоча об'єкт є посиланням, проте правило доступу до даних з допомогою посилання, за яким після імені перемінної, що є посиланням, треба робити значок ^ на об'єкти не поширюється. Наприклад, для доступу від поля fname об'єкта professor замість.
professor^. Fname.
треба писати.
professor.fname.
Очевидно, що такий спосіб доступу до полях об'єкта більш природний.
Если у програмі певний об'єкт большє нє використовується, можна звільнити пам’ять, зайняту полями цього об'єкта. На виконання цього дії використовують метод-деструктор free. Наприклад, щоб звільнити пам’ять зайняту полями об'єкта professor, досить записати.
professor.free;
Метод.
Методы класу (процедури і функції, оголошення яких включено на змалювання класу) виконують дії над об'єктами класу. Щоб метод було виконано, слід зазначити ім'я об'єкту і ім'я методу, відмежувавши одна назва від іншого точкою. Наприклад, інструкція.
professor.Show;
вызывает застосування методу show об'єкта professor. Фактично інструкція застосування методу об'єкта — це специфічний спосіб записи інструкції виклику процедури.
В програмі методи класу визначаються точно як і, як звичайні процедури і функції, крім те, що ім'я процедури чи функції, що є методом, і двох частин: імені класу, до якого належить метод, й імені методу. Ім'я класу від імені методу відокремлюється точкою.
Ниже наведено приклад визначення методу show наведеного вище класу TTPerson.
// метод show класу TTPerson.
procedure TTPerson. show;
begin.
ShowMessage (‘Имя: «+fname+#13+ «Адреса: «+faddress) ;
end;
Слід звернути увагу, що у інструкціях методу доступом до полях об'єкта здійснюється без вказівки імені об'єкта.
Инкапсуляция й поліпшуючи властивості об'єкта.
Под инкапсуляцией розуміється приховання полів об'єкта з метою забезпечення доступу до них лише за допомогою методів класу.
В Object Pascal обмеження доступу до полях об'єкта реалізується з допомогою властивостей об'єкта. Властивість об'єкта характеризується полем, що зберігає значення властивості, і двома методами, забезпечують доступом до полю властивості. Метод установки значення властивості називається методом записи властивості (write), метод отримання значення властивості називається методом читання властивості (read).
В описі класу перед ім'ям властивості записують слово property (властивість). Після імені властивості вказується його тип, потім імена методів, які забезпечують доступом до значенням властивості. Після слова read вказується ім'я методу, забезпечує читання властивості, після слова write — записи властивості ім'я методу. Нижче наведено приклад описи класу TTPerson, що містить два властивості: Name і Address.
type.
TName=string[15] ;.
TAddress=string[35] ;.
TTPerson = class.
Private.
FName:Tname; // значення св-ва Name.
Faddress:TAdress; // значення св-ва Address.
Constructor Create (Name :Tname) ;
Procedure Show;
Function GetName: TName;
Function GetAddress: TAddress;
Procedure SetAddress (NewAddress: TAddress) ;
Public.
Property Name: Tname.
read GetName;
Property Address: Taddress.
read GetAddress.
write SetAddress;
end;
В програмі для установки значення властивості необов’язково записувати інструкцію застосування об'єкта методу установки значення властивості, можна записати звичайну інструкцію присвоювання значення властивості. Наприклад, щоб привласнити значення властивості Adress об'єкта student, досить записати.
Student.Address:= «С.Петербург, ул. Садовая 21, кв. 3 » ;
Компилятор перетранслирует наведену інструкцію присвоювання значення властивості в інструкцію виклику методу.
Student.SetAddress («З. Петербург, вул. Садова 21, кв .3 »),•.
Внешне використання властивостей у програмі нічим не відрізняється від використання полів об'єкта. Разом про те між властивістю і полем об'єкта існує принципова різниця: при привласненні й читанні значення властивості автоматично викликається процедура, що виконує деяку роботу.
В програмі на методи властивості можна покласти деякі додаткові завдання. Наприклад, з допомогою методу можна перевірити коректність присваиваемых властивості значень, встановити значення інших, логічно пов’язаних із властивістю, полів, викликати допоміжну процедуру.
Оформление даних об'єкта як властивості дозволяє обмежити доступом до полях, хранящим значення властивостей об'єкта, наприклад можна лише читання. Щоб інструкції програми було неможливо змінити значення властивості, описання властивості слід зазначити лише ім'я методу читання. Спроба привласнити значення властивості, призначеному лише читання, викликає помилку часу компіляції. У наведеному вище описі класу TTperson властивість Name доступні лише для читання, а властивість Address — для читання і запис.
Установить значення властивості, захищеного від записи, можна під час ініціалізації об'єкта. Нижче наведені методи класу ттрегзоп, щоб забезпечити створення об'єкта класу ттрегзоп й доступу для її властивостями.
//конструктор об'єкта TTPerson.
Constructor TTPerson. Create (Name:TName) ;
begin.
FName:Name; end;
// метод отримання значення властивості Name.
Function TTPerson. GetName ;
begin.
Result: =FName ;
end;
// метод отримання значення властивості Address.
Function TTPerson. GetAddress;
begin.
Result: =FAddress;
end;
// метод зміни значення властивості Address.
Procedure TTPerson. SetAddress (NewAddress: TAddress) ;
Begin.
if FAddress = ««.
then FAddress: =NewAddress;
end;
Приведенный конструктор об'єкта TTPerson створює об'єкт й встановлює значення поля FName, визначального значення властивості Name.
Инструкции програми, щоб забезпечити створення об'єкта класу TTPerson та встановлення його властивості, може бути, наприклад, такими:
student: =TTPerson.create («Іванов ») ;
student.address:= «yл. Садова, д. З, кв. 25 » ;
Наследование.
Концепция объектно-ориентированного програмування припускає можливість визначати нові класи у вигляді додавання полів, властивостей і методів до існуючих класам. Такий механізм отримання нових класів називається породженням. У цьому новий, породжений, клас (нащадок) успадковує властивості й фізичні методи свого базового, батьківського класу.
В оголошенні класса-потомка вказується клас батька. Наприклад, клас TEmployee (співробітник) то, можливо породжена від розглянутої вище класу ттрегзоп шляхом додавання поля Department (відділ). Оголошення класу TEmployee у разі може бути так:
TEmployee = class (TTPerson).
FDepartment: integer; // номер відділу.
constructor Create (Name :TName;Dep: integer) ;
end;
Заключенное в дужки ім'я класу TTPerson показує, що клас TEmployee є похідною класу TTPerson. Натомість, клас ттрегзоп базове для класу TEmployee.
Класс TEmployee має власний конструктор, що забезпечує ініціалізацію класу батька і «своїх полів. Ось приклад реалізації конструктора класу TEmployee:
constructor TEmployee. Create (Name:Tname;Dep:integer);
begin.
inherited Create (Name);
FDepartment: =Dep;
end;
В наведеному прикладі директивою inherited викликається конструктор батьківського класу, потім присвоюється значення полю класу нащадка.
После створення об'єкта похідного класу у програмі можна використовувати поля і нові методи батьківського класу. Нижче наведено фрагмент програми, що демонструє таку можливість.
engineer: =TEmployee.create («Сидоров », 413) ;
engineer.address:= «yл.Блохина, д. 8, кв. 10 » ;
Первая інструкція створює об'єкт типу TEmployee. Друга встановлює значення властивості, яке належить до батьківській класу.
Директивы Protected і Private.
Помимо оголошень елементів класу (полів, методів, властивостей) опис класу, зазвичай, містить директиви protected (захищений) і private (закритий), які ступінь видимості елементів класу у програмі.
Элементы класу, оголошені в секції protected, доступні лише у породжених від цього класах. Область видимості елементів класу цієї секції не обмежується модулем, де знаходиться опис класу. Зазвичай, у секцію protected поміщають опис методів класу.
Элементы класу, оголошені в секції private, видимі всередині модуля. Ці елементи не доступні поза модуля, навіть у похідних класах. Зазвичай, у секцію Private поміщають опис полів класу, а методи, щоб забезпечити доступом до цим полях, вміщують у секцію protected.
Ниже наведено опис класу TTPerson, у якому включені директиви управління доступом.
TTPerson = class.
private.
Fname:TName; { значення св-ва Name }.
Faddress:TAddress; (значення св-ва Address).
protected.
Constructor Create (Name :TName);
Function GetName: TName ;
Function GetAddress: TAddress;
Procedure SetAddress (NewAddress:TAddress);
Property Name: Tname.
read GetName;
Property Address: Taddress.
read GetAddress.
write SetAddress;
end;
Замечание.
Если треба щоб елементи класу були цілком приховані, то визначення класу слід розмістити у окремий модуль.
Полиморфизм і віртуальні методи.
Полиморфизм — це можливість вільно використовувати однакові імена для методів, які входять у різні класи. Концепція поліморфізму забезпечує при застосуванні методу об'єкта використання саме тієї методу, що відповідає класу об'єкта.
Пусть визначено три класу, них базове двох інших.
type // базовий клас.
TPerson=class.
fname: string; { ім'я }.
constructor Create (name: string);
function info: string;
virtual;
end;
// похідний від базового Tperson.
TStud=class (TPerson).
fgr: integer; { номер групи }.
constructor Create (name: string; gr: integer) ;
function info: string; override;
end;
// похідний від базового Tperson.
Tprof=class (TPerson).
fdep: string; { назва кафедри }.
constructor Create (name:string;dep:string);
function info: string; override;
end;
В кожному з цих класів визначено метод info. У базовому класі з допомогою директиви virtual метод info оголошено віртуальним. Оголошення методу віртуальним дає можливість дочірньому класу зробити заміну віртуального методу власним. У кожному дочірньому класі визначено свій метод info, який заміщає відповідний метод батьківського класу (метод породженого класу, замісник віртуальний метод батьківського класу, позначається директивою override). Нижче наведено визначення методу info кожному за класу.
function TPerson.info: string;
begin.
result='' ;.
end;
function TStud.info:string;
begin.
result :=fname+ «гp. «+IntTostr (fgr) ;
end;
function TProf.info: string;
begin.
result :=fname+ «каф. «+fdep;
end;
В програмі список людей уявити масивом об'єктів класу TPerson.
list:array[1.SZL]of TPerson;
Замечание.
Здесь варто згадати, що об'єкт — це покажчик.
Объявить таким чином список можна оскільки Object Pascal дозволяє покажчику на батьківський клас привласнити значення покажчика на дочірній клас. Тому елементами масиву list може бути як об'єкти класу TStud, і об'єкти класу Tprof.
Вывод списку можна здійснити застосуванням методу info до елементам масиву, наприклад, так:
st:='';
for i:=l to SZL do // SZL — розмір массива-списка.
if list[i] NIL.
then st:=st+info.list[i]+#13; ShowMessage (st);
Во час програми кожен елемент масиву може містити як об'єкт типу TStud, і об'єкт типу Tprof. Концепція поліморфізму забезпечує застосування об'єкту саме тієї методу, що відповідає типу об'єкта.
Процедура TForml. Button1click, яка запускається внаслідок щиглика на кнопке Добавить (Button1), створює об'єкт list[n] класу TStud чи TProf. Клас створюваного об'єкта визначається станом радиокнопки студент (RadioButton1),.
Процедура TForml. Button2Click, яка виконується внаслідок щиглика на кнопке Список (Button2), застосовуючи метод info до кожного об'єкту списку (елементу масиву), формує рядок, яка була весь список.
Классы і об'єкти Delphi.
Для реалізації інтерфейсу Delphi використовує бібліотеку класів, якамістить велику кількість різноманітних класів, підтримують форму й різні компоненти (командні кнопки, поля редагування тощо. буд.).
Во час проектування форми докладання Delphi автоматично додає до тексту програми необхідні об'єкти. Якщо відразу після запуску Delphi переглянути вміст вікна редактора коду, можна побачити такі рядки:
type.
Tform1 = class (TForm).
private.
{ Private declarations }.
public.
{ Public declarations }.
end;
var.
Form1: Tform1.
Это опис класу вихідної, порожній, форми докладання і оголошення об'єкта — форми докладання.
Когда програміст, додаючи необхідні компоненти, створює потрібну форму, Delphi формує опис класу форми. Коли програміст створює функцію обробки події форми, чи її компонента, Delphi додає оголошення методу на змалювання класу форми докладання.
Помимо класів візуальних компонентів до бібліотеки класів входить клас обробки виняткових ситуацій (помилок), клас загального управління додатком та інші. Розгляд цих класів завданням цієї книжки не входить.
Создание простого текстового редактора.
1. Помістіть компонент Bevel (сторінка Additional) нові форму і привласніть його властивості Align значення alTop.
2. На компонент Bevel помістіть чотири кнопки. Озаглавьте їх &0реn…, &Save, Save &As… і E&xit.
Многоточие наприкінці імені є секретний код Windows, що означає, що щиголь на кнопці викликає іще одна діалог, а чи не призведе до негайному виконанню деякого дії.
3. Помістіть на форму компонент Memo і встановіть так його властивості:
Свойство Значение.
Align alClient.
ScrollBars ssBoth.
Lines (порожньо).
4. Змініть заголовок форми на My Editor. Потім помістіть на форму компонент OpenDialog і привласніть його властивостями такі значення:
Свойство Значення.
Default Ext ТХТ.
Options.ofHideReadOnly True.
Options.ofFileMustExist True.
Options.ofNoReadOnlyReturn True.
Title Open Text File.
5. Щоб відкрити вікно Filter Editor (Редактор фільтра), двічі клацніть на властивості Filter.
6. Заповніть два перших рядки у колонці Filter Name (Ім'я фільтра) назвами фільтрів Text files і All files, а колонці Filter (Фільтр) введіть відповідні фільтри: *.ТХТ і *.*.
7. Помістіть на форму компонент SaveDialog і встановіть щодо його властивостей такі значення:
Свойство Значення.
Default Ext ТХТ.
Options.ofHideReadOnly True.
Options.ofOverwritePrompt True.
Options.ofNoReadOnlyReturn True.
Title Save Text File.
8. Запровадьте хоча б набір фільтрів, що у діалогу відкриття файла.
9. Створіть оброблювач події OnClick для кнопки Exit, у якому одну команду Close;
10. Для оброблювача події OnClick кнопки Open використовуйте такі рядки:
WITH OpenDialog1 DO.
IF Execute THEN.
BEGIN.
Memo1.Lines.LoadFromFile (Filename);
HistoryList.Add (Filename);
Caption:= «My Editor- «+.
ExtractFilename (Filename);
SaveDialog1.Filename:=Filename;
Filename:='';
End;
11. Двічі клацніть на кнопці Save і введіть наступний рядок як її оброблювача події OnClick: .
Memo1.Lines.SaveToFile (SaveDialog1.Filename);
12. Нарешті, для кнопки Save As зазначте таке:
WITH SaveDialog1 DO.
IF Execute THEN.
BEGIN.
Memo1.Lines.SaveToFile (Filename);
Caption:= «My Editor — «+.
ExtractFilename (Filename);
End;
Мы створили простий текстовий редактор. Він дає змогу завантажувати, редагувати і зберігати містечка та середні файли. Можливості цього редактора приблизно таку ж, як і в докладання Notepad (Блокнот) Windows. Можна вирізати, скопіювати й вставляти текст, використовуючи стандартні комбінації клавіш Windows. Ім'я кожного відкритого файла додається до списку діалогу відкриття файла у разі, якщо ви знадобиться відкрити його знову. Проект нас іще знадобиться, тому збережемо його. Назвемо модуль MYEDITU. PAS, а головний проект — MYEDIT.PRJ.
Диалог вибору шрифту..
Загрузите знову проект MyEdit і помістіть на форму компонент FontDialog. Перемістіть кнопку Exit вправо і вставте кнопку з заголовком &Font між кнопками Save As і Exit. У оброблювач події OnClick нової кнопки помістіть наступний код:
WITH FontDialog1 DO.
IF Execute THEN.
BEGIN.
Memo1.Font:= Font;
Следующую рядок помістіть в оброблювач події OnApply компонента FontDialog:
Memo1.Font:= FontDialog1. Font;
Запустите програму і завантажте файл. З допомогою кнопки Font виберіть який-небудь шрифт. Використовуючи всі можливості, створіть найнезвичайніший варіант. Вміст файла вказуватиметься обраним вами шрифтом із застосуванням зазначеного розміру, стилю, і кольору. Знову відкрийте діалог вибору шрифту і перемістіть його те щоб не закривав самого вікна редактора. Внесіть кілька змін — у вікні діалогу й клацніть на кнопці Apply (Застосувати). Зміни стануть дійсними негайно, а діалог Font (Шрифт) не закриється. Це спрощує випробування різних можливостей. Зверніть увагу, у цьому прикладі програми, коли було використано кнопка Apply (Застосувати), ви неможливо зможете скасувати внесені. З іншого боку, це така і більше лихо — а то й влаштовує хіба що обраний шрифт, можна повернути шрифт, який використовували раніше.
Сохраните оновлений проект MyEdit, у якого тепер можливістю змінювати шрифти.
Компонент Memo не може відображати довше шрифту відразу. І тому існують інші компоненти.
Добавим до своєї програми діалог вибору кольору..
1. Помістіть нові форму діалог вибору кольору (компонент ColorDialog) і привласніть його властивості Color значення clWhite.
2. Встановіть властивість Ctl3D форми в False, а ролі константи кольору також виберіть clWhite.
3. Помістіть на форму нову кнопку, назвіть її Color.
В оброблювач події OnClick форми помістіть такі рядки:
IF ColorDialog1. Execute THEN.
Form1.Color := ColorDialog1. Color;
4. Запустіть програму.
Диалог вибору принтера.
Загрузите знову проект MyEdit і помістіть нею діалог настройки принтера компонент PrinterSetupDialog). Компонент Bevel розташуєте в такий спосіб, щоб залишилося місце на другому низки кнопок, де розмістіть дві нові кнопки, оза-аавленные &Print… і P&rint Setup… Створіть оброблювач події OnClick кнопки Print Setup з однією рядком коду:
PrinterSetupDialog1.Execute;
Запустите програму і клацніть на кнопці Print Setup (кнопка Print поки що робити щось може). З’явиться діалог.
Подготовка до печати.
Диалог Print Setup (Налаштування принтера) використовується для вибору та конфігурацій принтера. Коли справа сягне друку, на дію вступить діалог Print (Печатка).
В проект MyEdit додайте компонент PrintDialog, залишивши усі його властивості зі значеннями, встановленими за умовчанням. Двічі клацніть на кнопці Print, і замініть пару begin-end наступним кодом:
VAR.
POutput: TextFile;
N: LongInt;
BEGIN.
IF PrintDialog1. Execute THEN.
BEGIN.
AssingPrn (POutput);
Rewrite (POutput);
Printer.Canvas.Font: = Memo1. Font;
FOR N: = 0 to Memo1.Lines.Count — 1 DO.
Writeln (POutput, Memo1. Lines [N]);
CloseFile (POutput);
END;
END;
Перейдите в верхню частина модуля і додайте Printers в оператор uses. (Знайдіть рядок на початку файла, що починається зі слова uses. Після цього терміну додайте ім'я модуля і кому.) Виберіть на формі компонент FontDialog і привласніть його властивості Device значення fdBoth, щоб обмежити вибір шрифтами, які годяться й у екрана, й у принтера.
Мы хіба що додали на вашу редактор можливість друку. Цей редактор Демшевського не дозволяє друкувати кілька копій чи направляти їх в добір, але зможете роздрукувати вміст редактора будь-яким шрифтом. А допомогою діалогу Print Setup (Вибір принтера) ви зможете вибрати принтер, орієнтацію папери, і параметри конфігурації, відповідні вашому принтеру.
Диалог пошуку істини та заміни текста.
Загрузите проект MyEdit і встановіть властивість HideSelection компонента Memo в False. На формі розмістіть компоненти FindDialog і ReplaceDialog і виберіть їх обидва. Двічі клацніть на властивості Options і встановіть frHideMatchCase, frHideWholeWord і frHideUpDown в True. Додайте на другий ряд кнопки з заголовками Fi&nd… і &Replace… Для події OnClick кнопки Find використовуйте наступний рядок:
FindDialogl.Execute;
а для кнопки Replace наступний рядок:
ReplaceDialogl.Execute;
Выберите компонент FindDialog, перейдіть на сторінку Events і двічі клацніть на подію OnFind. Уставлену Delphi пару begin-end замініть наступним блоком коду:
VAR.
Buff, P, FT: Pchar;
BuffLen: Word;
begin.
WITH Sender AS TFindDialog DO.
BEGIN.
GetMem (FT, Length (FindText) + 1);
StrPCopy (FT, FindText);
BuffLen := Memo1. GetTextLen + 1;
GetMem (Buff, BuffLen);
Memo1.GetTextBuff (Buff, BuffLen);
P: = Buff + Memo1. SelStart + Memo1. SelLength;
P: = StrPos (P, FT);
IF P = NIL THEN MessageBeep (0).
ELSE.
BEGIN.
Memo1.SelStart: = P-Buff;
Memo1.SelLength: = Length (FindText);
END;
FreeMem (FT, Length (FindText) + 1;
FreeMem (Buff, BuffLen);
END;
end;
Когда закінчите, клацніть на компоненті ReplaceDialog, перейдіть на сторінку Events з вікна Object Inspector і клацніть на кнопці розкриття списку оброблювача події OnFind. З появи списку виберіть щойно створена оброблювач події для FindDialog. Тепер створіть оброблювач події OnReplace з такими рядками:
WITH Sender AS TReplaceDialog DO.
WHILE True DO.
BEGIN.
IF Memo1. SelText FindText THEN.
FindDialodFind (Sender);
IF Memo1. SelLength = 0 THEN Break;
Memo1.SelText: = ReplaceText;
IF NOT (frReplaceAll IN Options) THEN Break;
END;
Сохраните програму, запустіть її й завантажте текстовий файл. Замініть у ньому всі крапки над знаки оклику знаки і збережіть його.
Задание. Створіть форму відкриття графічних файлів.
Лабораторная по Delphi. Фундаментальна обізнаність із базами даних.
Работа з Database Form Expert..
Delphi має потужний засіб створення таблиць шляхом внесення чи ре дактирования полеи на формі. Розглянемо простий приклад того, як побудувати додаток, використовуючи експерт форм бази даних. У цьому вся прикладі використаний одне із зразків баз даних, включених в Delphi.
Использование експерта форм бази данных .
1. Запустіть Delphi.
2. Виберіть Database/Database Form Expert із меню.
3. У першому діалоговому вікні виберіть Create a simple form і Great a form using TTable objects; натисніть Next.
4. Наступного діалоговому вікні виберіть DBDEMOS в секції Drive or Alias. Виділення DBDEMOS виводить список таблиць, складових базі даних, в панелі списку зліва.
5. Виберіть EMPLOYEE. DB; клацніть мишею на Next.
6. Натисніть кнопку >>, аби вказати, що ви ж хотіли б побудувати форму із відображення всіх полів .
7.Продолжайте вибирати Next, приймаючи усі клопоти з вмовчанням до закінчення процесу створення форми.
8.Выберите з меню Run/Run.
Это найпростіше додаток дає користувачеві повний контроль над таблицею, що містить інформацію про службовців. Щоб маніпулювати записами, вгорі форми розміщена панель управління базою даних. Кожна кнопка панелі виконує певну функцію бази даних.
Поработав з цією простою користувальницьким інтерфейсом, виберіть Close, щоб завершити додаток.
Использование Database Desktop до створення нової таблиці.
Создадим таблицю нового зразка. Borland Database Desktop доступна в меню Tools в IDE Delphi. Виберіть цю опцію для виклику робочого столу.
Создание нової таблиці.
1. Виберіть опцію File/New/Table із меню. Саме тоді з’явиться діалогове вікно, просячи тип таблиці, яку ви бажаєте створити. Під час розробки нових додатків найзручніша простотою роботи із нею база даних Paradox; тому виберіть Paradox 7 і натиснімо ОК.
2. Насамперед ви вирішувати, які дані ви мені хочете зберігати у вашому таблиці і який тип цих даних. У цьому вся прикладі розглянемо таблицю інформації про студентів університету. Кожне полі має бути занесено в розділ Field Roster (список полів) діалогового вікна. Щоб занести перше полі, введіть SSN в колонці імені поля (Field Name). Це означає, що собі хочете додати нове полі, що його SSN.
3. Наступна частина інформації вимагає вказівки, якому типу даних зберігатиметься на полі. Номери Social Security (соціальної страховки) зберігаються як рядки символів. Клацніть правої кнопкою миші на полі Type, щоб показати що є типи даних. Для рядків Paradox використовує тип Alpha. Виберіть Alpha зі списку типів даних.
4. Деякі типи даних вимагають вказівки розміру. Це означає базі даних про найбільшому обсязі даних, котрі можуть зберігатися на полі. Що ж до номерів страховки, то ми знаємо, що SSN складається з 11 символів, включаючи тирі, отже введемо до цього полі число 11. Деякі типи даних, такі як Number (число), не використовують поняття «розмір поля».
5. На завершення слід повідомити базі даних, чи є полі ключем, чи ні. Ключ означає, що з кожної записом закріплено унікальне значення. Використання ключів в базах даних надзвичайно важливо. Пометим полі SSN як ключ, тому що ви знаєте, кожному студентові відповідатиме однаєдина запис й у студент має унікальний номер страховки.
6. Щоб співаку визначити таке полі таблиці, натисніть Enter. Продовжуйте визначати поля, використовуючи інформацію з таблиці.
Таблица .Визначення полів таблиці та його атрибутів.
Имя поля Тип Розмір Ключ.
SSN, А 11 *.
Name, А 30.
Class A 10.
Phone A 8.
GPA N.
7. Клацніть мишею на кнопці Save As, щоб зберегти інформацію про таблиці.
8. У діалозі Save Table as зазначте з вікна списку Drive (or alias) ім'я DBDEMOS. Запровадьте studinfo. db в текстовому вікні New file name для збереження таблиці клацніть мишею на ОК.
Как з Delphi одержати доступ створеної таблиці?.
Простейший засіб створення докладання, має доступом до таблиці в Delphi: це Form Expert. Тепер на, які кроки необхідно зробити побудови докладання на порожньому місці. Найпростішим способом забезпечення доступу і маніпуляції даними є використання візуальних компонентів бази даних. Візуальні компоненти бази даних зберігаються двома сторінках бібліотек візуальних компонентів: Data Access і Data Control. Органи управління у сторінці Data Access йдуть на здобуття права дати Delphi інформацію про таблицях бази даних, і функціях, що їх використані, тоді як сторінка Data Control містить низку візуальних компонентів, що потенційно можуть відображати інформацію бази даних чи забезпечувати інтерфейс для маніпуляцій даними (як-от вставка, видалення і модифікація).
Как надати Delphi інформацію про таблиці - компонент ТТаЫе.
Чтобы використовувати таблицю, у ролі перший крок дати знати Delphi, що ви маєте намір взаємодіяти з таблицею. Аби зробити це, потрібно помістити на форму об'єкт Table, якому доступні табличні дані. Перевірка списку властивостей показує, що там властивість, зване DataBaseName і TableName. Це два мінімальних властивості, потрібно встановити здобуття права таблиця була доступна Delphi. Властивість DataBaseName відповідає наявних у наявності псевдонімів бази даних. TableName описує таблиці базі даних, які мають побут використані.
Обеспечение доступу до таблиці з туристичною інформацією про студентів.
Первым кроком у створенні докладання, забезпечує доступом до базі даних із інформацією щодо студентів, яку створили раніше, має бути розміщення компонента ТТаЫе за вашої форми і конфигурирование властивостей DataBaseName і TableName.
1. Створіть нове додаток.
2. Помістіть на форму компонент ТТаЫе. Компонент TTable може бути знайдений сторінка DataAccess бібліотеки візуальних компонентів.
3. У творчому списку властивостей встановіть DatabaseName як DBDEMOS. DBDEMOS — це псевдонім бази, у якій зберігатися таблиця STUDINFO.DB.
4. Після установки властивості DatabaseName властивість TableName має засвідчити вікно списку з переліком всіх таблиць, наявних базі даних. Виберіть STUDINFO. DB як ім'я бази даних.
5. Встановіть значення властивості Active рівним true. Це негайно від-, крывает таблицю під час запуску докладання. Якщо встановити значення false, додаток це не матиме доступу яких даним в таблиці до того часу, поки властивість стане рівним true під час виконання.
6. Встановіть властивість Name рівним Studinfo.
Во час виконання можна модифікувати дві інші властивості - Readonly і Exclusive. Установка значення властивості Readonly рівним true дозволяє додатку лише переглядати дані базі даних без можливості їх модифікації. Опція Exclusive дозволяє доступом до даним тільки цьому додатку. Тепер в докладання є всю інформацію, що необхідно для підключення до таблиці. Однак жодного способу маніпуляції даними таблиці до того часу, поки об'єкт таблиці нічого очікувати пов’язані з об'єктом DataSourse.
Обеспечение зв’язку — компонент TDataSourse.
Delphi має можливість доступу до інформацією базі даних, яка доставляється поруч компонентів, відомі як набори даних (DataSets), однією із є компонент TTable. Прив’язані до даних ком-оненты (data-aware) — це керівні органи, які відбивають і маніпулюють тими даними, доступними Delphi. Щоб якось забезпечити рівень абстракції для органів управління, які можуть опинитися переміщатися за даними і відображати інформацію, розробили TDataSource. TDataSource дає підстави дізнатися, змінювалися чи дані, і побачити, який стан набору чи джерела даних.
Добавление DataSource.
1. Виберіть DataSource і додайте його за форму.
2. Встановіть властивість DataSet рівним Studinfo. Це зв’яже джерело даних із компонентом TTable безпосередньо з ім'ям Studinfo, який у часи чергу отримує доступ в таблицю STUDINFO. DB базі даних DBDEMOS.
3. Встановіть ім'я для DataSource як dsStudent.
Органы управління, прив’язані до даних — перегляд і модифікація даних.
Итак, ви організували усе необхідне для через відкликання таблицею. Але тепер необхідно вирішити, як дані мали бути зацікавленими відбито, і ними маніпулювати. Найпростіше можна зробити з допомогою органів управління, прив’язаних до даних (їх називають data-aware чи data-bound). Більшість коштів управління з прив’язкою до даних призначено для зв’язку полів бази даних із візуальним компонентом. Стандартні прив’язані компоненти дуже потужні, прості використання, і Delphi має великий набір цих компонентів. За винятком DBNavigator, все компоненти сторінка Data Control йдуть на відображення інформації баз даних. Щоб почати працювати із нею, додайте до вашого прикладу сітку DBGrid.
Добавление прив’язаної до даних сітки DBGrid.
1. Помістіть компонент DBGrid на вашу форму. Це перший із розміщених вами на формі компонентів, який бачимо під час виконання; зміните її розмір те щоб він посів більшу частину форми.
2. Встановіть властивість DataSource рівним dsStudent; це зв’яже сітку з джерелом даних.
3. Що за цьому відбувається? Щойно було встановлено властивість Data-Source, на сітці автоматично почали з’являтися імена полів. Якщо таблиці STUDINFO. DB були дані, вони повинні було б відображатись під час проектування. Але якщо значення властивості Active було встановлено рівним False, то нічого не можна побачити до того часу, воно стане рівним True.
4. Запустіть додаток. Відтоді дані дійсно можуть бути уведено підрозділи до сітку. Надрукуйте номер SSN, натисніть кнопку Tab, надрукуйте ім'я. Продовжуйте натискати TAB до того часу, доки заповніть все поля. Після закінчення першого запису компонент DBGrid автоматично зрушить курсор для наступної рядок. Продовжуйте додавання кількох простих записів в таблицю. Зверніть увагу, що й запроваджені дві записі розмови з однаковим SSN, станеться помилка.
5. Завершите додаток і додайте іще одна орган управління — компонент DBEdit. Він відображає одне полі таблиці. .На відміну від сітки, яка може відображати кілька записів, DBEdit відображає полі поточної записи. Поточна запис — це запис, до якої цей час має доступ машина бази даних. DBGrid вказує поточну запис, відображаючи, а з нею трикутний значок.
6. Додайте DBEdit на форму і встановіть властивість DataSource рівним dsStudent. Тепер слід зазначити полі, щоб компонент знав, що відображати. Щоб виявити полі, встановіть властивість DataField рівним SSN.
7. Запустіть програму.
Обратите увагу, що ви переходите в іншу записи (клацанням у ньому в сітці), покажчик поточної записи переміщається. Це додаток надає користувачеві певні можливості управління, але для великих баз даних це неприйнятно. Delphi має потужний засіб управління, що дозволяє переміщатися між об'єктами в таблице: DBNavigator. DBNavigator — це панель, що дозволяє легко пересуватися між таблицями.
Добавление DBNavigator..
Выберите DBNavigator і помістіть його за форму. Встановіть властивість DataSource рівним dsStudent.
Установите властивість ShowHint рівним True. Це викличе появу підказки щоразу, коли курсор миші буде затримуватися над кнопкою панелі.
Запустите додаток. Зверніть увагу, як просто переміщатися між записами, стрибати до початку чи кінцю бази даних, і редагувати записи.