Как сделать всплывающее окно делфи

Добавил пользователь Morpheus
Обновлено: 05.10.2024

Тоесть поставить например картинку и при наведение на не (не при нажатие вылазило окошко с подсказкой)?

У компонентов в delphi есть свойство hint туда писать и будет всплывать подсказка

не забываем ставить свойство showhint в положение true

Lexa G Знаток (422)1 минуту назад (ссылка)
Нарушение! Подарить стикер! NEW
У компонентов в delphi есть свойство hint туда писать и будет всплывать подсказка

не забываем ставить свойство showhint в положение true
-------
Вот вот)

Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.

Привет всем! Я бы хотел создать новое всплывающее окно в своем собственном окне. Для чего это? Я хочу, чтобы всплывающее окно открывалось в моем собственном, потому что я использую вкладки, и хотел бы ограничить всплывающее окно. В качестве примера можно взять сайт https://badoo.com/ru/signin/, зайдя на который и кликнув по кнопке "Вконтакте" или "Facebook", будет создано новое всплывающее окно. Я пробовал решить данную проблему через событие BeforePopup , но безрезультатно. Код примера:

Я не могу создать новый браузер, потому что данное всплывающее окно связано с текущим браузером. Может ли мне кто-то помочь?


Знаете кого-то, кто может ответить? Поделитесь ссылкой на этот вопрос по почте, через Твиттер или Facebook.

Посмотрите другие вопросы с метками delphi popup tab или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2022.1.21.41235

Этот вид подсказок удобен, прежде всего, тем, что назначение элемента, на который подведен указатель мыши, видно до непосредственной его активации. Например, кнопка "Применить" можно снабдить подсказкой "Сохранить все настройки без закрытия окна".

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

Во время инициализации и запуска приложения на выполнение, происходит считывание системных переменных в переменные программы, в т.ч. и параметров всплывающей подсказки. Эти переменные и свойства можно менять во время работы приложения, некоторые еще при проектировании, добываясь тем самым отличия от стандартных windows-приложений.

Для того, чтобы у интересующего вас параметра появлялась всплывающая подсказка, необходимо, прежде всего установить сам текст подсказки. Это свойство Hint. Для каждого компонента программы Hint может быть разный.
Второй шаг, это указать, что подсказку для интересующего нас компонента надо показывать. Это свойство ShowHint. Его нужно установить в true для отображения, и false наоборот.
Два вышеперечисленных свойства доступны еще до запуска программы, во время редактирования проекта. По умолчанию свойство ShowHint имеет значение false, т.е. подсказка не высвечивается.
Целесообразнее устанавливать эти свойства в инспекторе объектов, чем программно, этим самым вы не засоряете текст кода программы. В редакторе кода порой бывает так много строк, что трудно сразу разобраться в возможной ошибке и подобные строки могут сбивать с толку. Исключением в нашем случае может быть постоянно меняющаяся всплывающая подсказка. Например, при изменении функционального назначения кнопки, меняется и текст подсказки.

Программная установка текста всплывающей подсказки для кнопки Button1:

Button1.Hint:='Нажми на меня, и ты узнаешь, что ты наделал';

Программная активация подсказки для кнопки Button1 (только дает возможность всплывающей подсказке высвечиваться, а не выводит ее на экран!)

Теперь поговорим про цвет фона подсказки и про некоторые другие параметры.

Цвет фона всплывающей подсказки для всего приложения меняется очень легко.

Цвет задается через зарезервированные константы или цифровым кодом. Например, белый цвет может быть задан с помощью константы clWhite, с помощью шестнадцатеричного представления $00FFFFFF, или обычным, привычным нам десятичным числом 16777215. Ниже представлена таблица цветов, которые определены как стандартные константы цветов.

Стандартный цвет всплывающей подсказки, установленный в свойствах экрана windows, хранится в константе clInfoBk. Она является элементом со статусом "только для чтения" и изменение недопустимо.

Установка паузы перед появлением всплывающей подсказки.

Значение задается в миллисекундах.
Изменение этого свойства может вам показаться бессмысленным. Но иногда необходимо, чтобы пользователь видел всплывающую подсказку немедленно после наведения на компонент мышкой. Иногда нужно вообще убрать на продолжительный срок появление подсказки, чтобы она лишний раз не привлекала к себе внимание. Обычное начальное значение в windows 500 мс (полсекунды).
Время отображения подсказки на экране равно 2500 мс (2,5 с). Программно для вашего приложения это время задается следующим образом.

