
    Новые сообщения [новые:0]
  
  Дайджест 
  
  Горячие темы
    Избранное [новые:0]
  
Форумы 
 
Пользователи 
Статистика 
Статистика нагрузки 
    Мод. лог 
  
  Поиск 
  | 
| 
 28.05.2015, 14:59 
 | 
|||
|---|---|---|---|
  
  | 
|||
Как получить позицию курсора в текстовом item  | 
|||
| 
 #18+ 
  
    
  Добрый день! Forms 4.5 Нужно вставить подстроку в текстовый item в то место где находится курсор. Как это лучше сделать? Если есть возможность получить позицию курсора, то проблем нет, но мы так и не смогли найти как это сделать. Спасибо ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 28.05.2015, 18:07 
 | 
|||
|---|---|---|---|
  
  | 
|||
Как получить позицию курсора в текстовом item  | 
|||
| 
 #18+ 
  
    
  Баловались когда-то. Тема такая: В формсах на все активные элементы ввода есть одно-единственное окно (в смысле объекта windows), которое при навигации скачет по форме аки заяц. Handle этого окна поймать возможно - но вот тут деталей не помню, вроде по Title ловили. Имея handle окна, можно послать серию событий keydown-keyup и в то место, где находится курсор, влетит нужная строка. Однако, ввиду того, что окно одно - то повесить отсылку такой последовательности, скажем, на кнопку той же формы не выйдет - то-самое-единственное окно будет в момент отсылки находиться на кнопке :) Зато можно послать из другой формы или вообще из левой приблуды. Мы пользовались для организации межпроцессного взаимодействия двух форм - работало, в принципе, но в продуктив не пошло ибо костыль уж больно извратный :) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 29.05.2015, 07:20 
 | 
|||
|---|---|---|---|
Как получить позицию курсора в текстовом item  | 
|||
| 
 #18+ 
  
    
  SergeyAKa, 4.5 не юзал, м.б. есть там что-то подобное => :system.cursor_item/record, :system.mouse_x/y_pos ? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 29.05.2015, 10:12 
 | 
|||
|---|---|---|---|
  
  | 
|||
Как получить позицию курсора в текстовом item  | 
|||
| 
 #18+ 
  
    
  SergeyAKa, Уже не помню была ли во времена Forms 4.5 d2kwutil.pll или она появилась позже, но если есть, то как-то так: WIN_API_SHELL.SendMessage( Get_Item_Property( Name_In( 'SYSTEM.CURSOR_ITEM' ), WINDOW_HANDLE ), 770 /*WM_PASTE 0x0302*/, 0 /*wParam*/, 0 /*lParam*/ ); Если нет, то надо самому заморочиться с ORA_FFI ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 31.05.2015, 14:52 
 | 
|||
|---|---|---|---|
  
  | 
|||
Как получить позицию курсора в текстовом item  | 
|||
| 
 #18+ 
  
    
  В свое время заморачивался с аналогичной задачей, в результате все было крайне сложно. Не очень понимаю, чем Вам поможет получение позиции курсора. Обернуть через ORA_FFI SendMessage/PostMessage делов на пару часов (конечно если уметь). Но вот заставить текст вставать туда куда нужно и тогда когда нужно - я очень долго мучался. На Forms 6i проблемы начинались при навигации между item'ами. А в реальном приложении, скорее всего, навигация явная или не явная будет. Если я правильно помню, поборол через таймер: на триггере кнопки /button/ взводил таймер и весь код выполнялся уже в таймере, когда вся не явная навигация в Oracle Forms уже завершена. Было это давно, кода не осталось (или нужно раскапывать старые залежи CD-дисков, вдруг где исходники сохранились ))) ) Другое дело, что у нас приложение было многоязыковым. С поддержкой UTF-8. Возможно, на однобайтных кодировках глюков будет меньше. Где-то на форуме должен остаться топик с моим матом по данному поводу andrey_anonymous Полу правда, полу нет. 1. Окно действительно для _некоторых_ item'ов одно. Но лично мне, это проблемы особой не составляло. 2. Handle окна в Forms 6i вроде добывается стандартным образом, нафига замарачиваться через title, не очень понятно 3. Послать из той же формы можно. Действительно есть проблема с навигацией. Но "если долго мучаться, что нибудь получится" ( C ). По крайне мере я поборол и ушло в продуктив. 4. Через keydown-keyup это, извините, полное извращение. Почему просто через EM_SET_TEXT /вроде так/ для текстовых item'ов не работать? Если нужно нажать на кнопку, все вообще проще. 5. Насчет межпроцессорного взаимодействия, делал, работало. Проблем вообще не было: 5.1. Рисовал прогресс бар. В Forms 6i client-server есть специальный тип User Item. Если его использоваться, можно взять его handle окна и "делай с ним, что хош". Я в нем просто делал свое child окно через WinAPI и стандартным образом (при обработке WM_PAINT) отрисовывал прогресс бар. Собственно тяжелая обработка файлов (нарезания в JTIP граф. файлов с проф. камеры >500-1000 Mb) выполнялась параллельно запущенным EXE'шником. Другое дело, что межпроцессорное взаимодействие (получение %-ов обработки) делал толи через Named Pipe толи просто через стандартные потоки ввода-вывода. Хотя, можно было и через сообщения Windows. Но мне так было проще отлаживать EXE'шник без Forms. 5.2. Делал прием-отправку на сервер графических файлов. Был свой просмоторщик JTIP написанный в виде DLL на MFC запускался в параллельном потоке. Но когда ему нужно было подгрузить очередной файл из БД, приходилось отправлять call back в поток Forms'а с запросом на очередной кусок (что бы работать в сессии Forms'а), поток Forms'а получал файл из БД через PRO*C, отдавал кусок изображения в просмоторщик. Что являлось callback'ом в Forms, уже не помню. Возможно просто кнопка на форме висела и я ее нажимал. Возможно свое child окно в User Item'е. Может даже что-то другое. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 31.05.2015, 15:09 
 | 
|||
|---|---|---|---|
  
  | 
|||
Как получить позицию курсора в текстовом item  | 
|||
| 
 #18+ 
  
    
  Мой мат. В конце приведена работающая последовательность в реальном коде. http://www.sql.ru/forum/179355/forms-client-server-kak-proverit-chto-item-poteryal-fokus?hl=sendmessage Если я правильно понял, данный свой топик, то: Не получилось через ORA_FFI объявить ф-цию SendMessage для вариантов EM_SETSEL и EM_GETSEL - печалька для топик стартера. Если нужно и получать и устанавливать позицию курсора - возможно нужно брать C и делать внешнею библиотеку. Так же паралелльно нашел еще одну тему: http://www.sql.ru/forum/777861/vopros-po-cut-region?hl=sendmessage Похоже, и на однобайтных кодировках в Keep Cursor Position есть проблемы. Но, в случае, если к проекту разрешено цеплять DLL'ки, задача 100% решается. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 04.06.2015, 13:20 
 | 
|||
|---|---|---|---|
  
  | 
|||
Как получить позицию курсора в текстовом item  | 
|||
| 
 #18+ 
  
    
  SergeyAKa Поборол? или не сильно нужно ))) ? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
| 
 04.06.2015, 14:01 
 | 
|||
|---|---|---|---|
  
  | 
|||
Как получить позицию курсора в текстовом item  | 
|||
| 
 #18+ 
  
    
  Leonid KudryavtsevSergeyAKa Поборол? или не сильно нужно ))) ? Нет, пошли другим путем... Написали на дельфях аналог формы и дергаем хостом из меню. Там с позиционированием курсора в строке проблем нет. Да еще кучу всяких прибамбасов , так горячо любимых пользователями, довеском получили. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 
  
  
   | 
  | 

start [/forum/topic.php?fid=51&tablet=1&tid=1878058]:  | 
    0ms | 
get settings:  | 
    9ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    4ms | 
check topic access:  | 
    4ms | 
track hit:  | 
    85ms | 
get topic data:  | 
    13ms | 
get forum data:  | 
    3ms | 
get page messages:  | 
    47ms | 
get tp. blocked users:  | 
    1ms | 
| others: | 10ms | 
| total: | 188ms | 

    | 0 / 0 | 

    Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
    
    
    «На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
    
    
    ... ля, ля, ля ...