powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Активация формы, фокус, .....
25 сообщений из 28, страница 1 из 2
Активация формы, фокус, .....
    #39791979
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ребята, делаю для себя панель быстрого запуска, с ярлыками и тд..
Есть две формы, обе скрыты ( hide ).

Form1 - главная, с которой работаю. ( formstyle = stayontop )
Form2 - Появляется с краю экрана, когда позиция курсора X < 2 ,
служит для показа главной формы( по onclick - Fomr1.show; )

Необходимо перекинуть файлы из проводника на Form1 .
Я же не могу одновременно перетаскивать файл и делать онклик на Form2 ...
По этому на Form2 сделал по таймеру проверку, если курсор находится на Form2 больше секунды - показываем Form1 , и уже в него кидаем файлы.

Файлы кидаю на Image , получая иконки. Каждый Image.tag пронумерован.
Переменная SensorTag , при mousemove по Image , получает его TAG .
По этой переменной я и перетаскиваю файлы в нужный мне Image .

Теперь сама проблема:

Если взять любой файл, попробовать перетащить его на Form2 , откроется Form1 . Но переменная SensorTag не принимает никаких значений, пока не отпущу кнопку мыши. То бишь форма появляется, но без фокуса что ли... Не знаю как это называется.
От этого вылетает ошибка, либо файл кидается в ту Image , по которым последний раз mousemove`ли.. Но никак не на ту, на которую навожу курсор.

Я пробовал
Form1.setfocus;
Form1.Edit1.setfocus; - на что надеялся?))
Но это не помогает.

Нужно именно кликнуть на форму, что бы она стала активной.

Можно ли как-то активировать форму программно?
Спасибо.
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39791981
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитай про SetCapture.
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39791987
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanПочитай про SetCapture.
Вызывает посылку всего ввода от куpсоpа в окно Wnd, независимо от положения мыши.
Но я не понял, как мне это поможет.
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792005
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neМожно ли как-то активировать форму программно?
Спасибо.легально - нельзя, да и толку от этого мало
в windows, на уровне апи, активным может быть только 1 единственное окно на все запущенные программы

есть такая функция DragQueryPoint

а вообще лучше почитать вот этот тынц
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792175
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
kealon(Ruslan)в windows, на уровне апи, активным может быть только 1 единственное окно на все запущенные программы
Так мне не два нужно, одно ведь, конкретное.
Проблема именно в зажатой кнопки мыши. Если её отпустить и проделать тоже самое, то переменная при movemove по Image, получает их tag.

Цитата из гугла:
googleфункцией DragQueryPoint, которая, если не ошибаюсь, возвращает координаты курсора в момент сбрасывания файлов на форму.
Я подвожу курсор к какому либо Image`y, срабатывает mousemove, в ней я передаю переменной tag этого Image. В процедуре драгдропа, я обращаюсь к конкретному Image по этой переменной. Аля image[переменная].
Но всё спотыкается на стадии срабатывания mousemove. Оно не работает, так как кнопка мыши зажата и удерживает файл, от этого окно не активно...
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792225
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если ZOrder поправить, чтобы форма 2 всегда была над формой 1 ?
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792291
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochа если ZOrder поправить, чтобы форма 2 всегда была над формой 1 ?
Для чего? Вы скорее всего не поняли меня..
Вот гифка, видно как иконка появляется на том Image, по которому последний раз водили курсором.
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792323
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neесли курсор находится на Form2 больше секунды - показываем Form1 , и уже в него кидаем файлы.

ну и где form2 ?

на GIF-ке тоьлко одно окно, которое приклеено к левой бровке
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792336
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochTech N9neесли курсор находится на Form2 больше секунды - показываем Form1 , и уже в него кидаем файлы.

ну и где form2 ?

на GIF-ке тоьлко одно окно, которое приклеено к левой бровке
Form2 - это синенький язычок, по клику которого, появляется Form1.
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792342
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, если быть точным, это shape на Form2.
Клик по нему = form1.show;
навести на него и удерживать ~ 2 секунды = form1.show;