Это все по общим свойствам всплывающей подсказки. Этот пример может быть интересен и специалистам в области программирования.
В нем объясняется принцип отображения подсказки в компоненте TStatusBar без каких-либо дополнительных компонентов.
Еще примечание к примеру: числовые значения вводятся в текстовом виде в компонентах Edit1 и Edit2. На ходу происходит их преобразование в числовые с помощью циклов try-except Некорректное введение числового значения контролируется. Но если программу запускать на выполнение через оболочку delphi (run), а не из проводника windows или другим методом запуска, то delphi контролирует самостоятельно такое преобразование и внутри цикла try-except. И в случае обнаружения ошибки прервет выполнение программы. Это неудобство встречается в delphi3, delhpi4, delphi5 (опробовано лично мной). Поэтому такой некорректный ввод чисел лучше всего тестировать, отдельно запуская программу, или с помощью процедуры Val.

Вызов форматированных всплывающих подсказок средствами Delphi

Вы наверно уже обращали внимание на форматированные подсказки при работе с редактором MS Word. Если нет, по поясню: вызываете любое диалоговое окно (например, Файл->Параметры страницы ), нажимаете правой кнопкой мыши на любой компонент, в результате чего появляется выпадающее меню с текстом "Что это такое?". При щелчке на этом пункте появляется подсказка с описанием элемента управления. Подсказка может содержать форматированный текст, рисунки, гиперссылки и т.п.. Можно вызвать такую подсказку и другим способом: команда Справка->Что это такое? - в этом случае указатель мыши изменит свою форму на знак вопроса, и теперь вы можете щелкнуть на любой элемент управления, что приведет к появлению всплывающей подсказки.

Такую же технологию вы можете реализовать и в Delphi. Вам понадобится hlp-файл, содержащий сами подсказки. Для подготовки такого файла рекомендую воспользоваться программой Help & Manual . Эта программа требует платной регистрации, как и сама Delphi, поэтому думаю, что проблем с регистрацией у вас не возникнет.

Итак, после установки программа автоматически интегрируется во все продукты фирмы Borland (Delphi, Builder и т.д.). В результате в меню Tools среды Delphi появится новый пункт Help Manual Project Wizard. , а у свойства HelpContext, которое имеют многие визуальные компоненты, появится кнопочка с троеточием. Благодаря этой кнопочке процесс создания контекстной справки сильно упрощается.

Разработка контекстной справки

Контекстная справка может использоваться в двух случаях: во-первых, если вы хотите, чтобы пользователь мог увидеть подробное описание элемента управления в окне справки; во-вторых, чтобы пользователю предоставить форматированную всплывающую подсказку. В обоих случаях процесс разработки справки одинаковый. Рассмотрим этот процесс.

  1. Определить название окна, которое будет появляться при запуске файла справки (если вы хотите использовать вызов контекстной справки). Выбираем пункт меню Project -> Project Properties -> Help Windows -> Main и заполняем поле Title bar text .
  2. Настроить русский язык. Выбираем в списке Common Properties (см. п. 1) пункт Language and Character Sets , где указываем язык Russain и набор символов RUSSIAN_CHARSET.
  3. Создать стартовую страницу, текст которой будет появляться при запуске файла справки (это актуально только для hlp-справок). Для этого в поле Invisible Topics жмем правую кнопку мыши и выбираем пункт Insert Before. В появившемся окне задаем название раздела, например "StartPage" и жмем "ОК". В поле Help Text задаем какой-нибудь текст, например: "В этом файле хранятся всплывающие подсказки".
  4. Сохраняем проект.

Теперь взгляните на поле Invisible Topics . В нем вы увидите имя компонента, для которого формируется свойство HelpContext. При нажатии на строку с этим именем шаблон подсказки появится на вкладке HelpText. В этом поле задаем текст подсказки, выполняем при необходимости форматирование (можно также вставить рисунок из буфера обмена). После этого сохраните проект с помощью команды File -> Save . Перейдите в Delphi и создайте подсказки для всех остальных элементов управления. Обратите внимание, что теперь свойства HelpContext у различных компонентов имеют разные числовые значения. Именно по этим значениям и будет отыскиваться нужный раздел в справке.

Нажмите в H & M кнопку со значком мясорубки "Make Help File and Run" и выберите пункт Winhelp , после чего нажмите ОК. В результате программа должна скомпилировать hlp-справку.

Мы попутно рассмотрим процесс вызова всплывающей подсказки, хранящейся в файле формата *.chm, поэтому, если у вас установлен "MS HTML Help Workshop", то скомпилируйте также и chm-справку (для этого нужно будет выбрать пункт HTML HELP и нажать ОК).

Все! Разработка контекстной справки успешно завершена.

Программирование вызова всплывающей hlp-подсказки с помощью контекстного меню

Применение контекстного меню - самый простой способ реализовать вызов всплывающей подсказки. Приступим к программированию.

Добавим в модуль формы переменную ContextID типа Integer и PopupFile типа String . Поместим на форму контекстное меню TPopupMenu и выделим на форме те компоненты, для которых мы хотим создать подсказки. В свойстве PopupMenu выбранной группы компонентов выбираем PopupMenu1. Если вы хотите создать подсказку для компонента, на котором лежат компоненты с пустым свойством PopupMenu, то текст его подсказки будет появляться у лежащих на нем компонентов. Это явление нужно иметь ввиду. Теперь в обработчике OnMouseDown выбранной группы пишем следующий код:

Теперь дважды щелкаем на компоненте TPopupMenu и создаем всего один пункт меню: "Что это такое?" или "What's that?". В обработчике OnClick этого пункта пишем следующий текст:

где PopupFile - название файла подсказок (*.hlp). Значение этой переменной можно например задать по событию OnCreate формы следующим образом:

Теперь вы можете посмотреть программу в действии. При нажатии правой кнопкой мыши на элементах формы должно появляться всплывающее меню с текстом "Что это такое?". При выборе этого пункта появится всплывающая подсказка.

Программирование вызова всплывающей chm-подсказки с помощью контекстного меню

Если у вас есть скомпилированный chm-файл с подсказками, то вы можете прочитать данный раздел. Отмечу, что хранить всплывающие подсказки в файле chm-формата нет смысла (дело в том, что форматированный текст и картинки в таких подсказках отображаться не будут, останется только голый текст). Кроме того, код для вызова таких подсказок значительно усложняется. Итак, изменим предыдущий код следующим образом.

В разделе interface объявите следующую функцию:

Затем в разделе type следует объявить следующий тип:

В разделе var нужно будет объявить переменную: PopUps: HH_POPUP ; а в разделе const: HH_DISPLAY_TEXT_POPUP = $000E ;

В обработчике OnCreate формы нужно будет указать файл справки:

Теперь в обработчике OnClick компонента TPopupMenu изменяем текст следующим образом:

Еще один недостаток таких подсказок заключается в том, что функция HtmlHelp не следит за тем, поместится ли подсказка на экране полностью, а с функцией WinHelp такая проблема не возникает.

Программирование вызова всплывающей hlp-подсказки с помощью кнопки "Что это такое?" или "What's that?"

Кнопка "Что это такое?" присутствует во многих приложениях, в частности, в MS Word. Эта кнопка работает также, как работает аналогичная кнопка в заголовке окна. При нажатии на нее курсор мыши меняет свою форму на знак вопроса. В дальнейшем при щелчке мыши на каком-либо элементе интерфейса должна появляться всплывающая hlp-подсказка. Во время того, как курсор имеет форму знака вопроса, должны блокироваться нажатия любых клавиш, кроме "Escape". При нажатии клавиши "Escape", правой кнопки мыши и средней кнопки мыши нужно осуществлять отмену, т.е. устанавливать стандартный курсор. Во время режима "What's that" кнопки не должны реагировать на щелчок мыши, т.е. не должен вызываться метод OnClick.

Все это делается довольно просто. Сначала в разделе var объявляем 2 глобальные переменные:

У главной формы устанавливаем свойство ShowHint в True - это свойство должно быть таким же у всех визуальных компонент на этой форме. Теперь кидаем на форму панель инструментов ToolBar (Win32) и кладем на эту панель кнопку SpeedButton.

У этой кнопки изменяем следующие свойства:

Вместо кнопки SpeedButton вы можете использовать кнопку ToolButton - в этом случае вместо свойства GroupIndex вы должны будете установить свойство Style в tbsCheck.

Дважды щелкаем на эту кнопку и пишем следующий обработчик:

Теперь кидаем на форму компонент TApplicationEvents с вкладки Additional и создаем для него 2 процедуры:

Условие " if ContextID " необходимо, однако число может быть другим (оно не может быть меньше, чем максимальное значение HelpContext в вашей справке). Если не указать это условие, то справка будет запускаться через раз (или через два раза). В первой процедуре указывается, что в режиме "Что это такое?" родные подсказки компонентов появляться не должны.

Читайте также: