Реферат: Программирование. Delphi - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Программирование. Delphi

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Архив Zip, 39 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ Исторически сложилось та к , что программирование возникло и развивалось как процедурное про г р аммирование , которое предполагает , что основой программы является алгоритм , процедура обработк и данных. Объектно-ориентированное программирование (ООП ) - это методика разработки программ , в основе которой лежит понятие объекта , как некоторо й структуры , описывающей объект реального мир а , его поведение . Задача , решаемая с исполь зованием методики ООП , описывается в терминах объектов и операций над ними , а прогр ам м а при таком подходе представля ет собой набор объектов и связей между ними. Замечание Строго говоря , для того , чт обы разрабатывать приложения в Delphi на базе предоставляемых средой разработки компонентов , знание концепции ООП не является необходимым . Одна ко для более глубоко го понимания того , как программа взаимодейств ует с компонентами , что и почему Delphi добавляет в текст программы , мате риал данной главы весьма полезен. Класс Классический язык Pascal позволяет программисту определять свои собственные сл ожные типы данных - записи ( records ). Object Pascal , поддерживая концепцию объектно-ориентированног о программирования , дает возможность определять классы. Класс - это слож ная структура , включающая в себя помимо оп исания данных описание процедур и функций , которые могут быть выполнены над пред ставителем класса - объектом. Вот пример описания простого класса : T T Person=class Private f name: string [15] ; f address : string [35] ; public procedure show; end ; Данные класса называются полям и , процедуры и функции - методами . В приведенном прим ере TTPerson - это и мя класса, fname и faddre ss - имена полей, 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( ‘ Имя : ' +fna m e+ # 13+'Адрес : ' +faddress) ; end ; Следует обратить внимание н а то , что в инструкциях метода доступ к полям объекта осуществляется без указания имени объекта. Инкапсуляция и свойства объекта Под инкапсуляцией понимается скрыти е полей объе кта с целью обеспечения доступа к ним только посредством методов класса. В Object Pascal ограничение доступа к полям объекта реализуется при помощи сво йств объекта . Свойство объекта характеризуется полем , хранящем значение свойства , и двумя мет одами , обеспечивающими доступ к по лю свойства . Метод установки значения свойств а называется методом записи свойства ( write ), ме тод получения значения свойства называется методом чтения свойства ( read ). В описании класса перед им енем свойства записывают сло во property (свойство ). После имени свойства указывается его тип , затем имена методов , обеспечивающих доступ к знач ению свойства . После слова read указывае тся имя метода , обеспечивающего чтение свойст ва , после слова write - записи свойства имя метода . Ниже приведен пример описания класса TTPerson, содержащего два свойства : Name и Address . type TN a me= string[15 ] ; T Address = string[35] ; TTPerson = class Private FN a m e:Tna m e ; // значение св - ва Name Faddress:TAdress; // значение св - ва Address Constructor Create (Name :Tna m e) ; Procedure Show; F u nction GetName:TName; Function GetAddress:TAddress ; Procedure SetAddress (NewAddress : TAddress ) ; Public Property Name: Tname read GetName; Proper ty Address: Taddress read GetAddress write SetAddress ; end ; В программе для установки значения свойства не обязательно записывать и нструкцию применения к объекту метода установ ки значения свойства , можно записать обычную инстр укцию присваивания значения свойств у . Например , чтобы присвоить значение свойству Adress объекта student , достаточно записать Student . Address : = ' С.Петербург , ул.Садовая 21, кв. 3 '; Компилятор перетранслирует привед енную инструкцию присваивания значения свойству в инструкцию вызова метода S tudent . SetAddress ( ' С . Петербург , ул . Садовая 21, кв .3 '), • Внешне использование свойств в программе ничем не отличается от использ ования полей об ъекта . Вместе с тем между свойством и полем объекта существует принципиальное отличие : при присвоении и чтении значения свойства автоматически вызываетс я процедура , которая выполняет некоторую рабо ту. В программе на методы свойства можно возложить некоторы е дополнительные задач и . Например , с помощью метода можно провер ить корректность присваиваемых свойству значений , установить значения других , логически связан ных со свойством , полей , вызвать вспомогательн ую процедуру. Оформление данных объекта как свойства позволяет ограничить доступ к полям , хранящим значения свойств объекта , например можно разрешить только чтение . Чтобы инстру кции программы не могли изменить значение свойства , в описании свойства надо указать только имя метода чтения . Попытка присвои ть з н ачение свойству , предназначенном у только для чтения , вызывает ошибку време ни компиляции . В приведенном выше описании класса TTperson свойство Name доступно только для чтения , а свойство Address - для чтения и записи. Установит ь значение свойства , защищен ного от записи , можно во время инициализац ии объекта . Ниже приведены методы класса ттрегзоп, обеспечивающие созд ание объекта класса ттрегзоп и доступ к его свойствам. // конструктор объекта TTPerson Constructor TTPerson.Create (Name:TName) ; begin FName : Na m e ; end ; // метод получения значения свойства Name Function TTPerson. GetName ; begin Result : =FN a m e ; end ; // метод получения значения свойства Address Function TTPerson. GetAddress; begin Result: = FAddress; end ; // метод изменения значения свойства Address Procedur e TTPerson . SetAddress (NewAddress : TAddress ) ; Begin if FAddress =' ' then FAddress : =N ewAddress ; end ; Приведенный конструктор объекта TTPerson создает объект и устанавливает значение поля FName , определяющего значение свойства Name . Инструкции пр ограммы , обес печивающие создание объекта класса TTPerson и установку его свойства , могут быть , например , такими : student : = TTPerson . create ( ' Иванов ' ) ; student.address:='y л . Садовая , д . З , кв . 25 '; Наследование Концепция объектно-ориентированного программирова ния предполагает возможность определять новые классы посредством добавления полей , свойств и методов к уже существующим классам . Т акой механизм получения новых классов называе тся порождением. При этом новый , порожденный , класс (пот омок ) наследует свойства и методы своего б азового , родительского класса. В объявлении класса-потомка указывается к ласс родителя . Например , класс TEmployee ( сотрудник ) может быть порожден от рассмотренн ого выше класса ттрегзоп путем добавления поля Department (отдел ). Объявление класса TEmployee в этом случае мож ет выглядеть так : TEmployee = class ( TTPerson ) FDepartment: integer; // номер отдела constructor Create (Name :TNa m e ; Dep: integer) ; end ; Заключенное в скобки имя к ласса TTPerson по казывает, что класс TEmployee является производным от к ласса TTPerson . В свою оче редь , класс ттрег з оп яв ляется базовым для класса TEmployee. Класс TEmployee и меет свой собственный конструктор , который об ес печивает инициализацию класса родителя и своих полей . Вот пример реализации конструктора класса TEmployee: constructor TEmployee.Create( N a m e:Tna m e ;D ep:integer); begin inherited Create (Name); FDepartment : =Dep ; end ; В приведенном примере директив ой inherited вызывается конструктор родитель ского класса , затем присваивается значение полю класса потомка. После создания объекта производного класс а в программе можно использовать поля и методы родительского класса . Ниже приведен фрагмент программы , демонстрирующей эту возможнос ть. engineer : = TE m ployee . 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 :TNa m e) ; Function GetNam e :TName ; Function GetAddress: T Address ; Procedure SetAddress(NewAddress:TAddress) ; Property Name:Tname read GetName; Property Address :Taddress read GetAddress write SetAddress ; end ; Замечание Если надо чтобы элементы к ласса были полностью скрыты , то определение класса следует помест ить в отдельный модуль. Полиморфизм и виртуальные методы Полиморфизм - это возможность использ овать одинаковые имена для методов , входящих в различные классы . Концепция полиморфизма обеспечивает при применении метода к объек ту использование именно того мет ода , к оторый соответствует классу объекта. Пусть определены три класса , один из них является базовым для двух других. type // базовый класс TPerson = class fname: strin g; имя constructor Create (name: string); function info: string; virtual ; end ; // производный от базового Tperson TStud=c l ass (TPerson) f gr: integer; номер группы constructor Create (name : stri ng; gr : integer) ; function info: string; override; end; // производный от базового Tperson Tprof = class ( TPerson ) fdep: string; название кафедры constructor Create(na m e:string ; dep : string) ; function info: s tring; override; end; В каждом из этих классов определен метод info . В базовом классе при помощи директивы virtual метод info объявлен вирт уальным . Объявление метода виртуальным дает в озможность дочернему классу произвести замену виртуального метода своим собственным . В каждом дочернем классе определен свой м етод info , который замещает соответствующий метод родительского класса ( метод порожденного класса , замещающий виртуальный метод родительского класса , помечается дирек тивой ove rride ). Ни же приведено определение метода info для каждого класса. function TPerson . info : string ; begin result = ’ ’ ; end; function TStud.info : string; begin result :=f na m e+ ' г p. ' +IntTostr(fgr) ; end; function TProf. info: string; begin result :=fname+ ' каф . '+ fdep ; end ; В программе список людей м ожно представить массивом объектов класса TPerson. list:array[ 1 ..SZ L ]of TPerson; Замечание Здесь следует вспомн ить , что объек т - это указатель. Объявить подобным образом список можно потому , что Object Pascal позволяет ук азателю на родительский класс присвоить значе ние указателя на дочерний класс . Поэтому э лементами массива list могут быть как объекты класса TStud , так и объекты класса Tprof . Вывод списка можно осуществить применением метода info к элементам массива , например , так : st: = ’ ’ ; for i:=l to SZL do // SZL - ра з мер мас сива - списка if list[i] <> NIL then st: = st+info. l ist[i]+ # 13 ; S h owMessage(st) ; Во время работы программы каждый элемент массива может содержать как объект типа TStud, так и объект тип а Tprof. Концепция пол иморфизма обеспечивает применение объекту именно того метода , который соответствует типу о бъекта. Процедура TForml . Button 1 click , которая запускается в результате щелчк а на кнопке Добавить ( Button 1), соз дает объект list [ n ] класса TStud ил и TProf . Класс создаваемого объек та определяется состоянием радиокнопки студент ( RadioButton 1), Процеду ра TFor m l . B u t t on 2 Clic k , которая выполняется в результате щелчк а на кнопке Список ( Button 2), применяя метод 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 следующую ст року : ReplaceD ialogl.Execute; Выберите компонент FindDialog, перейдите на страни цу Events и дважды щелкните на событии OnFind. Вставленную Delphi пару begin-end замените сл едующим блоком кода : VAR Buff, P, FT: Pchar; BuffLen : Word; begin WITH Sender AS TFindDialo g 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 сведения о таблице - компонент ТТаЫе Чтобы использовать таблицу , ну жно в качестве первого шага дать знать Delp hi, что вы намереваетесь взаимодействовать с т аблицей . Чтобы сделать это , нужно поместить на форму объект 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 . Это вызовет появ ление подсказки всякий раз , когда курсор м ыши будет задерживаться над кнопкой панели. Запустите приложение . Обратите внимание , как просто перемещаться межд у записями , прыгать к началу или концу ба зы данных и редактировать записи .
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
— Я себя плохо чувствую. Наверное, магнитная буря.
— Ты вчера запивал коньяк пивом.
— А я говорю - магнитная буря.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по программированию "Программирование. Delphi", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru