On-line: Pasha, PSP, гостей 2. Всего: 4 [подробнее..]
АвторСообщение





Пост N: 491
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 15.07.16 23:22. Заголовок: Скопировать из GET поля текущее значение в буфер обмена


Добрый день

GTWVG

У юзеров возник вопрос с копированием в буфер обмена из текущего GET-поля.
Вставлять мышкой через hb_gtInfo( HB_GTI_SELECTCOPY, "Копировать" ) им "неудобно". Плюс автоматом добавляется Enter в конце выбранной строки, на что может среагировать окно какого-нить клиент-банка...
Есть какие-нибудь наработки в этом направлении ?

В идеале, конечно, было-бы здорово с зажатым шифтом выбрать часть и через Ctrl-C скопировать в буфер. Ну или хоть поле целиком...

Наверняка уже реализовано, но что-то я не нашел, поиск по ключевому слову CLIPBOARD на форуме ничего в плане GET не дал.

Спасибо.

PS: вставлять из буфера, различая Ctrl-V, Shift-Ins и просто Ins программа давно умеет, но нужно обратное действие и желательно наиболее "стандартными" windows-средствами.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 11 [только новые]


постоянный участник


Пост N: 1233
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 16.07.16 08:04. Заголовок: Не претендую на крас..


Не претендую на красоту решения, но у меня так (GT_WVT):
1. При старте проги
 
SetKey( K_CTRL_INS, { || GetCopyPaste( 1 ) } ) // Copy
SetKey( K_ALT_INS, { || GetCopyPaste( 2 ) } ) // Paste

2.
 
FUNCTION GetCopyPaste( nMode )

LOCAL o := GetActive()
LOCAL c

IF ISNIL( o )
RETURN NIL
END // IF

IF nMode == 1 // Copy
IF ! ISNIL( o:Buffer )
HB_GTInfo( HB_GTI_CLIPBOARDDATA, AllTrim( o:Buffer ) )
END // IF

ELSEIF nMode == 2 // Paste
c := HB_GTInfo( HB_GTI_CLIPBOARDDATA )
IF ! ISNIL( c ) .and. ! Empty( c ) .and. ! ISNIL( o:Buffer )
KEYBOARD SubStr( c, 1, Len( o:Buffer ) )
o:Display()
END // IF
END // IF

RETURN NIL


Не помню точно, почему не Ctrl-V и Ctrl-C. Что-то с ними не получалось, сделал, как написано.


Спасибо: 1 
ПрофильЦитата Ответить





Пост N: 492
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 18.07.16 11:03. Заголовок: PSP пишет: Не помню..


PSP пишет:

 цитата:
Не помню точно, почему не Ctrl-V и Ctrl-C. Что-то с ними не получалось, сделал, как написано.


Там проблема в том, что стандартный INKEY() дает одинаковый код, 22 для ТРЕХ комбинаций клавиш: Insert, Ctrl+V и Shift+Insert.
Тоже самое с Ctrl+C = его код 3 пересекается с каким-то (не помню сейчас) из PgDn/PgUp.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1241
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 18.07.16 11:05. Заголовок: Да, точно...


Да, точно.

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5905
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.07.16 11:40. Заголовок: Пробни так el..


Пробни так
 

elseif nkey==22
nBits := hb_gtinfo( HB_GTI_KBDSHIFTS )
if nBits == hb_bitor( nBits, HB_GTI_KBD_CTRL )




Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 493
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 18.07.16 13:17. Заголовок: Dima пишет: Пробни ..


Dima пишет:

 цитата:
Пробни так


с распознаванием проблем нет:

if (inkey=22) 
if (нажат_шифт или нажат_контрол)
пасте_из_буфера
else
обработка_как_обычный_Insert
endif
endif


точно так-же с копированием: код=3, если нажат контрол или шифт - значит можно копировать.

вопрос с корректной обработкой текущего GET-поля и по-возможности, выделения shift+стрелки_влево_вправо. Чтобы "как в виндовс".

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5906
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.07.16 21:43. Заголовок: Sergy пишет: вопрос..


Sergy пишет:

 цитата:
вопрос с корректной обработкой текущего GET-поля и по-возможности, выделения shift+стрелки_влево_вправо. Чтобы "как в виндовс".


Ну такая фича не везде еще и в Минигуи работает , что уж тут говорить о консоли....
Только лишь напильник , лобзик и надфиль можно посоветовать [IMHO]

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 1242
Зарегистрирован: 27.01.07
ссылка на сообщение  Отправлено: 18.07.16 21:50. Заголовок: Dima пишет: Ну така..


Dima пишет:

 цитата:
Ну такая фича не везде еще и в Минигуи работает , что уж тут говорить о консоли....
Только лишь напильник , лобзик и надфиль можно посоветовать [IMHO]


Эти "тонкие" инструменты лично мне еще в школе на уроках труда надоели))) Вот и решил сделать "проще и дешевле")

Спасибо: 0 
ПрофильЦитата Ответить
администратор




Пост N: 5907
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 18.07.16 21:58. Заголовок: PSP пишет: ти "..


PSP пишет:

 цитата:
Эти "тонкие" инструменты лично мне еще в школе на уроках труда надоели)))


+1

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 131
Зарегистрирован: 24.04.13
ссылка на сообщение  Отправлено: 25.05.17 11:18. Заголовок: Dima пишет: elseif ..


Dima пишет:

 цитата:
elseif nkey==22
nBits := hb_gtinfo( HB_GTI_KBDSHIFTS )
if nBits == hb_bitor( nBits, HB_GTI_KBD_CTRL )


Sergy пишет:

 цитата:
с распознаванием проблем нет:

if (inkey=22)
if (нажат_шифт или нажат_контрол)
пасте_из_буфера
else
обработка_как_обычный_Insert
endif
endif



Куда этот фрагмент вставить в исходном примере чтобы можно было просто вставлять в GET по Ctrl-V или Shift-Insert ?

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 348
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 25.05.17 13:25. Заголовок: Ооочень много лет на..


Ооочень много лет назад здесь мне посоветовали чуть изменить исходный файл tgetlist.prg и замещать им стандартный при сборке проектов. С тех пор пользуюсь и никогда не возникало проблем. Изменил реакцию на клавиши Ctrl+C, Ctrl+V, Ctrl+X, типы полей так же понимает. "Мой" исходник можно скачать: https://storage.olegon.ru/supermag/upload/2017/TGETLIST.PRG.7z

Спасибо: 0 
ПрофильЦитата Ответить





Пост N: 547
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 26.05.17 17:51. Заголовок: azoo пишет: Куда эт..


azoo пишет:

 цитата:
Куда этот фрагмент вставить в исходном примере чтобы можно было просто вставлять в GET по Ctrl-V или Shift-Insert ?



В начале программы делаю так:
HB_GTInfo( HB_GTI_INKEYFILTER, { | nKey | KeyDriver(nKey) } )

сам обработчик тут, главное выделено синим цветом:
Скрытый текст


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 338
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет