У Delphi6 баг — нет возможности показать PopUp меню COM серером?
Помощь в написании контрольных, курсовых и дипломных работ здесь.
У текстового поля нет меню для возможности скопировать его содержимое
Какие свойства нужно установить у Text.Box, чтобы можно было копировать в буфер обмена выделенную в.
Показать Popup через N секунд
Добрый день, есть в окне кнопка, по нажатию на которую запускается некая длительная операция.
Показать данные введенные в POPUP
Для создания сайта я использую MacromediaUltradev 4. Задача — показать данные вводимые в форму в.
вопрос от новичка. Подскажите, пожалуйста, как реализовать следующее. Динамически на grid.
Жаль, что никто не отозвался. Но, для тех, кто может столкнется с такой бедой сообщаю:
Сервер автоматизации был создан с моделью памяти tmApartment. Все прекрасно работало при компиляции в Delphi5, но в Delphi6 дебагер показал такую вещь:
1. Application был один.
2. Очередь сообщений была одна, и работала в каком-то другом потоке. В результате, окна получали события как попало, или вообще не получали. Например, StayOnTop окна создать было невозможно — зависало намертво в конструкторе.
3. Когда от сервера отключались все пользователи, он часто падал с сообщением ошибки API или вообще с сообщением, что доступ запрещен (Security Windows).
4. При попытке открыть всплывающее меню, оно как бы открывалось, но ничего не происходило, хотя все события, которые нужны и обработчики срабатыали. После такой попытки точно программа вылетала при закрытии последнего соединения.
5. Было замеченро, что при уничтожении потомков от TWinControl, Application какое-то время считала их существующими, и очередь сообщений часто вылетала по сообщению, что индекс не входит в границы списка. То, что это именно очередь сообщений найти было почти невозможно, т.к. при построчном проходе программы все работало нормально. Помогло то, что индекс был равен ровно на единицу больше, чем потомков TWinControl.
Короче, поставьте модель tmSingle и работайне дальше. Причем, сам COM сервер может быть создан с параметрами, например:
TComponentFactory.Create(ComServer, TХХХ, Class_ХХХ, ciMultiInstance, tmSingle);
Странно, что в Help нет про это дело ничего. Или я плохо искал?
В режиме анимации нет ключей. Нет возможности добавить
Так же пустой нижний селектор(здесь он открыт, не у меня), который справа от кнопки автозаписи.
Нет доступа в диспетчер задач и нет возможности зайти в соц.сети через любые браузеры
Здравствуйте, компьютер уже давно притормаживает.При попытке зайти в диспетчер задач отображаются.
Popup меню
Нашел в интернете код для работы с этим меню, все работает как надо, кроме одного. Мне нужно, чтобы.
popup меню в lotus
Подскажите пожалуйста. Мне необходимо в дизайнере в окне редактирования кода добавить свой строку в.
Источник
Всплывающее окно
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Всплывающее окно
Здрвствуйте. Подскажите, а как сделать такую всплывающую подсказку
Всплывающее окно
Здравствуйте, поставил себе цель создания «баннера» для рабочего стола.Вопрос вот в чом как.
Всплывающее окно
Вылезает каждые пять секунд вот такое сообщение программа сама по себе работает но окошко очень.
Показать всплывающее окно
procedure TForm1.Button3Click(Sender: TObject); var arr : array of integer; i, k : Integer; //.
вот ни разу не понятно, что как работает
если одна форма что-то делает реально, то другие формы приложения в этот момент курят
если только действие не ведется в другом потоке, о чем мы тут не знаем
что конкретно может «породить событие» в форме1?
нужны подробности.
Так и сделано.
В Form1 допустим сработал таймер.
Выполняется код Form2.Show;
В Form2 прописал при показе формы
Form2.FormStyle:=fsStayOnTop;
form2.FormStyle:=fsNormal;
При этом показывается и Form1, а мне надо чтоб она оставалась на панели задач
Если к добавить Form1.Hide; при показе Form2.
То к ней у меня не будет доступа.
Пока я с Form2 не покажу ее.
Добавлено через 12 минут
Работает только главная форма, остальная в покое.
Все сделано на процедурах без потоков.
При срабатывании таймера на Form1
Запускается Form2, в Edit мы ввели даные.
Закрыли Form2, передали даные Form1 процедуре MyProcedure
И вернули фокус в прежнее окно.
А какие параметры надо передавать процедуре CreateParams
Добавлено через 2 часа 11 минут
Так с этим разобрался
Вот только так как в вашем примере у меня не работает
Пришлось в основной класс формы записать
Вот теперь проблема в фокусе
Как реализовать следующее
Нажал я кнопку в Form1 запустился таймер
Пошел в другое окно
Сработал таймер, всплыла Form2 поверх остальных окон
Ввел данные в едит
Form2 закрылась, меня вернуло в прошлую прогу.
При этом форма один не всплывала
В событие Form2 FormShow ввожу
Решение
запускаем
при нажатии кнопки form1 исчезла, Form2 появилась, вводим что хотим
через 5 секунд появляется form3 модально
работаем с ней, закрываем
фокус как был в Form2 так и остался. никакого шаманства
но пользователи проклянут вас в веках, если вдруг с перепугу будет всплывать модальная форма
Добавлено через 2 минуты
в form2 неплохо бы добавить
Давайте все сначала
Вот логика программы
Запустил я программу.
В поле Edit ввел время для Timer1
Нажал на кнопку, запустился таймер.
Все таймер себе идет, программа сидит на панели задач.
Я пошел к примеру в текстовый редактор
Печатаю я себе, и вот таймер сработал.
Что должно произойти.
Form1 как лежала на панели так и лежит, и иконка не исчезает
Form2 выскакивает, фокус с текстового редактора идет на Edit Form2
Я ввел значение в Edit для Timer2 Form1, Form2 закрылась
Фокус передался в текстовый редактор, и я себе продолжаю печатать на том месте где и печатал
А Form1 лежит на панели задач и ждет пока Timer2 не сработает
Он сработал, в его событии он нажал кнопку один и пошло все по кругу.
Спасибо вам за то что вы еще пытаетесь мне помоч
я-то думал, вы работаете в форме этого же приложения
а у вас вообще блокнот.
Добавлено через 3 минуты
тогда я вообще не понимаю, в чем проблема
у меня все и так работает
вообще без дополнений
запустил форму 1 свернутую, перешел в блокнот
через 5 сек сработал таймер, вывел окно
я закрыл окно и продолжил работать в блокноте.
тогда прочитайте текст от производителя ОС и расслабьтесь:
The system restricts which processes can set the foreground window. A process can set the foreground window only if one of the following conditions is true:
The process is the foreground process.
The process was started by the foreground process.
The process received the last input event.
There is no foreground process.
The foreground process is being debugged.
The foreground is not locked (see LockSetForegroundWindow).
The foreground lock time-out has expired (see SPI_GETFOREGROUNDLOCKTIMEOUT in SystemParametersInfo).
No menus are active.
An application cannot force a window to the foreground while the user is working with another window. Instead, Windows flashes the taskbar button of the window to notify the user.
как я и говорил, программы не должны бесить юзера
Источник
Popup delphi не работает
Контекстное меню (PopupMenu), вызываемое в приложении Windows по щелчку правой кнопкой мыши, является стандартной и удобной возможностью многих программ. Delphi компонент PopupMenu предназначен для создания таких контекстных меню. Контекстное меню из-за способа своего появления называют ещё всплывающим меню.
Delphi компонент PopupMenu почти не отличается от компонента MainMenu и также является невизуальным. Но в отличие от Главного меню, которое одно на Форме, всплывающие меню могут быть у каждого объекта, размещённого на Форме. Поэтому нужно разместить на Форме и запрограммировать столько компонентов PopupMenu, сколько контекстных меню предполагается использовать в программе. Кроме того, контекстное меню не имеет нескольких пунктов верхнего уровня, так как все его пункты располагаются в одном вертикальном столбце.
После того как компонент PopupMenu размещён на Форме, структура меню формируется совершенно аналогично созданию Главного Меню (компонент MainMenu). Далее, для того, чтобы контекстное меню определённого объекта (например, компонента StringGrid) вызывалось в программе, необходимо свойству PopupMenu этого объекта присвоить имя соответствующего Delphi компонента PopupMenu:
В момент появления контекстного меню происходит событие onPopup компонента PopupMenu. В этот момент можно, исходя из анализа ситуации, внести необходимые изменения в его параметры.
Щёлкнув по объекту правой кнопкой мыши, мы получим появление его контекстного меню, обеспеченного компонентом PopupMenu1, в точке произведённого щелчка. Но можно добиться его появления в любом нужном нам месте Формы. Достигается это использованием метода Popup компонента PopupMenu, при этом свойство Popup у соответствующего компонента (в данном случае StringGrid) нужно очистить.
Для использования этого метода необходимо использовать событие щелчка правой кнопки мыши по объекту. И правильнее использовать именно отпускание кнопки, то есть событие onMouseUp нужного объекта. Метод Popup имеет параметры X и Y, соответствующие расстоянию точки щелчка по горизонтали и вертикали от верхнего левого угла экрана соответственно. То есть, можно добиться появления меню вообще за пределами Формы. Вот, попробуйте использовать такой код:
procedure TForm1.StringGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight then PopupMenu1.Popup(0, 0); //появление меню в точке (0, 0)
end;
Но и обработчик события onMouseUp тоже имеет параметры X и Y. Они соответствуют расстоянию точки щелчка по горизонтали и вертикали от верхнего левого угла уже Формы. Однако, если попытаться использовать их в методе Popup, то меню не появится в том месте, где вы ожидаете. Чтобы добиться нужного эффекта, необходимо учитывать также положение самой Формы, а также того объекта, в пределах которого должно появляться меню. Но и это не всё. Необходимо к значению X добавить высоту заголовка Формы, которая неизвестна. Все эти слагаемые усложняют код.
Избавиться от большинства слагаемых поможет функция GetClientOrigin. Она вызывается без параметров и возвращает сдвиг клиентской области Формы относительно верхнего левого угла экрана в формате TPoint (точка, то есть запись с полями X и Y). Таким образом, остаётся учесть только положение нужного объекта. Следующий код обеспечивает появление меню именно в месте щелчка мышки по компоненту StringGrid1:
Источник
PopupMenu — контекстное (всплывающее) меню в Дельфи
Контекстное (всплывающее) меню появляется при размещении указателя в форме или в области некоторого элемента управления и нажатии правой кнопки мыши. Обычно контекстное меню содержит команды, влияющие только на тот объект, для которого вызвано это меню, поэтому такое меню также называют локальным. На скриншоте показан примерный вид контекстного меню.
Контекстное меню в Delphi представлено компонентом PopupMenu.
PopupMenu можно конструировать так же с помощью Конструктора меню. Для этого нажимаем правой кнопкой миши на компоненте (см. скриншот):
выбираем пункт меню — Menu Dessigner.
Свойства компонента PopupMenu
AutoPopup типа Boolean (определяет, появляется ли контекстное меню при щелчке правой кнопки мыши и размещении указателя на компоненте, использующем это меню). Если свойство AutoPopup имеет значение True (по умолчанию), то контекстное меню при щелчке мыши появляется автоматически. Если свойство AutoPopup имеет значение False, то меню не появляется. Однако в этом случае можно активизировать меню программно, используя метод Popup. Процедура Popup (X, Y: integer), где X и Y— координаты меню относительно левого верхнего угла экрана монитора, выводит на экран указанное контекстное меню, например: PopupMenu1.Popup(200, 200);
Alignment типа TPopupAlignment (определяет место появления контекстного меню по отношению к указателю мыши).
Свойство Alignment может принимать следующие значения:
- paLeft (положение указателя определяет положение левого верхнего угла меню) — по умолчанию;
- paCenter (положение указателя определяет положение центра меню по горизонтали);
- paRight (положение указателя определяет положение правого верхнего угла меню).
Для того чтобы контекстное меню появлялось при щелчке на компоненте, необходимо его свойству PopupMenu присвоить в качестве значения имя требуемого контекстного меню.
Данная инструкция задает для формы Form1 контекстное меню PopupMenu1.
Источник
PopupMenu в Delphi
Создавая из панели инструментов Standard компонент PopupMenu на нашей форме, вы заметите, что PopupMenu – это невизуальный компонент. Вообще PopupMenu это всплывающее контекстное меню, которое возникает при нажатии пользователя правой кнопкой мыши.
Что ж сделать, чтобы увидеть PopupMenu? Для этого сразу привяжите всплывающее меню к форме. Это делается на вкладке Events (события) главной формы PopupMenu. После этого при запуске проекта F9 щелкая правой кнопкой можно увидеть следующее:
Кстати PopupMenu во многом напоминает MainMenu, но контекстные меню разных форм не объединяются. Можно говорить, что для одной формы – одно PopupMenu, а для следующей к примеру другое PopupMenu.
Само проектирование всплывающего меню в Delphi происходит с помощью конструктора:
На рисунке показано, что PopupMenu имеет Name=N1 как и в случае с MainMenu. Так что основные свойства можно перечесть по пальцам: Aligment (выравнивание), AutoHotKeys (горячие клавиши), AutoPopup (автоматическое появление при щелчке правой кнопки), TrackButton (какая кнопка активирует всплывающее меню, если связано с кнопкой панели инструментов). Остальные свойства рассмотрите самостоятельно, там ничего особенного нет.
Основные методы:
| Метод | Описание |
| DoPopup | Procedure DoPopup(Sender: TObject);Генерирует событие OnPopup |
| FindItem | Type TFindItemKind =(fkCommand, fkHandle, fkShortCut);Function FindItem(Value: Word, Kind:TFindItemKind): TMenuItem; Ищет и возвращает раздел меню из Значения Value равное Kind = fkCommand; При Kind = fkHandle – дескриптор всплывающего меню, при Kind = fkShortCut – код горячих клавиш |
| Popup | Procedure Popup (x,y: Integer);Показывает меню в указанной позиции экрана |
На вкладке Events (события): OnChange – событие при изменеии меню, OnPopup – событие происходит перед появление всплывающего меню.
. popupmenu delphi popupmenu в delphi свойства и событие компонентов PopupMenu, TImage popupmenu delphi пример popup меню delphi
Источник