Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 2
Всего онлайн: 2
Зарегистрировано юзеров: 6358
Комментариев на сайте: 645
Новый юзер: Realtyvaday



Последние комментарии
c
Aqel прокомментировал "Урок 71 - Работа с сжатыми файлами":
GZip псевдоархив, на мой вопрос тоже не отвечают, как распаковать отдельные файлы/папки...
Pingitrus прокомментировал "Урок 71 - Работа с сжатыми файлами":
Есть еще кто нибудь живой на этом сайте, кто сможет помочь? Так то все работает, zip и rar распаковывает, но у меня есть файл dat который сжат GZip, почему то его не удается распаковать или так не получится так как этот файл не является архивом или является?)) пишет ошибку что неверная функция



Мы в соцсетях
c
Delphi
Урок 11 - Знакомство с компонентами (часть 2/12)

   Продолжаем знакомство с компонентами. Открываем наш предыдущий проект и начинаем модернизировать калькулятор, как я и обещал.

Кидаем на форму компонент ListBox. Он находится на вкладке Standard правее компонента RadioButton. У компонента ListBox есть свойство Items, если его открыть, то появляется окошко для редактирования строк. Например если написать 1 в первой строке и 2 во второй, то в ListBox сразу появятся эти строки.

Items


Редактор


ListBox


Теперь откройте свойство Items еще раз и сотрите всё, что написали в окошке редактирования строк.

После краткого знакомства с компонентом ListBox, нужно его задействовать в нашем калькуляторе. ListBox будет выполнять функцию лога (журнала), он будет записывать результат в новую строку каждый раз, когда будет нажата кнопка "Посчитать".

Чтобы это осуществить, переходим в процедуру Button1Click и пишем код в самом конце:
ListBox1.Items.Add(Label1.Caption);
То есть, когда пользователь нажмет на кнопку, после всех вычеслений добавляется новая строка с содержимым лейбла в самый конец компонента ListBox.

Теперь добавим возможность пользователю отключить ведение лога. Для этого добавьте на форму компонент CheckBox. Он находится на вкладке Standard левее компонента RadioButton. CheckBox схож с компонентом RadioButton, только при выделении ставится галочка, а не кружок. Если мы поместим на форме четыре компонента CheckBox, то поставить галочку можно на всех, что нельзя сделать с RadioButton. В этом и есть вся разница этих компонентов.

Изменим свойство Caption у CheckBox на Вести лог и теперь научим его управлять логом. Для этого нужно написать условие: если галочка стоит, то записывать результат в лог, если галочка не стоит, то соответственно не записывать.
if (CheckBox1.Checked = True) Then
ListBox1.Items.Add(Label1.Caption);
Вот и готово, скомпилируйте и проверьте!

Нашей программе еще не хватает главного меню, которое вы можете наблюдать во многих программах и даже в самом Delphi.

Кидаем на форму компонент MainMenu (он находится на вкладке Standard) и кликаем по нему 2 раза. Должно появится окошко редактирования меню.

Редактор меню


Теперь переходим в Object Inspector, меняем свойство Caption на Файл и нажимаем клавишу Enter. Мы сразу можем видеть, как появилось меню в нашей программе.

Меню


Теперь нажимаем на Файл в редакторе меню и выделяем прямоугольник ниже.

Меню


Сейчас опять переходим в свойство Caption, изменяем его на Посчитать и кликаем Enter. Снова кликаем на прямоугольник ниже и переименовываем его на Выход. Далее кликаем на прямоугольник правее от Файл и изменяем у него Caption на Помощь. Теперь нажимаем на Помощь в редакторе меню, выделяем прямоугольник ниже и меняем свойство Caption на О программе.
Таким образом, мы создали простейшее меню, но оно пока не работает.

В редакторе кода выделяем кнопку (тот же прямоугольник) Посчитать и переходим в Object Inspector на вкладку Events. Выделяем событие OnClick и теперь у нас есть 2 пути:
  • Создать процедуру N2Click (N2 - это имя кнопки в меню) и скопировать в нее весь код, который мы написали в процедуре Button1Click

  • Поступить по умному и ничего не копировать, а просто указать Delphi, что нужно выполнить процедуру Button1Click по клику на кнопке в меню N2
Я выбираю второй вариант, думаю вы тоже. Нажимаем на стрелочку и выбираем из выпадающего списка процедуру Button1Click.

Выпадающий список


Компилируем и проверяем работу меню. У меня всё отлично, все работает и компилируется без ошибок.

Кнопку Выход (в меню) я думаю вы "оживите" сами. По этому сразу переходим к кнопке О программе. Когда мы нажмем на эту кнопку, у нас вылезет окошко с информацией о программе и его авторе. Для этого создадим вторую форму. Создается она очень легко, нажатием на кнопку New Form в главном окне Delphi.

New Form


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

Form2


После того, как мы оформили вторую форму, ее надо показать пользователю, когда он нажмет на кнопку О программе в главном меню.
Переходим к первой форме, нажатием на закладку соответствующего юнита в окне редактора кода (Unit1 - первая форма, Unit2 - вторая форма).

Закладки


Открыть вторую форму можно двумя способами:
  • Первый способ - это когда можно спокойно перемещаться между формами, то есть, если мы открыли вторую форму, то мы можем переключится на первую и поработать в ней.
    Form2.Show;
    
  • Второй способ - это когда мы не можем переключится на первую форму, если открыта вторая.
    Form2.ShowModal;
    
Создаем у кнопки О программе событие OnClick и пишем туда код, в зависимости от того, что вы выбрали. Если вы сейчас скомпилируете программу, то при компиляции откроется окно:

Окошко


Это окно предлагает добавить вторую форму в юнит первой. Нажмите кнопку "Yes". Добавить можно было вручную, дописав в Uses слово Unit2, но зачем, если delphi это может сделать за нас? :)

Идем далее и теперь мы сделаем контекстное меню, оно будет появляться, когда мы нажмем на форму правой кнопкой мыши. Кидаем на форму компонент PopupMenu (он находится на вкладке Standard), кликаем по нему 2 раза и настраиваем его вот так:

PopupMenu


Теперь выделяем первую форму и в свойстве PopupMenu выбираем наш компонент PopupMenu1. Сейчас осталось "оживить" кнопки в контекстном меню. Я надеюсь, что вы с этим справитесь сами. На этом я завершаю этот урок и прошу вас сохранить проект. Если что-то не понятно, пишите в комментарии, обязательно постараюсь помочь!

Ну вот и всё! Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 14 Августа 2012
Просмотров:

Урок 10 - Знакомство с компонентами (часть 1/12) Урок 12 - Знакомство с компонентами (часть 3/12)

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил(а): Pirogkov007 [Новичок] Дата: 2013-05-20
Не получается "оживить" контекстное меню. На его пункты я события назначил, но меню не работает(вообще не открывается).




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-20
меня кнопки посчитать вообще открывать не надо,только сделать так,как там написано,а что бы оживить *выход* надо два раза нажать на него и в появившемся окошке между бегин и энд вписать halt;




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-20
меню* кнопки




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-20
добавил PopupMenu но при нажатии правой кнопки по форме ничего не происходит




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-20
пирожков,я думал ты спрашиваешь про другое меню,обознался.




аватар Добавил(а): delfiSkin [Новичок] Дата: 2013-05-20
на 13 уроке случайно при нажатие на форму нашел свойство Popupmenu ,изменил,теперь все работает так же было написано и здесь *Теперь выделяем первую форму и в свойстве PopupMenu выбираем наш компонент PopupMenu1* но я тогда подумал это надо искать в свойствах popupmenu..




аватар Добавил(а): CrossF1re5 [Новичок] Дата: 2013-09-05
у меня не получается оживить кнопку N2!Делал все как сказано,но всё равно не компилируется...




аватар Добавил: Denismen [Новичок] Дата: 2013-09-27
Хороший урок для начинающих.




аватар Добавил: belogod [Новичок] Дата: 2014-07-21
Спасибо большое. Благодаря коментам, понял как довести до ума кнопку - Выход(спасибо - delfiSkin).




аватар Добавил(а): ortmaer [Новичок] Дата: 2016-08-05
У меня не работает возможность отключения лога. Я код: if (CheckBox1.Checked = True) Then ListBox1.Items.Add(Label1.Caption); Вставил в CheckBox1 через caption. Галочку что ставь, что не ставь - лог все равно идет. А если код вставить в кнопку как обычно, то там вообще двойной лог при каждом действии происходит. Вопрос: куда вставлять код то надо?




аватар Добавил(а): ortmaer [Новичок] Дата: 2016-08-05
И зачем мы добавили это поперменюя? У нас же есть одно меню. На фига два то?




аватар Добавил(а): MrFox [Новичок] Дата: 2017-01-15
Чтоб научиться создавать разные меню!