Шупрута В.В. - Delphi 2005 - Учимся программировать (1080891), страница 50
Текст из файла (страница 50)
t x t будетотображать только текстовые файлы с соответствующим расширениемFilterlndexЕсли фильтр имеет несколько элементов (например, текстовые файлы I * . t x cФайлы изображений I * . j p g ) , то значение свойства определяет тот фильтр,который используется в момент появления окна на экранеinitialDlrИмя каталога, содержимое которого будет отображаться при появлении окнаDef a u l t E x tРасширение файла, указываемое по умолчаниюTitleЗаголовок диалогового окнаIОтображение самого диалогового окна обеспечивает метод Execute.
Результатом завершения будет код клавиши, которая была нажата пользователем(ОК или Cancel). Помните, что данный компонент не выполняет непосредственно открытия файла, - его назначение состоит в том, чтобы получить имяфайла, над которым будут производиться соответствующие действия (например, чтение файла).Из приведенных в табл.
7.25 свойств можно дополнительно отметить свойство F i l t e r . Для более удобного задания фильтра можно воспользоваться специальным редактором фильтров. Для этого в поле свойства F i l t e r необходимо нажать на кнопку с тремя точками, после чего на экране появится окноредактора свойств Filter Editor (рис. 7.19).В левой части окна вводится название фильтра, в правой - сам фильтр, покоторому будет производиться отображение необходимых файлов.!!<*!RHerFt» Nam»0ок—and--|нфш,Рис. 7.19 т Окно редактора фильтра Filter EditorГЛАВА 7 • Основные компоненты при программировании для Win32Следующая программа использует компонент TOpenDialog для открытиятекстового файла, который затем отображается с помощью компонентаТМето. Форма окна программы приведена на рис.
7.20, текст программы - влистинге 7.11.Открыть файлРис. 7.20 т Форма программы, использующей компонент TOpenDialogЛистинг 7.11 т Текст программы (процедуры обработки события c l i c k ) , демонстрирующейиспользование компонента TOpenDialog// Нажатие на кнопку 'Открыть файл'.procedure TForml.ButtonlClick(Sender: TObject);begin// Открываем файл и заполняем компонент Memo текстом.if OpenDialogl.Execute thenMemol.Lines.LoadFromFile(OpenDialogl.FileName);// Выводим имя открытого файла.Label2.Caption:='Свойство FileName = '+OpenDialogl.Filename;end;Диалоговое окно открытия файла появляется в результате нажатия кнопкиОткрыть файл. Отображение окна открытия файла осуществляет методExecute компонента TOpenDialog.Компонент TSaveDialogЭтот компонент также предназначен для работы с файлами (служит для сохранения файлов).
Основные свойства компонента TSaveDialog приведены втабл. 7.26.Компонент TSaveDialog^ Ц ГТаблица 7.26 т Основные свойства компонента TSaveDialogСвойствоКомментарийNameИмя компонента, используемое в программе для доступа к компоненту и егосвойствамFileNameИмя выбранного пользователем файла. Помимо собственно имени файла содержиттакже и путь к каталогу, в котором находится файлFilterСвойство, определяющее описание и фильтр, по которому будут отображаться файлы.В списке файлов отображаются только те файлы, описание которых соответствуетзаданной маске.
Например, значение свойства Текстовые файлы I * . t x t будетотображать только текстовые файлы с соответствующим расширениемFilterlndexЕсли фильтр имеет несколько элементов (например, Текстовые файлы I * . t x tФайлы изображений I * . j p g ) , то значение свойства определяет тот фильтр,который используется в момент появления окна на экранеinitialDirИмя каталога, содержимое которого будет отображаться при появлении окнаDefaultExtРасширение файла, указываемое по умолчаниюTitleЗаголовок диалогового окнаIОтображение диалогового окна сохранения файла обеспечивает уже знакомый нам метод Execute, значением которого является True, если пользователь нажал кнопку ОК. Приведенная ниже программа демонстрирует основныевозможности этого компонента.При успешном завершении диалога (нажатии кнопки ОК) формируетсятекстовый файл, в который записывается содержимое компонента ТМето(рис.
7.21).Текст программы (процедура обработки события C l i c k на кнопке Сохранить текст в файл) приведен в листинге 7.12.Пример использованиякомпонента TSaveDialog.Для сохранения указанногофрагмента текста в файлнажмите кнопку "Сохранить текст вфайл",сохранить текст в файлРис. 7.21 т Форма окна программы, демонстрирующейиспользование TSaveDialog•ГЛАВА 7 т Основные компоненты при программировании для Win32Листинг 7.12т Текст программы, демонстрирующей использование компонентаTSaveDialog// Нажатие на кнопку 'Сохранить текст в файл'.procedure TForml.ButtonlClick(Sender: TObject);beginif SaveDialogl.Execute then •Memol.Lines.SaveToFile(SaveDialogl.FileName);end;Изучаем основыработы сграфикой в Win32Зта глава посвящена описанию работы с графикой при создании программ для Win32.
Изложение материла в главе построено по той же схеме, что и описание работы с графикой для .NET, поэтому при изложении я буду иногда ссылаться на вопросы, рассмотренные в главе б.Итак, переходим к изучению основных вопросов, касающихся работы с графикой в Win32.Создавая программу, вы можете использовать специальный компонент,отображающий картинки, - TImage. Кроме этого, можно рисовать непосредственно на поверхности формы, а также любого компонента, имеющего соответствующую поверхность для рисования. Поверхности формы (и любогообъекта, на котором можно рисовать) соответствует объект Canvas, методыкоторого и обеспечивают вывод графических примитивов (точек, линий,эллипсов, многоугольников и т.д.).
В любом случае, отображаете ли вы графический файл или рисуете самостоятельно, вам будет необходимо использовать объект Canvas (то есть применить соответствующие методы). Рисовать в Win32 очень просто - достаточно написать процедуру обработкисобытия FormPaint (Рисование).В качестве примера приведу текст программы (листинг 8.1), которая обрабатывает это событие и выводит на поверхность формы картинку, а также некоторые простейшие графические примитивы.Листинг 8 . 1 т Пример обработки события FormPaintprocedure TForml.FormPaint(Sender: TObject);var•ГЛАВА 8 • Изучает основы работы с графикой в Win32img:TBitmap;begin// Отображение картинки.img:=TBitmap.Create;img.LoadFromFile('win32.bmp');Canvas.Draw(10,10,img);// Отображение надписи.Font. Name: = ', Arial' ;Font.Size:=14;Canvas.Brush.Color:=Forml.Color;Canvas.TextOut(200,10,'Графические возможности');Canvas.TextOut(200,40,'Delphi for Win32');// Рисуем прямоугольные области.Canvas.Brush.Style:=bsClear;Canvas.Rectangle(20,100,100, 200);Canvas.Rectangle(30,110,110,210);Canvas.Rectangle(40,120,120,220);// Рисуем закрашенные прямоугольные области.Canvas.Brush.Style:=bsSolid;Canvas.Brush.Color:=clRed;Canvas.Rectangle(200,100,300,200);Canvas.Brush.Color:=clGreen;Canvas.Rectangle(240,110,340,210);Canvas.Brush.Color:=clBlue;Canvas.Rectangle(280,120,380,220);end;Результат работы программы приведен на рис.
8.1.Wni32шГрафические возможности 1|Delphi for Win32Рис. 8.1 т Использование основных графическихвозможностей при обработке события FormPaintКарандаш и кисть - основные инструменты для рисованииХолст - графическая поверхностьдля рисования•Методы рисования графических примитивов рассматривают свойство Canvasкак некоторую поверхность (аналог объекта G r a p h i c s в .NET), холст, накотором они могут рисовать.Итак, эти методы используют так называемую графическую поверхность(холст), которая состоит из точек (пикселей). Положение каждой точкихарактеризуется двумя координатами: горизонтальной (X) и вертикальной (Y).Координаты отсчитываются от левого верхнего угла (рис.
8.2). Мак:симальный размер, который может быть использован для рисования на окнепрограммы, хранят свойства C l i e n t s W i d t h и C l i e n t H e i g h t формы.Далее мы познакомимся с основными инструментами, позволяющимирисовать на поверхности формы.(CHentWidth,ClientHeight)Рис. 8.2 т Система координат точек графической поверхности формыКарандаш и кисть - основные инструментыдля рисованияРисование осуществляется уже известными нам специальными инструментами - карандашами или кистями.
Карандаш позволяет задать вид линии(толщина, цвет, стиль, режим отображения), а кисть - способ закраскиопределенной области (цвет и стиль закраски).ГЛАВА 8 Т Изучаем основы работы с графикой в Win 3 2КарандашОбъект «карандаш» (Canvas . Pen) определяет вид линии - толщину, цвет,стиль и режим отображения. Обычно карандаш используется для вычерчивания точек, линий и контуров. Ниже в табл. 8.1 приведены свойстваобъекта ТРеп.Таблица 8.1т Основные свойства объекта трепСвойствоКомментарийColorЗадает цвет линии (контура) - константа типа TColorModeОпределяет режим отображения (задается специальными константами)StyleВид линии (задается специальными константами)widthСвойство определяет толщину линии в пикселяхКак видно из табл.
8.1, значение свойства C o l o r задает цвет вычерчиваемого объекта. Далее в табл. 8.2 приведены основные варианты цвета,который может быть использован для рисования.Таблица 8.2 т Некоторые варианты значения свойства Pen. c o l o rКонстантаЦветclBlackclwhitecisilverclGrayclMaroonЧерныйclRedclGreenclBlueclYellowclLimeclAquaКрасныйБелыйСеребристыйСерыйКоричневыйЗеленыйСинийЖелтыйСалатныйБирюзовыйКроме того, вы можете использовать так называемые системные цвета цвета графических элементов операционной системы.
В этом случае цветвычерчиваемых объектов будет жестко привязан к текущей цветовой схемеоперационной системы.Значение свойства Width задает толщину выводимой линии в пикселях.Например, инструкцияCanvas.Pen.Width:=4;Карандаш и кисть - основные инструменты для рисованиязадает линию толщиной в 4 пикселя.Свойство S t y l e определяет вид линии. Линия может быть непрерывнойили прерывистой, состоящей из штрихов различной длины. В табл. 8.3приведены примеры констант (значений свойства Style), задающих тот илииной вид линии.Таблица 8.3 • Значения констант, определяющих вид линииКонстантаВид вычерчиваемой линииpsSolidСплошная линияpsDotПунктирная линия с короткими штрихамиpsDashПунктирная линия с длинными штрихамиpsDashDotПунктирная линия с чередованием длинных и коротких штриховpsDashDotDotПунктирная линия с чередованием длинного и двух коротких штриховpsClearНеотображаемая линия (используется, например, в случаях, когда не надо отображатьграницу области)При задании констант, определяющих вид линий, помните, что еслисвойство Width больше единицы, то пунктирные линии выводятся каксплошные.Свойство Mode задает так называемый режим отображения.