![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Grol |
|
|||
|
Unregistered |
Привет всем! Вот я пишу:
Я хочу, чтобы по нажатию на форме ctrl+V у меня в edit вводилась "вставка", как по коду видно. При этом edit неактивный, чтоб на нем небыло фокуса. То есть должно чисто отлавливаться сообщение wm_paste. Помогите мне пожалуйста разобраться и поподробнее. Буду очень преочень благодарен всем кто поможет мнне!!! P.S.: Ведь все когда-то так начинали с нуля изучать Delphi. Это сообщение отредактировал(а) Alex - 2.5.2005, 00:24 |
|||
|
||||
| dvamaster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 559 Регистрация: 30.6.2004 Где: Россия : Курган Репутация: 3 Всего: 10 |
WM_PASTE работает только на контролах у которых есть поле ввода.
Отлавливай простое нажатие Ctrl+V -------------------- Хорошую информацию трудно добыть. Сделать с ней что-нибудь - еще труднее. /L. Skywalker/ Что же я сделал не так? /Король Лир/ Я делаю это для твоего же блага! /Любой родитель и палач/ PKUNZIP.ZIP /неизвестный/ |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Вот как раз мне и нужно не нажатие клавиши отловить, так как это я знаю, а само сообщение wm_paste которое будет посылаться от нажатия. То есть типа хука. Только я не знаю как это сделать. Так как в Delphi я недавно начал программировать. Подскажите пожалуйста...буду очень благодарен.
|
|||
|
||||
| Guest |
|
|||
|
Unregistered |
Мастера В Delphi помогите мне, Ламеру в программировании, на вас вся надежда... Я бы сам, но я все
|
|||
|
||||
| Zero |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2169 Регистрация: 23.10.2004 Где: Россия, г. Рязань Репутация: 8 Всего: 24 |
Но если тебе нужно просто, по нажатию на другом элементе, чтобы в нужный тебе edit, в частности в первый вводилась вставка, то делай это на событие нажатия клавиши (OnKeyDown, или OnKeyPress, или OnKeyUp). Вчастности пример: прось на форму 2 edit'a и на событие OnKeyPress 2-ого edit'a напиши:
|
||||
|
|||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
ПО моему, в этом случае надо отлавливать не WM_PASTE, а комбинацию клавишь. Вот мой вариант:
|
|||
|
||||
| Grol |
|
|||
|
Unregistered |
Мастера спасибо за то что уже что-то подсказали, но вот дело еще в следующем. Я ненапрасно код привел в начале всего обсуждения. Мне нужно, чтобы соообщение отлаваливалось от нажатия а не само нажатие, т.е. вместо ctrl+V может быть и shift+insert, и также правая кнопка мыши и в опциях вставить. А как тогда действовать. Буду ждать ответа, если кто захочет помочь. Спасибо за все. "Век буду должен."
|
|||
|
||||
| Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Grol, как же ты не поймешь! Сообщения от Виндовс, в твоем случае, получает окно (или по-просту форма), а форма не имеет поля ввода. Следовательно форма не обрабатывает сообщение WM_PASTE, она его просто игнорирует!
Так что сделать что-то
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
| Rouse_ |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 5 Всего: 29 |
Может вот это подойдет?
Добавлено @ 11:37
Не может она его получать.
таким образом форма не является получателем... Это сообщение отредактировал(а) Rouse_ - 3.5.2005, 11:33 |
||||||
|
|||||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Это сообщение отредактировал(а) Girder - 3.5.2005, 16:02 -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 5 Всего: 29 |
Girder, ну нифига себе
Это ж из пушки по воробьям |
|||
|
||||
| Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
PS: Да и вообще... ты забыл!!! об всяких там "диалогах" (OpenDialog, SaveDialog...), MessageBox-ах и т.д. и т.п. Это сообщение отредактировал(а) Girder - 3.5.2005, 16:35 -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
| Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 5 Всего: 29 |
Угу, только проще застрелиться чем отлавливать откуда вставка пришла и делать инвариантный выбор на несколько контролов Лучше уж наследника от едита написать и не париться (благо это целиком соответствует вопросу без выхода за рамки) |
|||
|
||||
| Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
PS: Посчитай... сколько строчек изменилось(добавилось)... что бы реализовать твою идею... PS2: Жду еще идей... Это сообщение отредактировал(а) Girder - 4.5.2005, 02:11 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
| Grol |
|
|||
|
Unregistered |
Спасибо за помощь...Все получилось!!!
|
|||
|
||||
| Grol |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 5.5.2005 Где: Россия Репутация: нет Всего: нет |
Здравствуйте!!! Мастера помогите, а в частности Rouse, пожалуйста!!! Вы мне давали код. Я его немного переделал. Мне нужно перехватить вставку из буфера обмена данных в ячейки Stringgrid. Вот есть код, но только действует для edit:
...
Для Stringgrid и edit в процедурах onenter и onexit соответствено ставим процедуры ControlOnEnter и ControlOnExit. Спасибо заранее за ответ!!! Помогите ламеру!!!!
Это сообщение отредактировал(а) Girder - 8.5.2005, 07:46 --------------------
Живи так, как будто тебе предстоит умереть завтра...Учись так, как будто тебе предстоит жить вечно......... |
||||
|
|||||
| Grol |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 5.5.2005 Где: Россия Репутация: нет Всего: нет |
Help!!! На помощь...помогите мне пожалуйста уважаемые мастера Delphi!!! Что только я уже не перепробовал!!!
--------------------
Живи так, как будто тебе предстоит умереть завтра...Учись так, как будто тебе предстоит жить вечно......... |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 80 Всего: 162 |
Я конечно не проверял и особо не смотрел код, но что-то мне подсказывает, что нужно написать вот так:
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Grol а с чего ты взял... что обязательно должно быть сообщение WM_Paste(или какое нить еще
Вот компонент... для перехвата некоторых функций при работе с буфером обмена... для своего приложения(ClipboardHook.pas) - после инсталяции появится в Samples:
Вот пример его использования: -"Запрет" работы с буфером для всех TEdit; -"Запрет" работы с буфером при вставке для TStringGrid; -"Запрет" работы с буфером при копировании(вырезке) для TMemo;
PS: По большому счету... данный код(компонент) тоже не панацея на все 100% Удачи. -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
| Grol |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 5.5.2005 Где: Россия Репутация: нет Всего: нет |
Girder - я только начинающий, можно так сказать. А ты пишешь такой код, что он мне вообще непонятен. Мне как бы хотелось немного попроще, но все равно спасибо тебе за то, что помогаешь!!! Также всем спасибо!!! Girder, а если вот в моем коде, что там можно сделать??? Еще раз спасибо всем!!!
Это сообщение отредактировал(а) Girder - 8.5.2005, 17:32 --------------------
Живи так, как будто тебе предстоит умереть завтра...Учись так, как будто тебе предстоит жить вечно......... |
|||
|
||||
| Grol |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 5.5.2005 Где: Россия Репутация: нет Всего: нет |
Girder - я посмотрел Ваш компонент, он действительно действует, спасибо за это! Очень Вам благодарен!!! Только есть одно, но как мне в вашем компоненте строковой переменной присвоить содержание буфера обмена.
Например: (это ваш код)
Помогите мне пожалуйста еще раз и я уж точно от Вас отстану. :-))) Ламера Ведь так и действуют, что узнают всю информацию от других, я в том числе...Спасибо заранее!!! Это сообщение отредактировал(а) Girder - 9.5.2005, 09:42 --------------------
Живи так, как будто тебе предстоит умереть завтра...Учись так, как будто тебе предстоит жить вечно......... |
|||
|
||||
| Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: 31 Всего: 155 |
Ну в данном случаи... более простой вариант не много изменить код компонента
Вот тебе новый вариант ClipboardHook.pas:
Вот тогда... как рещается твоя проблемма(если речь идет о запросе текста... из буфера
PS: Пользуйся тегами CODE - а то твои посты тяжело читать Удачи. -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |