Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

GOSY / 1 блок-все-шпора(печать)

.pdf
Скачиваний:
37
Добавлен:
09.05.2015
Размер:
1.57 Mб
Скачать

11 Использование компонентов стандартов диалогов для программирования в среде Delphi. Диалоги работы с файлами, цветами, шрифтами, поиска и замены.

Страница Dialogs содержит компоненты, используемые для создания различных диалоговых окон, общепринятых в приложениях Windows. Диалоги используются для указания файлов или выбора установок. Применение поставляемых в составе Delphi диалоговых окон помогает сэкономить время на разработку и придать вашему приложению совместимость с принятыми в Windows нормами диалога.

Компонент Тип

Описание

"Открыть файл"

TOpenDialog Предназначен для создания окна диалога

"Открыть файл". Компонент невизуальный.

"Сохранить файл"

TSaveDialog Предназначен для создания окна диалога

"Сохранить файл". Компонент невизуальный.

"Открыть рисунок" TOpenPictureDialog Предназначен для создания окна диалога "Открыть рисунок". Компонент невизуальный.

"Сохранить рисунок" TSavePictureDialog Предназначен для создания окна диалога "Сохранить рисунок". Компонент невизуальный.

"Шрифты" TFontDialog Предназначен для создания окна диалога "Шрифты". Компонент невизуальный.

"Цвет" TColorDiolog Компонент предназначен для создания окна диалога "Цвет". Компонент невизуальный.

"Печать" TPrintDialog Предназначен для создания окна диалога "Печать". Компонент невизуальный.

"Установка принтера" TPrinterSetupDialog Предназначен для создания окна диалога "Установка принтера". Компонент невизуальный.

"Найти" TFindDialog Предназначен для создания окна диалога "Найти". Компонент невизуальный.

"Заменить" TReplaceDialog Предназначен для создания окна диалога "Заменить". Компонент невизуальный.

Описание

TOpenDialog (TSaveDialog) и TOpenPictureDialog (TSavePictureDialog)

отображают модальные диалоговые окна Windows для открытия (сохранения) файлов. Компоненты TOpenDialog и TSaveDialog работают с файлами любого типа, а компоненты TOpenPictureDialog и TSavePictureDialog - с файлами изображений.

Отрытие соответствующего диалога осуществляется методом Execute. Если в диалоге пользователь нажмет кнопку Открыть (Сохранить), диалог закрывается, метод Execute возвращает true и выбранный файл отображается в свойстве компонента-диалога FileName. Если же пользователь отказался от диалога (нажал кнопку Отмена или клавишу Esc), то метод Execute возвращает false.

81

Значение свойства FileName можно задать и перед обращением к диалогу. Тогда оно появится в диалоге как значение по умолчанию в окне Имя файла. Таким образом, например, выполнение команды Сохранить как ..., по которой в файле с выбранным пользователем именем надо сохранить текст окна редактирования.

Компонент TFontDialog вызывает стандартный диалог Windows для выбора шрифта.

Отрытие диалога осуществляется методом Execute. Если в диалоге пользователь нажмет кнопку Открыть (Сохранить), диалог закрывается, метод Execute возвращает true и выбранные атрибуты шрифта передаются в свойство Font компонента-диалога. Если же пользователь отказался от диалога (нажал кнопку Отмена или клавишу Esc), то метод Execute возвращает false.

Значение свойства Font можно задать и перед обращением к диалогу. Тогда оно определит значения атрибутов шрифта по умолчанию, которые увидит пользователь в момент открытия диалога. Таким образом, например, выполнение команды Шрифт, по которой пользователь может задать текущее значение шрифта для компонента

Компонент TColorDiolog вызывает стандартный диалог Windows для выбора цветов.

Отрытие диалога осуществляется методом Execute. Если в диалоге пользователь нажмет кнопку Цвет, диалог закрывается, метод Execute возвращает true и выбранные атрибуты цвета передаются в свойство color компонента-диалога. Если же пользователь отказался от диалога (нажал кнопку Отмена или клавишу Esc), то метод Execute возвращает false.

Значение свойства Color можно задать и перед обращением к диалогу. Тогда оно определит значения атрибутов цвета по умолчанию, которые увидит пользователь в момент открытия диалога. Таким образом, например, выполнение команды Цвет, по которой пользователь может задать текущее значение цвета для компонента.

Компонент TPrintDialog отображает стандартное

диалоговое окно Windows для посылки работ на принтер. В нем пользователь может выбрать принтер и установить его свойства, указать число копий и последовательность их печати, печатать в файл или непосредственно на принтер, выбрать печатаемые страницы или печатать только выделенный фрагмент. Компонент PrintDialog не осуществляет печать. Он только позволяет пользователю задать атрибуты печати, которые могут быть прочитаны приложением как ряд свойств. А сама печать должна осуществляться программно с помощью объекта Printer или иным путем.

Диалог модальный и не появляется во время выполнения, пока это не активизировано обращением к методу Execute.

Описание

82

TFindDialog отображает диалог поиска в тексте заданного фрагмента, а TReplaceDialog отображает диалог контекстного поиска и замены.

Компонент TFindDialog отображает диалоговое окно Windows поиска в тексте заданного фрагмента.

Компонент TReplaceDialog отображает диалог контекстного поиска и замены. TReplaceDialog - производный класс от TFindDialog.

Диалоги вызываются методом Execute.

Сами по себе компоненты TFindDialog и TReplaceDialog не осуществляют ни поиска, ни замены. Они только обеспечивают интерфейс с пользователем. А поиск и замену надо осуществлять программно. Для этого можно пользоваться событием OnFind, происходящим, когда пользователь нажал в диалоге кнопку Найти далее, и событием OnReplace, возникающим, если пользователь нажал кнопку Заменить или Заменить все. В событии OnReplace узнать, какую именно кнопку нажал пользователь, можно по значениям флагов frReplace и frReplaceAll.

В компонентах Edit и MaskEdit вводимый и выводимый текст содержится в свойстве Text. Это свойство можно устанавливать в процессе проектирования или задавать программно. Выравнивание текста, как это имело место в метках и панелях, невозможно. Перенос строк тоже невозможен. Текст, не помещающийся по длине в окно, просто сдвигается и пользователь может перемещаться по нему с помощью курсора. Свойство AutoSize в окнах редактирования имеет смысл, отличный от смысла аналогичного свойства меток: автоматически подстраивается под размер текста только высота, но не ширина окна.

Компонент MaskEdit отличается от Edit тем, что в нем можно задать строку маски в свойстве EditMask. Маска состоит из трех разделов, между которыми ставится точка с запятой (;). В первом разделе — шаблоне записываются специальным образом символы, которые можно вводить в каждой позиции, и символы, добавляемые самой маской; во втором разделе записывается 1 или 0 в зависимости от того, надо или нет, чтобы символы, добавляемые маской, включались в свойство Text компонента; в третьем разделе указывается символ, используемый для обозначения позиций, в которых еще не осуществлен ввод. Прочитать результат ввода можно или в свойстве Text, которое в зависимости от вида второго раздела маски включает или не включает в себя символы маски, или в свойстве EditText, содержащем введенный текст вместе с символами маски.

При желании изменить атрибуты вновь вводимого фрагмента текста вы можете задать свойство SelAttributes. Это свойство типа TTextAttributes, которое в свою очередь имеет подсвойства: Color (цвет), Name (имя шрифта), Size (размер), Style (стиль) и ряд других. Например, введите на форму компонент RichEdit, диалог выбора шрифта FontDialog и кнопку Button,

83

которая позволит пользователю менять атрибуты текста. В обработчик щелчка кнопки можно было бы ввести текст:

if FontDialog1.Execute then with RichEdit1.SelAttributes do begin

Color:=FontDialog1.Font.Color;

Name:=FontDialog1.Font.Name;

Size:=FontDialog1.Font.Size;

Style:=FontDialog1.Font.Style; end;

RichEdit1.SetFocus;

В приведенном коде присваивается поочередно значение каждого свойства.

84

12. Программирование графики в среде визуального программирования Делфи. Компоненты вывода и построения графических изображений.

Графический режим работы экрана – это основной режим работы экрана. В этом режиме экран делится на отдельные объекты – пиксели. Пиксели образованы из пятен люминофора трех основных цветов – красного, зеленого и синего. Пятна расположены так близко, что цвета сливаются и образуют единый цвет. Отношение интенсивности определяет этот цвет. Общий уровень интенсивности определяет яркость пикселя. Современные мониторы позволяют воспроизводить миллионы цветов и оттенков. Но при программировании в Pascal мы пользуемся 16 основными цветами. Разрешение экрана – это количество пикселей по горизонтали и по вертикали. Записывается разрешение в виде двух цифр – AхB. Наиболее распространенное разрешение – 640х480 – режим VGA. Но существуют и другие режимы разрешения экрана. Для обеспечения работы с экраном компьютер имеет специальные устройства: видеоадаптер, видеоконтроллер и т.д., которые обычно реализуются в виде отдельной видеокарты, Для работы с этими устройствами используются специальные видеодрайверы монитора(драйверы – это специальные программы, которые обеспечивают взаимодействие с внешними устройствами). Для работы в графическом режиме в Турбо Паскаль создан специальный модуль процедур и функций GRAPH, поэтому этот модуль должен быть подключен в области USES: uses GRAPH

Необходимо установить графический драйвер, который устанавливается специальной процедурой Initgraph(N,K,‘путь к драйверу‘) N и K-это параметры-переменные целого типа, им присваиваются некоторые значения, которые определяют графический драйвер. Графический драйвер-это файл, который имеет расширение bgi.

Кроме того, необходимо установить и путь к библиотеке модуля graph, который называется graph.tpu. Путь к этому каталогу устанавливается в среде Турбо Паскаль (пункт меню Options→Directories).

Графическая система координат Каждый пиксель имеет в этой системе координат 2 координаты (х,у)

PutPixel(X,Y,C)- установить цвет отдельного пикселя.X,Y-координаты, С- цвет. Цвет можно указать либо константой, либо числовой константой. Т.о для построения графических изображений в модуле GRAPH есть 2 варианта: - строить по точкам; - использовать графические примитивы(отрезки, прямоугольники, окружности, эллипсы).

dx

x

 

639

dy

y 479

Для построения отрезков используются процедуры: Line(X1,Y1,X2,Y2), гдеX1,Y1 – координаты начала, X2,Y2 – координаты конца линии. Линия

85

вычерчивается текущим стилем и текущим цветом. LineTo(X,Y) – строит линию из точки текущего положения указателя в точку с координатами X,Y,(положение текущей точки определяется невидимымграфическим указателем, аналогичным курсору) и LineRel(dX,dY) – имеет 2 параметра, которые определяют проекции на оси X и Y данного отрезка. Наличие этих трех операторов отражает три разных подхода к построению ломаных линий, с помощью которых могут быть изображены различные фигуры. С помощью Line можно строить, если известны координаты точек, которые образуют вершины ломаной. Поэтому лучше иметь 2 массива (Х) и (У). LineTo используется в так называемой черепаховой графике или в случае, если следующие точки ломаной появляются не сразу. Наилучшим вариантом использования черепаховой графики – использование LineRel (черепаховая графика – метод построения с помощью робота-черепашки, который, перемещаясь по экрану оставляет за собой след).

Понятие холста

Многие компоненты в Delphi имеют свойство Canvas (канва, холст), представляющее собой область компонента, на которой можно рисовать или отображать готовые изображения. Это свойство имеют формы, графические компоненты Image, PaintBox и многие другие.

Класс TCanvas имеет набор стандартных свойств и методов, позволяющих выполнять простейшие графические операции.

Свойства и методы класса TCanvas

В качестве свойств используются классы, описывающие цвет и способ заполнения областей формы, цвет и толщину линий, стиль и размер шрифта и др. Дополнительные методы предназначены для вывода на экран изображений и рисунков.

Класс Карандаш (TPen). Карандаш – свойство Pen класса TCanvas, определяется следующими основными свойствами:

-Color – цвет карандаша;

-Style – стиль линии определяет, будет ли она сплошной или пунктирной. Возможные значения: psSolid (сплошная линия); psDash (пунктирная) и другие.

-Width – толщина линии в пикселях.

У канвы имеется свойство PenPos типа TPoint. Это свойство определяет в координатах канвы тукущую позицию пера. Перемещение пера без прорисовки линии, т.е. изменение PenPos, производится методом канвы MoveTo(X,Y). Здесь (X,Y) – координаты точки, в которую перемещается перо. Эта текущая точка становится исходной, от которой методом LineTo(X,Y) можно провести линию в точку с координатами (X,Y). При этом текущая точка перемещается в конечную точку линии и новый вызов LineTo будет проводить точку из этой новой текущей точки.

86

Класс Кисть (TBrush). Кисть – свойство Brush класса TCanvas, предназначена для заполнения сплошных областей клиентской части формы в соответствии с заданным шаблоном. Кисть имеет свойства Color и Style, совпадающие с аналогичными свойствами класса TPen, в класс TBrush добавлено новое свойство Bitmap, которое позволяет заполнять область не только сплошным цветом или пунктирными линиями, но и заранее подготовленными точечным изображением.

Класс Шрифт (TFont). Шрифт – свойство Font класса TCanvas, служит оболочкой ресурса Windows, определяющего текущий шрифт. Свойства:

-Color – цвет;

-Height – высота шрифта в пикселях;

-Name – название шрифта, под которым он зарегистрирован в Windows,

например Times New Roman, Courier, и т.д.

-Size – высота шрифта в пикселях;

-Style – стиль шрифта. Возможные значения: fsBold (полужирный), fsItalic (курсив), fsUnderline (подчеркнутый), fsStrikeOut (зачеркнутый).

Краткое описание методов класса TCanvas

1. procedure Arc(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer) –

рисование части эллипса;

Вычерчивание дуги выполняет метод Arc, инструкция:

Объект.Canvas.Arc (x1,y1,х2,у2,х3,у3,х4,у4)

где: x1, y1, х2, у2 — параметры, определяющие эллипс (окружность), частью которого является вычерчиваемая дуга; х3, у3 — параметры, определяющие начальную точку дуги; П х4, у4 — параметры, определяющие конечную точку дуги.

Начальная (конечная) точка — это точка пересечения границы эллипса и прямой, проведенной из центра эллипса в точку с координатами х3 и у3 (х4, у4). Дуга вычерчивается против часовой стрелки от начальной точки к конечной

2. procedure Chord(X1, Y1, X2, Y2, X3, Y3, X4, Y4): Integer –

рисуется замкнутая фигура, созданная пересечением эллипса и отрезка прямой линии (хорды);

3. procedure Ellipse(const Rect: TRect) – рисуется эллипс;

Метод Ellipse вычерчивает эллипс или окружность, в зависимости от значений параметров. Инструкция:

Объект.Canvas.Ellipse(x1,y1, х2,у2]

где: объект — имя объекта (компонента), на поверхности которого выполняется вычерчивание; x1, y1, х2, у2 — координаты прямоугольника, внутри которого вычерчивается эллипс или, если прямоугольник является квадратом, окружность.

4. procedure Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Longint) –

рисуется сектор эллипса, расположенный внутри заданного прямоугольника;

87

Метод pie вычерчивает сектор эллипса или круга. Инструкция:

Объект. Canvas.Pie (x1,y1,x2,y2,х3,у3,х4,у4) где: x1, y1, х2, у2 — параметры,

определяющие эллипс (окружность), частью которого является сектор; х3, у3, х4, у4 — параметры, определяющие координаты конечных точек прямых, являющихся границами сектора.

5. procedure Polygon(Points: array of TPoint) – рисуется сложная фигура, состоящая из отрезков, последовательно соединяющих точки, представленные в виде динамического массива элементов TPoint; последняя точка соединяется с первой; внутренняя часть фигуры заполняется в соответствии со значением свойства Brush;

Метод Polygon вычерчивает многоугольник. В качестве параметра метод получает массив типа TPoint. Каждый элемент массива представляет собой запись, поля (х,у) которой содержат координаты одной вершины многоугольника. Метод Polygon вычерчивает многоугольник, последовательно соединяя прямыми линиями точки, координаты которых находятся в массиве: первую со второй, вторую с третьей, третью с четвертой и т. д. Затем соединяются последняя и первая точки.

6. procedure Polyline (Points: array of TPoint) – метод аналогичен предыдущему, но заполнения внутренней части не происходит; Метод polyline вычерчивает ломаную линию. В качестве параметра метод получает массив типа TPoint. Каждый элемент массива представляет собой запись, поля х и у которой содержат координаты точки перегиба ломаной. Метод Polyline вычерчивает ломаную линию, последовательно соединяя прямыми точки, координаты которых находятся в массиве: первую со второй, вторую с третьей, третью с четвертой

7. procedure Rectangle(const Rect: TRect) – рисуется прямоугольник; внутренняя часть фигуры заполняется в соответствии со значением свойства Brush;

Прямоугольник вычерчивается методом Rectangle, инструкция:

Объект.Canvas.Rectangle (x1,y1,x2,y2)

где: объект — имя объекта (компонента), на поверхности которого выполняется вычерчивание; x1, y1 и х2, у2 — координаты левого верхнего и правого нижнего углов прямоугольника.

8.

procedure RoundRect(X1, Y1, X2, Y2, X3, Y3: Integer) –

рисуется прямоугольник с округленными углами;

Метод RoundRec тоже вычерчивает прямоугольник, но со скругленными углами. Инструкция вызова:

Объект.Canvas.RoundRec (x1,y1,х2, у2, х3, у3)

где: х3 и у3 — размер эллипса, одна четверть которого используется для вычерчивания скругленного угла.

9. procedure TextOut(X,Y:Integer; const Text: string) – вывод строки в конкретную позицию холста.

88

ДОПОЛНИТЕЛЬНО Вычерчивание графических примитивов на поверхности компонента (формы

или области вывода иллюстрации) осуществляется применением соответствующих методов к свойству Canvas этого компонента. Вычерчивание прямой линии осуществляет метод LinеТо, инструкция вызова которого в общем виде выглядит следующим образом:

Компонент.Canvas.LineTo(x,у)

Метод LinеТо вычерчивает прямую линию от текущей позиции карандаша в точку с координатами, указанными при вызове метода.

Начальную точку линии можно задать, переместив карандаш в нужную точку графической поверхности. Сделать это можно при помощи метода MoveTo, указав в качестве параметров координаты нового положения карандаша.

Вид линии (цвет, толщина и стиль) определяется значениями свойств объекта Реп графической поверхности, на которой вычерчивается линия.

Цвет и стиль границы многоугольника определяются значениями свойства Pen, а цвет и стиль заливки области, ограниченной линией границы, — значениями свойства Brush, причем область закрашивается с использованием текущего цвета и стиля кисти.

Поверхности, на которую программа может осуществлять вывод графики, соответствует объект Canvas. Свойство pixels, представляющее собой двумерный массив типа TColor, содержит информацию о цвете каждой точки графической поверхности. Используя свойство Pixels, можно задать требуемый цвет для любой точки графической поверхности, т. е. "нарисовать" точку. И:струкция

Form1.Canvas.Pixels[10,10]:= clRed окрашивает точку поверхности формы в красный цвет Холст состоит из отдельных точек — пикселов. Положение пиксела

характеризуется его горизонтальной (X) и вертикальной (Y) координатами. Левый верхний пиксел имеет координаты (0, 0). Координаты возрастают сверху вниз и слева направо. Значения координат правой нижней точки холста зависят от размера холста.

bsSolid Сплошная заливка bsClear Область не закрашивается

bsHorizontal Горизонтальная штриховка bsVertical Вертикальная штриховка

bsFDiagonal Диагональная штриховка с наклоном линий вперед bsBDiagonal Диагональная штриховка с наклоном линий назад bsCross Горизонтально-вертикальная штриховка, в клетку bsDiagCross Диагональная штриховка, в клетку

Для вывода текста на поверхность графического объекта используется метод TextOut. Инструкция вызова метода TextOut в общем виде выглядит следующим образом:

89

Объект.Canvas.TextOut (x,у,Текст)

где: объект — имя объекта, на поверхность которого выводится текст; х, у — координаты точки графической поверхности, от которой выполняется вывод текста; Текст — переменная или константа символьного типа, значение которой определяет выводимый методом текст.

Шрифт, который используется для вывода текста, определяется значением свойства Font соответствующего объекта canvas. Свойство Font представляет собой объект типа TFont.

Свойства объекта TFont, позволяющие задать характеристики шрифта, используемого методами TextOut и TextRect для вывода текста.

Name Используемый шрифт. В качестве значения следует использовать название шрифта, например Arial

Size Размер шрифта в пунктах (points). Пункт— это единица измерения размера шрифта, используемая в полиграфии. Один пункт равен 1/72 дюйма Style Стиль начертания символов. Может быть: нормальным, полужирным, курсивным, подчеркнутым, перечеркнутым. Стиль задается при помощи следующих констант: fsBold (полужирный), fsltalic (курсив), f sUnderline (подчеркнутый), f sStrikeOut (перечеркнутый).

Объект. Canvas . Font : = [fsBold, fs Italic]

Color Цвет символов. В качестве значения можно использовать константу типа Tcolor

Иногда требуется вывести какой-либо текст после сообщения, длина которого во время разработки программы неизвестна. Например, это может быть слово "руб." после значения числа, записанного прописью. В этом случае необходимо знать координаты правой границы уже выведенного текста. Координаты правой границы текста, выведенного методом Textout, можно получить, обратившись к свойству PenPos.

90

Соседние файлы в папке GOSY