Глобальные объекты Delphi
Объект Application как посредник между программой и операционной системой Windows. Получение списка принтеров, доступных в системе. Объект Clipboard как область межпрограммного обмена данными Windows, которая инкапсулирует свойства для работы с буфером.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 28.10.2011 |
Размер файла | 37,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
6
Размещено на http://www.allbest.ru/
Содержание
Введение
1. Application
2. Screen
3. Printer
4. Clipboard
Заключение
Список литературы
Введение
Delphi - это комбинация нескольких важнейших технологий:
Высокопроизводительный компилятор в машинный код
Объектно-ориентированная модель компонент
Визуальное (а, следовательно, и скоростное) построение приложений из программных прототипов
Масштабируемые средства для построения баз данных
Компилятор, встроенный в Delphi, обеспечивает высокую производительность, необходимую для построения приложений в архитектуре «клиент - сервер». Этот компилятор является самым быстрым в на стоящее время в мире, его скорость компиляции составляет свыше ста двадцати тысяч строк в минуту на компьютере 486 DX33. Он предлагает легкость разработки и быстрое время проверки готового программного блока, характерного для языков четвертого поколения (4GL) и в тоже время обеспечивает качество кода, характерного для компилятора 3GL. Кроме того, Delphi обеспечивает быструю разработку без необходимости писать вставки на Си или ручного написания кода (хотя это возможно).
В процессе построения приложения разработчик выбирает их палитры компонент, делающие крупные мазки кистью. Еще до компиляции он видит результаты свой работы - после подключения к источнику данных их можно видеть отображенными на форме, можно перемещаться по данным, представлять их в том или ином виде. В этом смысле проектирование в Delphi мало чем отличается от проектирования в проектирующей среде, однако после выполнения компиляции мы получим код , который исполняется в десять - двадцать раз быстрее, чем то же самое сделанное при помощи интерпретатора. В Delphi компиляция производится непосредственно в родной машинный код, в то время как существуют компиляторы, превращающие программу в так называемый р - код, который затем интерпретируется виртуальной р - машиной.
C любой запущенной программой автоматически связываются четыре глобальных объекта: Application (программа), Screen (экран), Printer (принтер) и Clipboard (область межпрограммного обмена данными).
1. Application
Объект Application класса TApplication, расположенного в модуле Forms, инкапсулирует важнейшие свойства и методы программы как таковой. Он создается автоматически и доступен любой программе. Объект не помещен в палитру компонентов, поэтому его свойства недоступны на этапе конструирования, но становятся доступными при прогоне программы Некоторые свойства программы могут устанавливаться с помощью менеджера проекта (опция Project/Options и Application). Иерархия наследования: TObject > TPersistent > TComponent > TApplication.
Application является посредником между программой и операционной системой Windows. C его помощью создается главная и последующие формы, реализуется цикл обработки сообщений и исключительных ситуаций, реализуется контекстно-зависимая справочная служба и т.д.
Свойства Application:
property Active: Boolean; |
Содержит True, если любое окно программы имеет фокус ввода. |
|
property ExeName: string; |
Содержит полное имя (с маршрутом поиска) исполняемого файла программы. |
|
property HelpFile: string; |
Определяет имя файла справочной службы. |
|
property Hint: string; |
Содержит длинную часть оперативной подсказки. |
|
property HintColor: TColor; |
Определяет цвет фона ярлычка оперативной подсказки. |
|
property HintHidePause: Integer; |
Определяет паузу (в миллисекундах) от момента появления ярлычка до его исчезновения. |
|
property HintPause: Integer; |
Определяет паузу (в миллисекундах) от момента остановки указателя мыши до появления ярлычка. |
|
property HintShortPause: Integer; |
Определяет паузу (в миллисекундах) появления ярлычка при переходе с одного компонента на другой. |
|
property Icon: TIcon; |
Определяет пиктограмму программы. |
|
property MainForm: TForm; |
Определяет главное окно программы. |
|
property ShowHint: Boolean; |
Разрешает/запрещает показ ярлычков для всех окон программы. |
|
property ShowMainForm: Boolean; |
Разрешает/запрещает показ главного окна в момент старта программы. |
|
property Terminated: Boolean; |
Содержит True, если программа должна прекратить работу. Используется в приложениях с интенсивным счетом для контроля необходимости прекращения работы. |
|
property Title: string; |
Определяет текст под пиктограммой минимизированной программы. |
Методы Application:
procedure BringToFront; |
Помещает окно, которое было активным в последний раз, поверх остальных окон. |
|
procedure CancelHint; |
Запрещает показ ярлычков оперативной подсказки. |
|
procedure CreateForm(FormClass: TFormClass; var References); |
Создает объект - окно: вызывает конструктор класса FormClass и связывает его значение с переменной Reference. |
|
procedure HandleException (Sender: TObject); |
Осуществляет умалчиваемую обработку ИС. Используется при разработке новых компонентов. |
|
procedure HandleMessage; |
Приостанавливает работу программы до тех пор, пока не будут обработаны все сообщения, после чего создает событие OnIdle. |
|
function HelpCommand (Command: Word; Data: Longint): Boolean; |
Посылает справочной службе команду Command и параметр Data. |
|
function HelpContext(Context: THelpContext): Boolean; |
Вызывает раздел Context справочной службы и возвращает True, если такой раздел существует. |
|
function HelpJump(const JumpID: string): Boolean; |
Вызывает раздел справочной службы по его имени JumpID и возвращает True, если такой раздел существует. |
|
procedure HideHint; |
Убирает текущий ярлычок оперативной подсказки. |
|
procedure HookMainWindow (Hook:TWindowHook) ; |
Регистрирует функцию для перехвата сообщений Windows. TWindowHook=function(var Message:TMessage):Boolean of object; |
|
function MessageBox(Text, Caption: PChar; Flags: Longint): Integer; |
Создает и показывает диалоговое окно с текстом и кнопками: Text - сообщение в окне; Caption - заголовок окна. Назначение Flags и возвращаемое значение см. ниже. |
|
procedure Minimize; |
Минимизирует программу до пиктограммы. |
|
procedure NormalizeTopMosts; |
Приостанавливает действие стиля fsTopMost для всех окон программы. |
|
procedure NormalizeAllTopMosts; |
Распространяет действие NormalizeTopMosts на главное окно программы. |
|
procedure ProcessMessages; |
То же, что HandleMessage, но не создает событие OnIdle. |
|
procedure Restore; |
Восстанавливает первоначальные размеры всех окон программы до ее минимизации. |
|
procedure RestoreTopMosts; |
Восстанавливает действие стиля fsTopMost для всех окон программы. |
|
procedure Run; |
Запускает цикл получения и обработки сообщений Windоws. |
|
procedure ShowException (E: Exception) ; |
Реализует умалчиваемую обработку исключительных ситуаций. |
|
procedure Terminate; |
Завершает работу программы. |
|
procedure UnhookMainWindow (Hook:TWindowHook); |
Удаляет перехватчик сообщений, ранее установленный методом HookMainWindow. |
С помощью методов HandleException и ProcessMessages программа может временно приостановить свою работу до тех пор, пока не будут обработаны все предназначенные ей сообщения Windows. Это бывает необходимо для обновления видимых компонентов в процессе отображения длительного по времени цикла работы. Если, например, программа изменит текст метки или состояние компонента ProgressBar, сообщение об этом поступит в очередь сообщений и останется в ней, пока не закончится текущая работа. Вызов HandleException или ProcessMessages в этом случае позволит метке или ProgressBar действительно обновить свой вид и отобразить новую фазу процесса. Разница между методами HandleException и ProcessMessages состоит в том, что первый после очистки очереди сообщений вызывает обработчик фонового события OnIdle, а второй не делает этого. Назначение события OnIdle см. после описания событий объекта Application. (Idle [?аidl] - незанятый).
Функция MessageBox дает удобное средство вывода на экран небольшого сообщения. Параметр Flags может быть произвольной комбинацией следующих значений:
mb_AbortRetryIgnore В окно вставляются кнопки Abort, Retry, Ignore.
mb_ApplModal Пользователь должен закрыть это окно, перед тем как продолжить работу с окном, его породившим; однако он может переходить в другие окна и работать с ними. Этот признак берется по умолчанию, если не определены ни mb_SystemModal ни mb_TaskModal.
mb_DefBiitton1 Кнопкой по умолчанию является кнопка 1.
mb_DefBntton2 Кнопкой по умолчанию является кнопка 2.
mb_DefButton3 Кнопкой по умолчанию является кнопка 3.
mb_DefBiitton4 Кнопкой по умолчанию является кнопка 4.
mb_Help Вставляется кнопка Help.
mb_IconAsterisk В окно вставляется пиктограмма в виде строчной буквы i в кружке.
mb_IconExclamation В окно вставляется пиктограмма в виде знака восклицания.
mb_IconHand В окно вставляется пиктограмма в виде знака Stop.
mb_Iconlnformation To же, что и mb_IconAsterisk.
mb_IconQuestion В окно вставляется пиктограмма в виде знака вопроса.
mb_IconStop To же, что и mb_IconHand.
mb_Ok В окно вставляется кнопка Ok.
mb_OkCancel В окно вставляются кнопки Ok и Cancel.
mb_RetryCancel В окно вставляются кнопки Retry и Cancel.
mb_SystemModal Все программы приостанавливают свою работу, пока пользователь не закроет это окно.
mb_TaskModal Приостанавливается работа во всех окнах данной программы до тех пор, пока пользователь не закроет это окно.
mb_YesNo В окно вставляются кнопки Yes, No.
mb_YesNoCancel В окно вставляются кнопки Yes, No, Cancel.
Функция MessageBox возвращает такие значения:
idAbort |
Была нажата кнопка Abort. |
idNo |
Была нажата кнопка No. |
|
idCancel |
Была нажата кнопка Cancel. |
idRetry |
Была нажата кнопка Retry. |
|
idIgnore |
Была нажата кнопка Ignore. |
idYes |
Была нажата кнопка Yes. |
|
idOk |
Была нажата кнопка Ok. |
Для объекта Application определены следующие события:
property OnActivate: TNotifyEvent; |
Возникает, когда программа получает фокус ввода. |
|
property OnDeactivate: TNotifyEvent; |
Возникает, когда программа теряет фокус ввода. |
|
TExceptionEvent = procedure (Sender: TObject; E: Exception) of object; property OnException: TExceptionEvent; |
Обработчик этого события реализует умалчиваемую обработку исключительных ситуации. |
|
THelpEvent = function (Command: Word; Data: Longint; var CallHelp: Boolean): Boolean of object; property OnHelp: THelpEvent; |
Возникает при каждом обращении к справочной службе. |
|
property OnHint: TNotifyEvent; |
Возникает при необходимости отобразить длинную часть оперативной подсказки. |
|
TIdleEvent = procedure (Sender: TObject; var Done: Boolean) of object; property OnIdle: TidleEvent; |
Обработчик этого события реализует фоновую работу (см. ниже пояснения). |
|
TMessageEvent = procedure (var Msg: TMsg; var Handled: Boolean) of object; property OnMessage: TMessageEvent; |
Возникает при получении программой сообщения Windows. С помощью обработчика этого события можно обработать несколько или все сообщения до того, как их получит активная форма. |
|
property OnMinimize: TNotifyEvent; |
Возникает при минимизации программы. |
|
property OnRestore: TNotifyEvent; |
Возникает при восстановлении программой первоначальных размеров после ее минимизации. |
|
property OnShowHint: TShowHintEvent; |
Возникает при необходимости отобразить окно с ярлычком оперативной подсказки. |
Событие OnIdle возникает, когда программа обнаруживает, что ее очередь сообщений пуста. Обработчик этого события может незаметно для пользователя выполнить вспомогательную работу, например, проверить орфографию у только что введенного слова, обработать статистические данные. Важно помнить, что выполняемая в обработчике работа не может занимать много времени, иначе программа перестанет реагировать на запросы пользователя. Если фоновая работа отнимает много времени, ее следует разбить на сравнительно небольшие фрагменты или периодически вызывать в ней метод HandleMessage. Обработчик в параметре Done сообщает о необходимости продолжить фоновую работу (Done=False) или о ее завершении (Done=True). В первом случае программа просмотрит очередь сообщений и после ее очистки вернет управлению обработчику OnClick. Во втором случае программа будет ожидать поступления новых сообщений.
Для события OnShowHint определены такие типы:
type
THintInfo = record
HintControl: TControl;
HintPos: TPoint;
HintMaxWidth: Integer;
HintColor: TColor;
CursorRect: TRect;
CursorPos: TPoint;
ReshowTimeout: Integer;
HideTimeout: Integer;
HintStr: string;
end;
TShowHintEvent=procedure(var HintStr:string;var CanShow:Boolean;var HintInfo:THintInfo) of object;
В параметре HintStr обработчик получает текст, который должен содержать ярлычок, а в параметре HintInfo - дополнительную информацию, в том числе: HintControl - элемент, для которого выводится ярлычок; HintPos - координаты верхнего левого угла ярлычка; HintMaxWidth - максимальная ширина окна; HintColor - цвет окна; CursorRect - прямоугольник, в котором должен оставаться указатель мыши, чтобы появился ярлычок; CursorPos - текущее положение указателя мыши; ReshowTimeout - задержка в миллисекундах от момента возникновения события до появления ярлычка; HideTimeout - время показа ярлычка в миллисекундах.
2. Screen
Объект Screen класса TScreen, расположенного в модуле Forms, создается автоматически и инкапсулирует свойства и методы, упрощающие работу с дисплеем ПК. Иерархия наследования: TObject > TPersistent > TComponent > TScreen. В частности, с его помощью оперативно изменяется вид используемого программой курсора. Как правило, программа устанавливает указатель в виде песочных часов перед началом длинной по времени работы и восстанавливает умалчиваемую форму после ее завершения. Для этого используется свойство Cursor объекта Screen.
Screen.Cursor := crHourGlass;
// Выполняем длительную работу:
// Восстанавливаем умалчиваемую форму:
Screen.Cursor := crDefault;
Свойства объекта Screen:
property ActiveControl: TWinControl; |
Содержит ссылку на элемент с фокусом ввода. |
|
property ActiveForm: TForm; |
Содержит ссылку на окно с фокусом ввода. |
|
property Cursor: TCursor; |
Определяет текущий указатель мыши для окон программы. |
|
property Cursors[Index.: Integer]: HCursor; |
Открывает доступ к одному из зарегистрированных указателей мыши по его индексу. |
|
property Fonts: TStrings; |
Содержит список имен всех экранных шрифтов. |
|
property FormCount: Integer; |
Содержит общее количество показываемых на экране окон программы. |
|
property Forms[Index: Integer]: TForm; |
Открывает доступ к окну программы по его индексу. |
|
property Height: Integer; |
Содержит высоту экрана в пикселях. |
|
property IconFont: TFont; |
Определяет шрифт для надписи ниже пиктограммы минимизированной программы. |
|
property PixelsPerInch: Integer; |
Содержит разрешающую способность экрана в пикселях на линейный дюйм. |
|
property Width: Integer; |
Содержит ширину экрана в пикселях. |
Индексы зарегистрированных курсоров:
crDefault 0 |
crSizeNESW -6 |
crDrag -12 |
crNo -18 |
|
crNone -1 Нет |
crSizeNS -7 |
crNoDrop -13 |
crAppStart -19 |
|
crArrow -2 |
crSizeNWSE -8 |
crHSplit -14 |
crHelp -20 |
|
crCross -3 |
crSizeWE -9 |
crVSplit -15 |
crHandPoint -21 |
|
crIBeam -4 I |
crUpArrow -10 |
crMultiDrag -16 |
||
crSize -5 |
crHourGlass -11 |
crSQLWait -17 SQL |
С объектом Screen связаны два события:
property OnActiveControlChange: TNotifyEvent; |
Возникает при переходе фокуса ввода от одного элемента к другому. |
|
property OnActiveFormChange: TNotifyEvent; |
Возникает при переходе фокуса ввода от одной формы к другой. |
3. Printer
Объект Printer класса TPrinter автоматически создается, если в программе указана ссылка на модуль Printers. Этот объект предоставляет программисту все необходимое для того, чтобы научить программу выводить данные на один из подключенных к ПК принтеров. Иерархия наследования: TObject > TPrinter. Вывод на принтер в Windows ничем не отличается от вывода на экран: в распоряжение программиста предоставляется свойство Canvas объекта Printer, содержащее набор чертежных инструментов и методы, свойственные классу TCanvas.
Свойства объекта Printer.
property Aborted: Boolean; |
Содержит True, если выполнение предыдущего задания на печать было досрочно прекращено. |
|
property Canvas: TCanvas; |
Канва принтера - основной инструмент создания изображения на листе бумаги. |
|
property Copies: Integer; |
Указывает требуемое количество копий документа. |
|
property Fonts: TStrings; |
Содержит список всех доступных принтеру шрифтов. TrueType-шрифты могут входить в список даже, если принтер их не поддерживает. Модуль GDI позволяет выводить такие шрифты, преобразовывая их в графические образы. |
|
TPrinterOrientation = (poPortrait, poLandscape); property Orientation: TPrinterOrientation; |
Определяет ориентацию листа бумаги: poPortrait - вертикальная; poLandscape - горизонтальная. |
|
property PageHeight: Integer; |
Содержит высоту листа бумаги в пикселях принтера. |
|
property PageNumber: Integer; |
Содержит номер печатаемой страницы документа. |
|
property PageWidth: Integer; |
Содержит ширину листа бумаги в пикселях принтера. |
|
property PrinterIndex: Integer; |
Содержит индекс умалчиваемого принтера. |
|
property Printers: TStrings; |
Содержит список всех доступных принтеров. |
|
property Printing: Boolean; |
Содержит True, если принтер занят печатью. |
|
property Title: string; |
Содержит имя задания на печать. |
Все свойства объекта Printer доступны только во время выполнения программы. Значения свойств Canvas, Fonts, Orientation, PageHeight, PageNumber, PageWidth, Printers изменять во время выполнения программы нельзя.
Методы объекта Printer:
procedure Abort; |
Аварийно завершает вывод на устройство печати. Данные в буфере принтера теряются. |
|
procedure BeginDoc; |
Посылает информацию на принтер. |
|
procedure EndDoc; |
Завершает работу с документом и начинает непосредственный процесс печати. |
|
procedure NewPage; |
Указывает на переход к новой странице документа, увеличивает на единицу значение свойства PageNumber и устанавливает значение свойства Pen принтерного контекста Canvas в (0, 0). |
Пример управления некоторыми свойствами класса TPrinter:
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.ComboBoxl.Items := Printer.Printers; // Принтеры, определенные в системе
Form1.ComboBox2.Items := Printer.Fonts; // Шрифты, поддерживаемые принтерами
ComboBox1.ItemIndex := 0; // Установить на первый элемент
ComboBox2.ItemIndex := 0; // Установить на первый элемент
RadioButton1.Checked := True;
Printer.Orientation := poPortrait; // По умолчанию - ориентация Portrait
Edit1.Text := IntToStr(Printer.PageHeight); // Показать текущую высоту
Edit2.Text := IntToStr(Printer.PageWidth); // и ширину
ActiveControl := Edit3; // выбрать строку редактирования
end;
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
if (Sender as TRadioButton).Checked then begin
if (Sender as TRadioButton).Caption = 'Portrait'
then Printer.Orientation := poPortrait
else Printer.Orientation := poLandscape;
end;
end;
procedure TForm1.Button1Click(Sender: TObJect);
begin
Printer.Title := Edit3.Text; // Установить заголовок страницы
end;
procedure TFormI.Button2Click(Sender: TObJect);
begin
// Непосредственный вывод информации на принтер,
Print; // например, вывод содержимого формы
end;
Пример использования метода Abort:
procedure TForm1.FormKeyDown(Sender: TObJect; var Key: Word; Shift: TShiftState);
begin
// Если во время печати нажата клавиша ESC
if (Key=VK_ESCAPE) and Printer.Printing then begin
Printer.Abort; // Прервать печать
MessageDlg('Вывод на принтер прерван', mtInformation, [mbOK], 0);
end;
end;
Получение списка принтеров, доступных в системе
Ниже показано, как заполнить список (TListBox) информацией о принтерах, доступных в системе. Это может быть полезно, если в системе доступно несколько принтеров, - пользователь может выбрать один из них.
procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Sorted := True;
ListBox1.Items := Printer.Printers //Заполнить список информацией
end;
Переключение режимов вывода информации
Ниже показано, как использовать свойство Orientation для переключения режимов вывода информации на устройство печати.
procedure TForm1.PortraitClick(Sender: TObject);
begin
Printer.Orientation := poPortrait; //Вывод вертикально
end;
procedure TForm1.LandscapeClick(Sender: TObject);
begin
Printer.Orientation := poLandscape; //Вывод горизонтально
end;
Базовые операции с принтером
Сначала вызывается метод BeginDoc. Затем выводится информация, а ее непосредственная распечатка начинается после вызова метода EndDoc:
begin
Printer.BeginDoc;
// Здесь происходит вывод информации на принтер, например,
// с помощью вызова Printer.Canvas.TextOut(X, Y, ' ');
// Сообщить пользователю
Labell.Caption := 'Печатаем страницу ' + IntToStr(Printer.PageNumber);
Printer.NewPage; // Новая страница
Printer.EndDoc; // Начать печать
end;
Вывод на принтер графического изображения:
begin
Printer.BeginDoc; //Начнем вывод информации
Printer.Canvas.Rectangle(10, 10, 200, 200); //Нарисуем прямоугольник
Printer.EndDoc; //Начнем печать
end;
Вывод текстовой информации
Для вывода на устройство печати содержимого редактора (класс типа TMemo) можно воспользоваться рядом процедур, определенных в модуле Printers. Сначала ассоциируем значение текстовой переменной с принтером. Для этого используется процедура AssignPrn. Например:
var
TextToPrint : System.Text;
begin
AssignPrn(TextToPrint); // Ассоциировать с принтером
Rewrite(TextToPrint); // Открыть файл
Отметим, что с принтером может быть ассоциирована только одна текстовая переменная. application clipboard программа принтер
Попытка ассоциации второй текстовой переменной приведет к возникновению ошибки.
После этого вызов стандартных процедур Write и Writeln приведет к выводу текста на устройство печати (точнее, в принтерный контекст, определенный свойством Canvas). Вывод содержимого редактора осуществляется с помощью стандартной процедуры Writeln:
for Line := 0 to Memo1.Lines.Count-1 do Writeln(TextToPrint, Memo.Lines[Line]);
После того как вывод информации завершен, необходимо вызвать стандартную процедуру Close:
System.Close(TextToPrint);
Этот вызов эквивалентен вызову Printer.EndDoc. Для того чтобы текст на устройстве печати печатался тем же шрифтом, который используется для его отображения в редакторе, перед выводом информации на принтер необходимо выполнить следующее присваивание:
Printer.Canvas.Font := Memo1.Font;
Примечание. Для вывода текстовой информации можно также воспользоваться методом TextOut принтерного контекста (Canvas):
procedure Canvas.TextOut(X, Y: Integer; const Text: string);
Распечатка содержимого ASCII-файла с использованием функций модуля Printers:
procedure PrintFile(FileName : String);
var
F : TextFile;
S : String;
Row : Integer;
begin
AssignFile(F, FileName); Reset(F);
Row := 0;
Printer.BeginDoc;
while not EOF(F) do begin
Readln(F, S);
Printer.Canvas.Text0ut(0, Row, S)
// Получаем отрицательное значение PageHeight, поэтому вычитаем, а не прибавляем
Row := Row - Printer.PageHeight;
if Row >= Printer.PageHeight then Printer.NewPage;
end;
Printer.EndDoc; // начать печать
CloseFile(F);
end;
4. Clipboard
Объект Clipboard класса TClipboard - область межпрограммного обмена данными Windows (для краткости назовем ее буфером) - инкапсулирует методы и свойства для работы с буфером. Объект автоматически создается, если программа Delphi сослалась на модуль Clipbrd. Иерархия наследования: TObject > TPersistent > TClipboard.
Свойства объекта Clipboard:
property AsText: string; |
Рассматривает содержимое буфера как текстовую строку длиной до 255 символов (формат CF_TEXT). Для обмена с буфером более длинными строками следует использовать его методы SetTextBuf и GetTextBuf. |
|
property AsPicture: TPicture; |
Рассматривает содержимое буфера как графическое изображение: объект типа TPicture, иконка, растровое изображение или метафайл (форматы CF_PICTURE, CF_BITMAP, CF_METAFILE). |
|
property AsComponent: TPersistent; |
Рассматривает содержимое буфера как компонент (формат CF_COMPONENT). |
|
property FormatCount: Integer; |
Возвращает общее количество форматов, определенных свойством Formats. |
|
property Formats[Index: Integer]: Word; |
Содержит список всех форматов данных, поддерживаемых областью обмена данными. Параметр Index свойства Formats позволяет перемещаться по списку поддерживаемых форматов. |
С помощью свойств AsText, AsPicture и AsComponent можно размещать или извлекать из области обмена данными тексты, графические изображения и объекты. При этом в области обмена данными должна содержаться информация соответствующего формата, в противном случае произойдет ошибка. Чтобы проверить, содержится ли в области обмена данными информация в требуемом формате, можно использовать метод HasFormat, например:
if Clipboard.HasFormat(CF_TEXT)
then //Область обмена данными содержит информацию в виде текстовой строки
else // Область обмена данными содержит информацию в другом формате или
// вообще не содержит информации
Примечание. Форматы CF_PICTURE и CF_COMPONENT зарегистрированы как вызовы стандартной функции RegisterClipboardFormat:
CF_PICTURE := RegisterClipboardFormat('Delphi Picture');
CF_COMPONENT := RegisterClipboardFormat('Delphi Object');
Свойства AsText, AsPicture и AsComponent для извлечения и хранения данных используют стандартные функции GetClipboardData и SetClipboardData. Свойства FormatCount и Formats доступны только для чтения и только во время выполнения программы. Список поддерживаемых областью обмена данными форматов создается в момент инициализации приложения.
Методы объекта Clipboard:
procedure Assign (Source: TPersistent); |
Копирует в буфер объект, указанный параметром Source. Если объект принадлежит классам TGraphic, TBitmap, TPicture или TMetafile, то в область обмена данными копируется графическое изображение соответствующего формата (см. примечание ниже). |
|
procedure Сlear; |
Очищает буфер. Очистка происходит автоматически при добавлении данных в область обмена. |
|
procedure Close; |
Уменьшает на 1 счетчик блокировок буфера и закрывает буфер, если счетчик содержит 0. В системе ведется подсчет вызовов методов Open и Close, поэтому вызовы этих методов должны быть парными. |
|
function GetTextBuf(Buffer: PChar; BufSize: Integer): Integer; |
Копирует из Clipboard не более BufSize символов в текстовый буфер Buffer и возвращает действительное количество скопированных символов. |
|
procedure HasFormat(Format: Word): Boolean; |
Возвращает True, если буфер содержит данные в формате Format. |
|
procedure Open; |
Увеличивает на 1 счетчик блокировок буфера и открывает его, если он еще не был открыт. В вызове метода нет необходимости, если вы используете только один формат данных. |
|
procedure SetTextBuf(Buffer: PChar); |
Помещает в указанный компонент (Clipboard) содержимое текстового буфера Buffer. Таким компонентом может быть строка редактирования, редактор или список. |
Чтобы поместить в буфер изображение, хранящееся, например, в объекте BitMap класса TBitMap, следует обратиться к методу Assign буфера: Clipboard.Assign(BitMap);
а для копирования изображения из буфера - к методу Assign объекта-приемника: BitMap.Assign(Clipboard);
Возможные значения параметра Format метода HasFormat:
Значение |
Описание |
|
CF_TEXT |
Текстовая информация. Каждая строка заканчивается парой CR/LF, символ «0» указывает на конец текста |
|
CF_BITMAP |
Растровое изображение |
|
CF_METAFILE |
Метафайл |
|
CF_PICTURE |
Объект типа TPicture |
|
CF_OBJECT |
Объект типа TPersistent |
Использование метода GetTextBuf
Метод GetTextBuf копирует текстовую информацию (число символов задается параметром BufSize) в буфер, указанный параметром Buffer, и возвращает число скопированных символов. В буфере будет находиться текст, заканчивающийся символом «0». Для того чтобы узнать, сколько символов занимает текст, используйте метод GetTextLen.
Обычно методы GetTextBuf и SetTextBuf используются только при работе со строками, размер которых превышает 255 символов. Например, для того чтобы поместить в объект типа TEdit текст, превышающий 255 символов, необходимо выполнить следующие действия:
var
Buffer : PChar,
Size : Byte;
begin
Size := Edit1.GetTextLen; // Размер строки в редакторе
Inc(Size); // Место для символа «0»
GetMem(Buffer, Size); // Создать буфер
Edit1.GetTextBuf(Buffer, Size); // Скопировать текст
Edit2.Text := StrPas(Buffer); // Преобразовать содержимое
FreeMeni(Buffer, Size); // Освободить память
end;
Область обмена данными и стандартные компоненты
Компоненты Edit и Memo имеют несколько методов для работы с областью обмена данными - CopyToClipboard, CutToClipboard и PasteFromClipboard.
Например, для того чтобы скопировать или вырезать текст из объекта типа TMemo в область обмена данными или из этой области в объект TMemo, необходимо выполнить следующие действия:
with Memo1 do begin
SelectAll; //Выделить весь текст
case EditCommand of
Ed_Copy : CopyToClipboard; // Скопировать в область обмена данными
Ed_Cut : CutToClipboard; // Вырезать в область обмена данными
Ed_Paste : PasteFromClipboard; // Скопировать из области обмена данными
end;
end;
Копирование содержимого области обмена данными в компонент типа TMemo:
procedure TFormI.Button1Click(Sender: TObject);
begin
if not Clipboard.HasFormat(CF_TEXT)
then MessageDlg('В Clipboard нет текста', mtInformation, [mbOK], 0)
else Memo1.PasteFromClipboard;
end;
Заключение
В ходе выполнения работы получены новые теоретические сведения о современном техническом и программном обеспечении офисной деятельности; привиты практические навыки работы с операционными системами, программными оболочками, разнообразными служебными и сервисными средствами; освоено применение офисного пакета Microsoft Office для автоматизации сбора, хранения, обработки и передачи информации.
Также были углублены и закреплены знания по алгоритмизации, программированию и решению в интегрированной визуальной среде программирования Delphi задач по экономике и управлению на предприятии.
Список литературы
1. Ахаян В., Горев А., Макашарипов С. Эффективная работа с СУБД. С-П.: ПИТЕР, 2002 г.
2. Ворощук А. Н. Основы ЦВМ и программирование. Главная редакция физико-математической литературы изд-ва “Наука”, М., 2003 г.
3. Вычислительные машины, системы и сети: Учебник/А.П. Пятибратов, С.Н. Беляев, Г.М. Козырева и др.; Под ред. проф. А.П. Пятибратова. - М.: Финансы и статистика, 2001 г.
4. Горев А., Макашарипов С., Владимиров Ю. Microsoft SQL Server для профессионалов. СПб.: Питер, 2003 г.
5. Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. М., 2001 г.
6. Дарахвелидзе П., Марков Е. Программирование в Delphi. Спб, 2005 г.
7. Дейт К. Введение в системы баз данных. М: Наука, 2002 г.
8. Каган Б. М. Электронные вычислительные машины и системы: Учеб. пособие для вузов. - 2-е изд., перераб. и доп. М.: Энергоатомиздат, 2005 г.
9. Макдона Р. Основы микрокомпьютерных вычислений: Пер. с англ./ Т. Г. Никольской; Под ред. В.Ф. Шаньгина. М.: Высш. шк., 2002 г.
10. Мейер Б. Бодуэн К. Методы программирования. М., 2002 г.
11. Ахо А.В., Хопкрофт Д.Э., Ульман Д.Д. Структуры данных и алгоритмы. - М.: Издательский дом “Вильямс”, 2000.
12. Кнут В. Искусство программирования. Т.1. Основные алгоритмы. - 3-е изд. - Издательский дом “Вильямс”, 2000.
Размещено на Allbest.ru
Подобные документы
Windows как посредник пользователя и операционной системы, облегчая процесс общения между ними, история становления и развития ее первых версий. Функциональные особенности и отличия Windows 95/98/ME и Windows NT/2000/XP/Vista/7, их архитектурные решения.
презентация [12,7 K], добавлен 23.10.2013Методы и приемы работы в операционной системе Windows XP, часто используемой при работе с персональным компьютером. Средства по настройке и конфигурации операционной системы. Соответствие используемых аппаратных средств потребностям пользователя.
курсовая работа [4,7 M], добавлен 15.07.2009Правила формирования списка на рабочем листе. Что понимается под структурой списка. Как осуществляется ввод данных. Простая сортировка списка. Интерфейс и функции приложения PowerPoint. Создание, редактирование и форматирование текстового документа.
лабораторная работа [25,1 K], добавлен 16.01.2015Основные характеристики графики в операционной системе Windows, реализация объектно-ориентированной идеологии. Специфика и этапы разработки программного продукта, описывающего графический объект, на 32-битном ассемблере с использованием API-функции.
курсовая работа [82,3 K], добавлен 18.05.2014Основы работы с многооконным графическим пользовательским интерфейсом операционной системы Windows95/NT. Основы работы с прикладными программами Windows и DOS. Разработка простого приложения для Windows при помощи средства разработки приложений DELPHI.
контрольная работа [281,0 K], добавлен 15.01.2009Изучение учебника и справочной подсистемы Windows 95/NT, получение навыков работы с "мышью", манипулирование окнами и значками программ и документов, запуска программ в системе Windows 95/NT. Разработка простого приложения для Windows при помощи Delphi.
контрольная работа [1,1 M], добавлен 15.01.2009Общая характеристика и возможности сетевой операционной системы Windows 95. Объекты ОС, их классификация, разновидности. Правила работы с Word, создание и сохранение документов. Формирование и ввод данных в таблицах Excel. Форматирование дисков.
контрольная работа [835,0 K], добавлен 25.02.2009Знакомство с операционной системой Windows. Исследование её устройства, истории, возможностей, особенностей работы с ней для получения новых знаний. Описание наиболее использующихся и важных функций этой операционной системы, их практическое освоение.
контрольная работа [2,9 M], добавлен 14.12.2009Сущность основных аспектов эффективного функционирования в операционной системе Windows. Способ создания локальных сетей в операционной системе Windows XP, изучение их возможностей. Глобальная сеть Интернет в ОС Windows, структура и основные программы.
курсовая работа [352,8 K], добавлен 15.02.2009Общая характеристика и особенности операционной системы Windows 95, ее сетевые возможности, оценка преимуществ и недостатков. Сравнительная характеристика Windows 95, 98 и Millennium. Принципы работы и устройство принтеров, их части и назначение.
курсовая работа [42,2 K], добавлен 05.03.2010