IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Псевдографика, в .txt
сообщение
Сообщение #21


Гость






Не надо ничего переустанавливать, проблема не там, где ты думаешь... Почитай статью:
DRKB -> Системные функции и WinAPI -> Windows -> Буфер обмена -> Буфер обмена и строки (текст) -> Поместить/получить строку из буфера обмена (Заплатка к стандартным)

По-моему, как раз твой случай. Попробуй сначала повесить копирование в Clipboard на нажатие кнопки, и проверить, правильно ли работает. Если правильно - будешь добавлять HotKey, и по нажатию Ctrl+C делать то же самое...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #22


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Цитата(volvo @ 2.07.2009 13:59) *

По-моему, как раз твой случай.
да, мой. (только я не понял почему:) ) это от версии винды зависит?


Цитата
Попробуй сначала повесить копирование в Clipboard на нажатие кнопки, и проверить, правильно ли работает. Если правильно - будешь добавлять HotKey, и по нажатию Ctrl+C делать то же самое...

где можна про это почитать?

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #23


Гость






Цитата
где можна про это почитать?
Про что? Как назначить HotKey? При создании формы - RegisterHotKey, при ее удалении - UnregisterHotKey . И ловить сообщение WM_HOTKEY:
type
TForm1 = class(TForm)
// ...
private
procedure WMHotKey(var Message: TMessage); message WM_HOTKEY; // Вот так
end;

Цитата
это от версии винды зависит?
Это зависит от того, юникодные ли у тебя контролы, и какой язык установлен для non-Unicode программ.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #24


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Может, у тебя изначально стояла какая-то пришибленная сборка от какого-нибудь Zver'я?

Volvo, спасибо, компоненты такие правда работают..

Кстати, когда я в 16:53 зашёл в топ, то последние 2 сообщения не отобразились почему то..

Сообщение отредактировано: Unconnected -


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #25


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Volvo, вот сделал заплатку для буфера, сделал горячую клавишу ctrl+c, а сделать еще горячие клавиши ctrl+x,ctrl+a не получается. Прикрепленный файл  Koder.rar ( 629.68 килобайт ) Кол-во скачиваний: 357
Помоги пожалуйста.


Добавлено через 5 мин.
И еще вопросик: как сделать эту же заплатку, когда нажимаешь на мемо правой кнопкой мыши и выбираешь копировать или вырезать? Создать собственное контекстное меню или есть вариант полегче?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #26


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


И еще вопрос: я заметил, что даже если проект сверут, hotkey все равно работает! это можно как-то отключить?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #27


Гость






Цитата
сделал горячую клавишу ctrl+c, а сделать еще горячие клавиши ctrl+x,ctrl+a не получается.
Еще бы... Ты не то сделал, второй параметр RegisterHotKey - это не сама кнопка, а индекс операции. Смотри:
1) описываешь собственно идентификаторы горячих клавиш, и сами кнопки:
const
HK_COPY = 1;
HK_SELECTALL = 2;
HK_CUT = 3;

MyHotKeyCopy = ord('C');
MyHotKeySelectAll = ord('A');
MyHotKeyCut = ord('X');
, а потом регистрируешь их (а в процедуре WMHotKey - проверяешь, какой хоткей пришел, и указываешь, что надо сделать):
procedure TForm1.WMHotKey(var Msg: TWMHotKey);
begin
case Msg.HotKey of
HK_COPY:
PutStringIntoClipBoard(form1.MemoTo.Text);
HK_SELECTALL:
Form1.MemoTo.SelectAll;
HK_CUT:
; // тут добавишь, чего тебе надо. Копирование в буфер и очистка Memo
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Form1.Handle, HK_COPY, MOD_CONTROL, MyHotKeyCopy);
RegisterHotKey(Form1.Handle, HK_SELECTALL, MOD_CONTROL, MyHotKeySelectAll);
RegisterHotKey(Form1.Handle, HK_CUT, MOD_CONTROL, MyHotKeyCut);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Form1.Handle, HK_COPY);
UnRegisterHotKey(Form1.Handle, HK_SELECTALL);
UnRegisterHotKey(Form1.Handle, HK_CUT);
end;
Если надо и контекстное меню, то те же операции повесишь на PopupMenu, тогда проще будет не выполнять действия сразу в обработчике WMHotKey, а вызывать процедуры меню...

Сразу предупреждаю твой вопрос: "почему по нажатию Ctrl+A текст в Мемо не выделяется?" Он выделяется, только ты этого не видишь, потому что MemoTo у тебя неактивный, а по умолчанию на неактивном Мемо выделение не отображается. Перекинь HideSelection в False, тогда выделение будет отображаться в любом случае.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #28


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Цитата
Если надо и контекстное меню, то те же операции повесишь на PopupMenu, тогда проще будет не выполнять действия сразу в обработчике WMHotKey, а вызывать процедуры меню...
т.е. заново самому создать PopupMenu, да?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #29


Гость






Да, создать свой PopupMenu... Кстати, если тебе надо, чтобы горячие клавиши работали только когда твоя программа активна (а не свернута и не в фоне) - проще будет добавить на форму TActionList и добавить в него три TAction (не стандартные, а именно простые, нажатием Ins а не Ctrl+Ins!!!). На каждый из них навесить по HotKey-ю, и в обработчике OnExecute написать нужные действия.

Тогда при создании PopupMenu достаточно просто выбрать Action, дальше Дельфи все сделает сама.
 К началу страницы 
+ Ответить 

2 страниц V < 1 2
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 20:18
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name