При наведении на Image, в переменную SensorTag записывается Tag Image`a.
Но как видите, с перетаскиваемым файлом, в переменную ничего не записывается. По этому иконка появляется на том Image, по которому последний раз водили курсором.
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792361
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neНо как видите, с перетаскиваемым файлом, в переменную ничего не записывается. По этому иконка появляется на том Image, по которому последний раз водили курсором.
Во время перетаскивания окно не получает сообщений об этом (о передвижении мыши).
Только если операция завершится и только сообщение о "брошенных" файлах.
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792384
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, надо изучать исходники

* melander's drag--n-drop pack
* Virtual Tree View в части OLE Drag-n-drop
* RxLib / JediVCL в части TFilenameEdit и TDirectoryEdit и их подержки для DnD

wadmanВо время перетаскивания окно не получает сообщений об этом (о передвижении мыши).

Разве???
Каждое окно при заходе в него должно сообщить системе, согласно ли оно принимать "груз" такого типа, или оно к нему неприменимо. Будет оно для конкретного груза выступать в качестве Drop Target или нет.

Это, конечно, не WM_MOUSEMOVE - но тоже "про мышку"
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792385
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanTech N9neНо как видите, с перетаскиваемым файлом, в переменную ничего не записывается. По этому иконка появляется на том Image, по которому последний раз водили курсором.
Во время перетаскивания окно не получает сообщений об этом (о передвижении мыши).
Только если операция завершится и только сообщение о "брошенных" файлах.
Даже перетаскивать ничего не нужно. Именно зажатая лкм виновата.
Вообще, пытаюсь сделать нечто похожее как у aimp. У них тоже можно встроить плеер в бок экрана, и он будет прятаться. А при наведении курсора появляется язычок, клик по которому показывает форму. Но у них так же реализован и dragdrop. При перетаскивании файла на язычок, появляется форма, и в нее успешно драгдропаются файлы.

Как мне быть?
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792389
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neВот гифка, видно как иконка появляется на том Image, по которому последний раз водили курсором.

А хочешь тупо-тупо ?

помети над ВСЕМИ иконками одно de-facto прозрачное окно.

не на уровне официального Windows 2000 уровня прозрачности (есл он 100% Windows не дура и перестаёт передавать события от user input), а просто, что оно есть, но себя не рисует по WM_PAINT, а рисует только окна под собой.

А оно уже это прозрачное окно, перехватив мышку и поняв куда прилетело, будет раздавта ьгруз "иконкам"

.....хотя правильно всё-таки разобраться в механизме DnD и правильно отрабатывать событие Drop
собфтия Drag и Mouse Move для этого наверное не так сильно и нужны
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792390
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neКак мне быть?

не использовтаь MouseMove - он для этого НЕ предназначен, и ты уже много раз в этом убедился

использовать события и функции из раздела drag n drop
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792392
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего, у нас тоже когда-то для окончания собятия перетаскивания вметсо OnDragDrop использовали OnExit

тоже думали "так проще, я думать я не хочу"

в результате были танцы с плясками вплоть до AV

особенно смешно, когда окна, куда "перетаскивали" были вообще в этот момент на экране не видны .но пытались сработать
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792405
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochРазве???
Каждое окно при заходе в него должно сообщить системе, согласно ли оно принимать "груз" такого типа, или оно к нему неприменимо. Будет оно для конкретного груза выступать в качестве Drop Target или нет.
Это делается заранее https://docs.microsoft.com/en-us/windows/desktop/api/shellapi/nf-shellapi-dragacceptfiles
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792412
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tech N9neForm2 - это синенький язычок, по клику которого, появляется Form1.

Клик-то тебе зачем? Это лишнее.
показывай свою форму без клика.
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792422
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman,

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

это где-то тут надо исктаь: https://docs.microsoft.com/en-us/windows/desktop/shell/dragdrop

•Implement and register an OLE drop target. Avoid using Windows 3.1 targets or the WM_DROPFILES message, if possible.

Впрочем, автору и WM_DROPFILE должно хватить, тольк озаявлять надо не всю форму-1, а каждую иконку отдельно
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792424
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747Tech N9neForm2 - это синенький язычок, по клику которого, появляется Form1.

Клик-то тебе зачем? Это лишнее.
показывай свою форму без клика.
Она будет мешать. Будет появляться каждый раз, как курсор приблизится к краю экрана.
К примеру, есть FL Studio, в нём встроен браузер файлов, расположен он с той же стороны, я его так же скрываю. Появляется он при наведении курсора в туже область(к краю).
Или еще пример, браузер opera, имеет главную кнопку меню в верхнем левом углу.. Я в нее не целюсь, а просто довожу курсор до упора в угол и нажимаю.


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

Я скорее откажусь от DnD, лишь бы оно автоматом не выбегало..
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792514
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochwadman,

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

это где-то тут надо исктаь: https://docs.microsoft.com/en-us/windows/desktop/shell/dragdrop

•Implement and register an OLE drop target. Avoid using Windows 3.1 targets or the WM_DROPFILES message, if possible.

Впрочем, автору и WM_DROPFILE должно хватить, тольк озаявлять надо не всю форму-1, а каждую иконку отдельноя ему этот тынц уже писал, не хочет читать человек

подписать на WM_DROPFILES можно только окно верхнего уровня

Tech N9ne, ещё раз повторю, фокус устанавливать нельзя, так как функция переноса вылетит, она SetCapture устанавливает
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792529
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)подписать на WM_DROPFILES можно только окно верхнего уровня

окно верхнего уроня - это которое desktop ?
или у которого флаг WS_EX_APPWINDOW ?

как-то это странно!

и TEdit из rx/jvcl и VTV - они как-то сами себя подписывают вполне. Есть HWND - и достаточно?
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792562
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

я говорю, лень человеку копаться, WM_DROPFILES старый интерфейс

более современный способ - RegisterDragDrop
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792597
Foxpc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Автор походу делает свою оболочку ОС
...
Рейтинг: 0 / 0
Активация формы, фокус, .....
    #39792668
Фотография Tech N9ne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FoxpcАвтор походу делает свою оболочку ОС

Просто автор не программист, а самоучка, причем только начинающий)

То что люди кидают мне ссылки, мне и так многое не понятно, + еще и на англ языке. Я бы сказал что остаётся куча вопросов, но соврал бы, так как их появляется еще больше.
ну да ладно.
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Активация формы, фокус, .....
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]