КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
AutoScroll, HorzScrollBar и VertScrollBar
Свойства TForm Класс TForm предоставляет возможность изменять его поведение и внешний вид формы с помощью ряда свойств. Active Совет: Неактивные окна продолжают получать сообщения о перемещении и выборе мыши. Независимо от типа приложения в один момент времени может быть активной только одна форма. Вы можете обратить внимание на то, что заголовок родительской формы в MDI-приложении изображен "активным" цветом. Не попадитесь на эту удочку — свойство Active родительского MDI-окна, никогда не бывает равным True. Совет: Свойство ActiveForm класса TScreen, возвращает форму, которая в данный момент имеет фокус ввода. ActiveControl procedure TDataEntryForm.FormCloseQuery(Sender: Tobject; Совет: Метод SetFocus потомков TWinControl устанавливает фокус ввода и обновляет свойство ActiveControl. Большинство событий передает параметр Sender своему обработчику. Sender определяет, какой элемент обнаружил событие и запустил обработчика. Свойство AutoScroll управляет появлением полос прокрутки в форме, размеры которой не позволяют вывести все ее элементы одновременно. Если свойство равно True, и вы изменили размеры так, что не все элементы формы видны, в форме автоматически появляются полосы прокрутки. Если же значение свойства— False, вы теряете доступ к элементам формы, не поместившимся на экране. Совет: КомпонентTScrollBar, позволяет прокручивать форму независимо от свойства AutoScroll. Вы можете управлять полосами прокрутки с помощью свойств HorzScrollBarи VertScrollBar. Это весьма полезно в программах, реализующих свойство распахивания окна. Поскольку размеры выводимой диаграммы могут быть больше размеров формы, а выводите вы ее самостоятельно, AutoScrollне активизируется, и вам следует обеспечить прокрутку и рисование, самому. Вот пример такого кода, обеспечивающего прокрутку в двойном размере формы. {Устанавливаем диапазон вертикальной прокрутки.} BorderIcons Совет: Для того чтобы значения biMinimize и biMaximize работали, необходимо установить свойствоBorderStyle равным bsSizeable или bsSizeToolWin. Значение biHelp выводит кнопку с вопросительным знаком. Щелчок на ней вызывает контекстно-зависимую справку, которая выводится, как текст подсказки Hint, т.е. без вызова Windows Help. На рис. 1.1 представлена такая кнопка.
Рис. 1.1. Доступ к контекстно-зависимой справке можно получить с помощью щелчка на кнопке с вопросительным знаком в заголовке формы. Значение biSystemMenu создает слева от заголовка пиктограмму, позволяющую вызывать системное меню, как показано на рис. 1.2. Рис. 1.2. Системное меню позволяет перемещать и закрывать форму, а также изменять ее размеры. Совет: Для того чтобы значения biMinimize, biMaximize и biHelp работали, необходимо присвоить свойству заметкуBorderIcons значение biSystemMenu. BorderStyle
На рис. 1.3 показана форма для шести значений BorderStyle. Каждая форма создавалась как форма размером 200х200 пикселей.
Рис. 1.3. Влияние значения BorderStyle на вид формы. Значения по часовой стрелке, начиная с левойверхней формы, таковы: bsSizeable, bsDialog, bsSingle, bsSizeToolWin,bsToolWindow и bsNone
По умолчанию свойство BorderStyle имеет значение bsSizeable, создающее обычное окно с изменяемыми размерами. Такое окно имеет стандартную строку заголовка и не имеет ограничений на расположение в ней кнопок. Примеры таких окон - программы Explorer и Notepad. Совет: Значения biMinimize и biMaximize свойства Borderlcons не будут работать, если свойство BorderStyle установлено равным bsDialog. Третий по популярности стиль окон - bsSingle, создающий форму, которая не может изменять размеры во время работы. В отличие от bsDialog, bsSingle не запрещает установку любых пиктограмм. Единственное ограничение состоит в том, что кнопка сворачивания окна, будучи выведенной, является недоступной (блокированной). Пример такой программы - Calculator. На рис. 1.4 вы видите другой пример окна bsSingle.
Рис. 1.4. Стиль bsSingle полезен, когда пользователю не надо изменять размер окна. Панель инструментов (Toolbar) позволяет быстро получить доступ к сгруппированным функциям. В Delphi можно сконструировать панель инструментов, поместив группу компонентов TSpeedButton в форму, имеющую стиль bsSizeToolWin или bsToolWindow. Окно в стиле bsSizeToolWin может изменять размеры и не имеет кнопок biMinimize, biMaximize HbiHelp. Окно в стиле bsToolWindow действует так же, но не позволяет изменять размеры. Совет: Если вы выбрали для свойства BorderStyle значение, создающее окно с разрешенным изменением размеров, Delphi автоматически установит значение AutoScroll равным True. Формы со стилями bsDialog и bsNone не могут иметь строки меню. Height и Width {Перемещаем форму в верхний левый угол экрана.} ClientHeight и C lientWidth Не клиентская область обычно прорисовывается Windows и включает строку заголовка, меню и рамку окна. Вы можете рисовать в этой части окна, перехватив сообщение WM_NCPAINT. FormStyle procedure TFormI.mnuAlwaysOnTopClick(Sender: TObject); Совет: Изменение свойства FormStyle вызывает событие OnShow. Icon KeyPreview Совет: Поскольку клавиша < Tab> используется для передачи фокуса другому управляющему элементу, она не вызывает генерации события. Обычно свойство используется KeyPreview для обработки функциональных клавиш, которые должны быть переданы форме независимо от текущего активного элемента. Рассматривая принцип работы этого кода, имейте в виду, что события OnKeyDown и OnKeyUp используют виртуальные коды (все они перечислены в файле WINDOWS.PAS). Menu
Рис. 1.5. Вы можете создать контекстно-зависимое меню с помощью свойства Menu Для изменения свойства Menu просто присвойте ему новое значение (TMainMenu или его потомок): Menu:= mnuMainMenu; Position procedure TForml.FormDestroy(Sender: TObject); Совет: Для компиляции примера не забудьте включить в раздел uses модуль INIFiles. После выполнения кода ваш INI-файл будет содержать нечто вроде Заметьте, что для строки раздела используется свойство Name вашей формы. procedure TFormI.Create(Sender: TObject); WindowState События TForm 1. OnCreate запускается при создании формы и позволяет распределять ресурсы и инициализировать форму. Совет: Хотя к тому моменту, когда происходит событие OnShow, форма еще не видна, свойство Visible установлено равным True. 3. OnResize генерируется при изменении размера формы во время выполнения приложения. Обычно здесь помещается код для изменения размера и положения на экране элементов управления, не поддерживающих свойство Align. Событие OnResize также однократно генерируется при создании формы, когда Delphi устанавливает начальные размеры формы. Совет: OnResize вызывается неоднократно в процессе изменения размеров формы. 4. OnActivate происходит при получении формой фокуса ввода. OnActivate вызывается только при переходе фокуса ввода от одной формы к другой в пределах одного приложения. При переключении между приложениями Delphi генерирует событие OnActivate глобального объекта Application. Совет: Событие OnCreate происходит один раз за все время существования формы, прочие же события могут вызываться неоднократно.
1. OnCloseQuery генерируется в ответ на действия, закрывающие форму. Обработчик получает логическую переменную CanClose, определяющую, может ли форма быть закрыта. По умолчанию она имеет значение True, но если вы в обработчике установите False, форма останется открытой. Обычно это используется для сохранения не сохраненных файлов или для подтверждения закрытия формы. Вот пример такого кода. procedure TFormI.FormCloseQuery(Sender: TObject; 2. OnClose генерируется непосредственно перед закрытием формы. Обычно оно используется для изменения стандартного поведения формы при закрытии. Для этого Delphi передает в обработчик события переменную Action, которая может принимать одно из четырех значений: caHide, caMinimize, caNone или caFree. По умолчанию для не MDI-форм используется caHide, скрывающее форму. Для дочерних MDI-форм значение по умолчанию, сворачивающее форму, равно caMinimize. Если Action установлено равным caNone, закрытия не происходит. caFree заставляет Delphi закрыть форму и освободить всю связанную с ней память. Если после этого сослаться на объект формы, произойдет исключительная ситуация. Совет: OnClose вызывается только при закрытии формы с помощью щелчка на кнопке закрытия или вызова функции Close. Если вы закрываете главную форму приложения, все другие открытые формы закрываются без вызова события OnClose. Событие OnCloseQuery вызывается всегда, независимо от способа закрытия формы. 3. OnDeActivate происходит при потере формой фокуса ввода. Запуск происходит по тем же правилам, что и запуск события OnActivate. Совет: Хотя при вызове OnHide форма еще видна, ее свойство Visible установлено равным False. 5. OnDestroy генерируется непосредственно перед уничтожением формы. Обычно оно используется для освобождения ресурсов, выделенных в OnCreate. Совет: Событие OnDestroy вызывается только один раз за все время существования формы, прочие события могут вызываться неоднократно. Повторное использование форм Шаблоны форм Использование шаблонов форм · Copy. Эта опция добавляет копию шаблона формы в ваш проект. Изменения объекта в проекте не влияют на другие объекты. · Use. Эта опция связывает шаблон непосредственно с вашим проектом. Изменения в проекте воздействуют на объект, находящийся в хранилище, и наоборот. · Выберите команду File/New Application. Появится пустое приложение. · Выберите команду File/New. Появится диалоговое окно New Items. · Щелкните на вкладке Forms вверху диалогового окна. Delphi выведет доступные шаблоны форм, как показано на рис. 1.6. · Убедитесь, что выбран метод Copy или Use. · Щелкните на кнопке ОК. Новая форма About box будет добавлена в ваш проект. Добавление собственного шаблона · Создайте форму, добавьте в нее компоненты и приправьте все это кодом по вашему вкусу. Конечно, вы вполне можете использовать в качестве заготовки имеющийся шаблон. · Сохраните форму в папке OBJREPOS Delphi. Совет: Object Repository не хранит копий всех шаблонов, а устанавливает связи с их DFM- и PAS-файлами. Если вы удалите такой файл, шаблон станет недееспособным. · Щелкните правой кнопкой мыши на форме и затем выберите команду Add to Repository. При этом Delphi выведет диалоговое окно Add To Repository, показанное на рис. 1.7.
Рис. 1.7. Используйте диалоговое окно Add To Repository для добавления ваших собственных шаблонов в хранилище объектов
· Из списка Forms выберите форму, которую нужно добавить в хранилище. · Введите заголовок формы в поле Title (он будет использоваться в качестве подписи под пиктограммой в диалоговом окне New Items). · Из раскрывающегося списка Page выберите страницу, на которой будет размещен шаблон. · Щелкните на кнопке ОК, и форма будет добавлена в Object Repository.
· Выберите команду Tools/Options, и на экран будет выведено диалоговое окно Environment Options, показанное на рис. 1.8. · Щелкните на вкладке Preferences вверху диалогового окна. · В поле ввода Directory введите путь к папке, которую вы хотите использовать в качестве разделяемого хранилища. · Щелкните на ОК. Теперь при выводе диалогового окна New Items Delphi будет просматривать эту папку в поисках шаблонов. После того как разделяемое хранилище определено, вы вольны в выборе места хранения своих шаблонов. Управление хранилищем объектов
Рис. 1.9. Использование диалогового окна Object Repository для работы с шаблонами Выбор страницы из списка приводит к заполнению списка Objects объектами, содержащимися на этой странице. Если вы выберете элемент [Object Repository], будут показаны все объекты в хранилище. Вы можете перемещать объекты путем их перетаскивания из списка Objects на нужную страницу в списке Pages. Рис. 1.10. Редактировать свойства объекта можно в хранилище с помощью диалогового окна Edit Object Info
Наследование форм Использование наследования форм · Выберите команду File/New, и будет выведено диалоговое окно New Items. · Щелкните на вкладке Dialogs, и будет выведена страница диалогов. · Выберите диалог с пиктограммой Help, кнопки которого выровнены вертикально по правой стороне формы. · Выберите опцию Inherit. · Щелкните на кнопке ОК, и Delphi выведет новую диалоговую форму. Заголовок нового диалогового окна— OKHelpRightDlg2. Почему Delphi создает это диалоговое окно как OKHelpRightDIg? Ответ заключается в наследовании форм. В списке форм вашего проекта содержится четыре объекта— Form1, OKHelpRightDIg, OKHelpRightDlg2 и OKRightDlg. Поскольку вы наследуете новую форму из OKHelpRightDIg, Delphi включает его в ваш проект для компиляции вашей программы. Это и приводит к наименованию новой формы как OKHelpRightDlg2. К тому же это позволяет избежать конфликта имен. В свою очередь, OKHelpRightDIg — наследник OKRightDlg, а потому последний также включен в проект.
Цепочка наследования отражена в автоматически генерируемом коде. Описание класса OKHelpRightDlg2 выглядит так. TOKHelpRightDlg2 = class (TOKHelpRightDIg) private
Это объявление не назовешь чересчур информативным. Поскольку вы не добавляли ни новых компонентов, ни кода, OKHelpRightDlg2 не определяет ни новых свойств, ни методов или событий. Определение класса TOKHelpRightDIg несколько интереснее. Как вы можете видеть, OKHelpRightDIg получает компоненты и код от OKRightDIg и добавляет объект HelpBtn типа TButton, а также обработчик события HelpBtnClick. Преимущества наследования форм · Закройте главную форму, окно которой озаглавлено Forml. · Выберите команду File/New, и будет выведено диалоговое окно New Items. · Щелкните на вкладке Dialogs, и будет выведена страница диалогов. · Выберите стандартный (Standard) диалог с кнопками, выровненными вертикально по правой стороне. · Выберите опцию Inherit. · Щелкните на кнопке ОК, и Delphi выведет новую диалоговую форму OKRightDlg2. · Выберите из меню View/Forms, и будет выведено диалоговое окно View Form. · Выберите шаблонную форму OKRightDIg, щелкните на кнопке ОК, и Delphi выведет новую шаблонную форму, озаглавленную Dialog и расположенную точно поверх новой формы. Теперь приступим к демонстрации. Переместите шаблонную форму в нижнюю часть главного окна Delphi. Вы обратили внимание, что новая форма OKRightDlg2 не открылась? Это связано с тем, что Delphi обновляет свойства Left и Тор одновременно с изменением соответствующих родительских свойств. · Выберите команду View/Forms, и появится диалоговое окно View Form. · Выберите OKRightDlg2 и щелкните на ОК. · Переместите OKRightDlg2 в нижнюю часть экрана. Рис. 1.11 Изменение распространяются только в одном направлении - от родителей к потомкам При перемещении диалога-наследника на экране диалогородитель будет оставаться на месте, что иллюстрирует передачу свойств только в одном направлении. Контрольні питання 1. Надати поняття та характеристики діалогів та інформаційних форм 2. Охарактеризувати процедуру використання модальних форм 3. Охарактеризувати процедуру використання стандартних діалогів АУДИТОРНЕ ЗАНЯТТЯ ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ. ВІЗУАЛЬНІ КОМПОНЕНТИ. БАЗИ ДАНИХ ТЕМА 6.3: ФОРМИ ТА МЕНЮ Лекція №44 – Характеристики форм
Дата добавления: 2014-12-25; Просмотров: 654; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |