рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Дополнительные кнопки Delphi TSpeedButton и TBitBtn

Дополнительные кнопки Delphi TSpeedButton и TBitBtn - раздел Программирование,   Глава 11. Обзор Дополнительных Компонентов Delphi. .............

 

Глава 11. Обзор дополнительных компонентов Delphi. ........................................................ 196

 

 

11.1 Дополнительные кнопки Delphi (TSpeedButton и TBitBtn) ........................................ 197

 

11.2 Самостоятельная подготовка картинок для кнопок ................................................... 202

 

11.3 Маскированная строка ввода (TMaskEdit) ................................................................... 202

 

11.4 Сеточки (TStringGrid, TDrawGrid) ................................................................................ 203

 

11.5 Компоненты-украшения (TImage, TShape, TBevel) .................................................... 210

 

11.6 Панель с полосами прокрутки (TScrollBox) ................................................................ 213

 

11.7 Маркированный список (TCheckListBox) .................................................................... 214

 

11.8 Полоса разделения (TSplitter) ....................................................................................... 216

 

этой части моей книги я постараюсь дать максимальный обзор дополнительных компонентов Delphi. Мы познакомимся с большинством компонентов, упрощающих создание программ, и я постараюсь описать основные и необходимые при программировании свойства и методы описываемых мною компонентов.

Эта глава будет так же наполнена большим количеством примеров. Так как наши знания о программировании уже очень сильно улучшились, то и программы станут более сложными и более полезными.

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

11.1 Дополнительные кнопки Delphi (TSpeedButton и TBitBtn)

ы уже познакомились с кнопкой TButton с закладки Standard. В Delphi есть ещё два вида кнопок на закладке AdditionalTBitBtn и TSpeedButton. Помимо простого текста, они могут содержать и изображения, разница

только в том, что TBitBtn может получать фокус, а TSpeedButton нет.

Что значит «получение фокуса»? Когда ты щёлкаешь по какому-то элементу управления, то он получает фокус ввода. Например, ты щёлкнул по строке ввода TEdit. После этого в ней появляется курсор для ввода текста, и все события от клавиатуры будут посылаться именно этому компоненту. Точно так же с кнопкой. Если ты щёлкнул по ней, то все нажатия на клавиатуре будут посылаться кнопке. Правда, кнопка не может получать текст, но если ты нажмёшь кнопку Enter, когда фокус находиться на кнопке, то это будет равносильно нажатию по кнопке мышкой.

Кнопка TSpeedButton не может получать фокуса. Это значит, что если ты набирал какой-то текст в строке ввода, а потом щёлкнул по такой кнопке, то обработается соответствующее событие и фокус возвратиться обратно в строку ввода.

Как ты знаешь, фокус выделенного компонента в программах можно менять клавишей TAB. Если ты нажмёшь её, то будет выделен следующий по счёту компонент. Так вот клавишей TAB невозможно выделить кнопку TSpeedButton.

TBitBtn хорошо подходит там, где нужна кнопка с изображением, а TSpeedButton для кнопок панели инструментов, потому что такие кнопки никогда не должны получать фокуса ввода. Именно поэтому TSpeedButton отображена в Delphi на панели инструментов квадратной.

Давай попробуем создать маленькое приложение, в котором будут использоваться оба типа этих кнопок. Запусти Delphi и создай новый проект.

Брось на форму компонент TPanel с закладки Standard. Установи у него свойство Align в alTop, чтобы панель растянулась по верху формы. Теперь удали текст в свойстве Caption и измени высоту (свойство Height) на 24.

Брось на панель кнопку TSpeedButton и установи у неё свойства Left (левая позиция) в 0 и Top (верхняя позиция) в 1. Ширина (Width) кнопки должна быть равна 23, а высота (Height) равна 22. Давай ещё изменим имя кнопки на ExitButton, потому что я собираюсь сделать выход по нажатию этой кнопке.

Если ты всё сделал правильно, то у тебя должно получится нечто похожее на рисунок 11.1.1.

Теперь дважды щёлкни по свойству Glyph и перед тобой должно открыться окно загрузки изображения (рисунок 11.1.2). Нажми на кнопку Load и загрузи картинку. С Delphi идёт большая библиотека готовых изображений и расположены они Program FilesCommon FilesBorland SharedImagesButtons. На диске с книгой ты можешь найти мою подборку дополнительных картинок, которая тебе может пригодиться в последующем.

Я решил долго не мучиться и загрузить картинку, которая идёт вместе с Delphi под названием dooropen.bmp. Можешь сделать то же самое. Как только ты выберешь картинку, нажми ОК чтобы закрыть окно загрузки изображения.

Теперь на кнопке отображается выбранная тобой картинка. Можешь запустить программу, чтобы посмотреть на результат её работы. На рисунке 11.1.3 показан результат нашей программы. Можешь пощёлкать по кнопке, которая пока ещё ничего не делает.

Как видишь, кнопка выглядит немного выпукло, а во всех современных приложениях кнопки плавающие. Это легко исправить, если изменить свойство кнопки Flat на true.

Теперь создадим для кнопки событие OnClick. Для этого можно щёлкнуть дважды по самой кнопке или выделить её и на закладке Events объектного инспектора дважды щёлкнуть по свойству OnClick. В созданном обработчике события напишем:

procedure TForm1.ExitButtonClick(Sender: TObject); begin Close; //Выход из программы end;

Можно запускать программу и проверять её работу в действии.

Теперь брось на форму ещё две кнопки. Я расположил их как на рисунке 11.1.4. В первую из них я загрузил картинку Bulboff.bmp (и назвал BulboffButton), а во вторую Bulbon.bmp (и назвал BulbonButton).

Теперь установи у обеих кнопок свойство GroupIndex равным 1 и у любой из них измени свойство Down на true. Попробуй теперь запустить программу и понажимать на новые кнопки. Когда нажата одна из них, то другая отжата. Когда ты нажмёшь на другую, то она станет нажатой, а вторая автоматически освободится.

Таким способом часто оформляют такие операции как выравнивание. Например, в том же текстовом редакторе Word выравнивание выполнено именно таким способом.

Возможность кнопки находиться в нажатом и нормальном состоянии появилась после того, как ты сгруппировал две кнопки, присвоив в свойство GroupIndex значение 1. Ты можешь создать ещё одну группу кнопок (количество кнопок не ограничено двумя) и присвоить ей значение 2. В этом случае она будет работать независимо от первой. И помни, что свойство Down может быть равно true только у одной кнопки в группе.

Теперь брось на форму кнопку TBitBtn, назовём её StartBtn. В свойстве Caption напиши Старт и загрузи сюда любую картинку. Загрузка происходит точно таким же образом, как и при использовании TSpeedButton.

Кнопки TBitBtn и TSpeedButton очень похожи и имеют практически все одинаковые свойства и методы, поэтому больше тут сказать уже практически нечего.

Очень интересным является свойство Layout, которое показывает, где должна располагаться картинка, а где текст. На рисунке 11.1.6 показаны разные варианты кнопок, а снизу приписаны установленные значения в свойстве Layout.

Ещё одним интересным свойством является Kind. В нём заложен список заранее подготовленных стандартных кнопок. Выбирая любой из них, автоматически изменяется текст и изображение на кнопке. На рисунке 11.1.7 ты можешь увидеть различные кнопки и соответствующие им значения Kind. Жаль только, что текст англоязычный, но его изменить очень легко.

Помимо картинки и текста изменяется и свойство ModalResult – результат, который вернёт кнопка для диалогового окна. Ты можешь и сам менять это свойство, для любой кнопки изменяя реакцию кнопки и всей программы.

Давай напишем пример, который будет запускать дочернее модальное окно по нажатию кнопки Старт.

Создай ещё одну форму. Советую сразу открыть Project Manager, чтобы легче было переключаться между формами (выбрать в меню View пункт Project Manager). Теперь брось на форму три кнопки и желательно расположить их, как на рисунке 11.1.8.

Для первой кнопки установим свойство Kind в bkOK, для второй в bcCancel, а для третей bkAbort.

Теперь вернёмся в первую форму (для этого дважды щёлкни в окне Project Manager по первой форме) и создадим обработчик события OnClick для кнопки Старт.

Procedure TMainForm.StartBtnClick(Sender: TObject); begin Form2.ShowModal; // Показываю вторую форму

if Form2.ModalResult=mrCancel then Application.MessageBox('Вы нажали кнопку Cancel', 'Вы нажали'); if Form2.ModalResult=mrAbort then Application.MessageBox('Вы нажали кнопку… В первой строчке я показываю вторую форму. Я показываю её как модальное окно. После того, как пользователь нажмёт одну…

Procedure TMainForm.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); begin DateEdit.Visible := false; // Сделать невидимой компонент DateEdit

if (gdFocused in State) then // Если текущая ячейка в фокусе то … begin if ACol=1 then // Если рисуется ячейка первой колонки то …

Begin DateEdit.Text:=StringGrid1.Cells[ACol, ARow]; // Записать в DateEditтекст ячейки DateEdit.Left := Rect.Left + StringGrid1.Left+2; // Установить левую позицию DateEdit.Top := Rect.Top + StringGrid1.top+2; // Установить верхнюю позицию DateEdit.Width := Rect.Right - Rect.Left; // Установить ширину DateEdit.Height := Rect.Bottom - Rect.Top; // Установить высоту DateEdit.Visible := True; // Сделать компонент DateEditвидимым exit; // Выход из процедуры

end; end; end;

Этот обработчик вызывается каждый раз, когда надо прорисовать какую-нибудь ячейку. Если прорисовывается вся сетка, то он вызывается для каждой ячейки отдельно. Для нас Delphi создал процедуру обработчик события StringGrid1DrawCellсо

следующими параметрами: Sender – здесь передаётся указатель на объект, который сгенерировал событие. ARow и ACol – номер строки и номер столбца (координаты) ячейки, которую надо

прорисовать. Rect – Структура, в которой указаны относительные размеры и положения ячейки. Что я понимаю под словом «относительные»? Структура Rect выглядит так:

type TRect = record Left, Top, Right, Bottom: Integer; end;

Как видишь, это структура из четырёх параметров – левой, верхней, правой и нижней позиции. На рисунке 11.4.4 стрелками показана, показан тот размер, который будет в параметрах Left и Right структуры Rect. Размеры будут указаны в пикселях. В параметре Right будет указано расстояние в пикселях от левого края сетки до правого края ячейки, а в параметре Bottom будет расстояние от верхнего края сетки до нижнего края ячейки.

Ну и последний параметр, передаваемый нам в процедуру обработчик – State. В Нём находиться информация о состоянии ячейки, которую надо прорисовать. Состояния могут быть следующими:

gdSelected – ячейка выделена.
gdFocused – ячейка имеет фокус ввода.
gdFixed -ячейка является фиксированной.
Если в параметре State нет ни одного из этих значений, то это простая ячейка.
Параметр State объявлен как набор значений. Это значит, что он может принимать

 

любое из указанных значений или их сочетания. Чтобы проверить, установлено ли что-нибудь в State, надо написать:

If (значение in State) then Выполнить действие

Если рисуемая ячейка в фокусе, то я проверяю, в какой колонке находиться рисуемая ячейка. Если это первая колонка (где мы должны вводить дату), то я… Как видишь, способ очень простой и элегантный. Теперь осталось только создать… procedure TMainForm.DateEditChange(Sender: TObject); begin StringGrid1.Cells[StringGrid1.Col,…

Begin DateEdit.Visible := false; CheckBox1.Visible := false; if (gdFocused in State) then

begin DateEdit.Text:=StringGrid1.Cells[ACol, ARow]; DateEdit.Left :=…

Procedure TMainForm.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked=true then

StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]:=CheckBox1.Caption; end; На компакт диске, в директорииПримерыГлава 11Gridты можешь увидеть пример…  

Begin Str:='Вы выбрали '; for i:=0 to CheckListBox1.Items.Count-1 do // Запускаю цикл

Application.MessageBox(PChar(Str), 'Внимание!!!'); // Вывести на экран строку… Теперь можешь запустить приложение и посмотреть на результат работы. На рисунке 11.7.4 показан примерный результат. …

If CheckListBox1.Checked[0] then

Я перебираю все элементы, поэтому в квадратных скобках указываю параметр i. Текст строки можно узнать в свойстве Items компонента CheckListBox1.…   CheckListBox1.Items[0]

– Конец работы –

Используемые теги: дополнительные, кнопки, Delphi, TSpeedButton, TBitBtn0.086

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Дополнительные кнопки Delphi TSpeedButton и TBitBtn

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Среда Delphi широко известна и не вызывает дополнительных трудностей при изучении и использовании
В настоящее время список источников по теории и практике использования баз... В данном пособии подробно излагаются вопросы связанные с проектированием и нормализацией базы данных реляционной...

Состав проекта Delphi
На сайте allrefs.net читайте: Состав проекта Delphi.

Тема 4. Язык программирования Delphi
Тема Язык программирования Delphi... Введение... ЭВМ может выполнять программы записанные на машинном языке В машинном языке все команды операции адреса ячеек...

Имеет обширный набор классов. Фрагмент структуры классов Delphi приведен на рис.5.24.1
Классы в Delphi... Delphi имеет обширный набор классов Фрагмент структуры классов Delphi... Предком всех классов Delphi является класс TObject Он обладает самыми общими методами присущими любому объекту...

Дополнительная информация о ведущих занятия
Кудря Оксана Ивановна практический психолог гештальт терапевт председатель...

Женщина: где у нее кнопка?
На сайте allrefs.net читайте: "Женщина: где у нее кнопка?"

Основные и дополнительные услуги в сфере туризма
Объектом исследования являются туристские услуги, а субъектом – ос-новные и дополнительные услуги. Методами исследования являются: В теоретической… Рассматриваем формирование пакета ус-луг и функции поставщиков услуг. В… ЕСЛИ обратиться к определению по ГОСТ 50690-2000, то туристская услу-га — резуль¬тат деятельности организации…

Шпаргалка по Delphi 7.0.
Прога Delphi включает в себя неск-ко модулей которые созд-ся автомат-ки при добав-ии окон форм. Среда Delphi содержит следующие окна 1Инспектор… По умолчанию модули понимают имена Unit1, Unit2 3Меню. Имеет закладки… Отличием яв-ся то, что нет необход-ти программ-ия самого прерывания, а только нужно прог-ть, то что нужно выполнить…

Эксперты в Delphi
Для решения подобной задачи в Delphi можно воспользоваться так называемыми экспертами. Вспомните, как удобно, ответив на несколько вопросов, создать… О том, как это сделать, и пойдет речь далее. Эксперты в Delphi — что это… О способах регистрации чуть далее — сперва давайте рассмотрим стили экспертов Delphi. Их всего четыре, и все они…

Включение в себестоимость дополнительных отпусков за ненормированный рабочий день
Кроме того, в случае если такой отпуск не предоставляется, переработка сверх нормальной продолжительности рабочего времени с письменного согласия… Ранее, когда действовало Положение о составе затрат по производству и… Списки категорий работников с ненормированным рабочим днем в соответствии со ст. 68 КЗоТ РФ разрабатывались…

0.031
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам