powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Узнать положение курсора в текстовом поле dw
7 сообщений из 7, страница 1 из 1
Узнать положение курсора в текстовом поле dw
    #39553003
Apprehension
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

В обработчике события editchange текстового поля dw я помимо прочего вызываю dw.AcceptText(), после которой курсор в текущей строке перемещается в начало поля. Мне нужно сохранить его позицию, но чтобы восстановить ее с помощью SelectText, нужно знать, в какой позиции он был изначально. Есть ли возможность получить такую информацию?
...
Рейтинг: 0 / 0
Узнать положение курсора в текстовом поле dw
    #39553012
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
14.11.2017 17:59, Apprehension пишет:

> В обработчике события editchange текстового поля dw я помимо прочего
> вызываю dw.AcceptText()

---------------------------------------------------------------
EditChanged event (DataWindows)

Occurs for each keystroke the user types in an edit control in the
DataWindow.
---------------------------------------------------------------

Зачем здесь вызывать AcceptText()?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Узнать положение курсора в текстовом поле dw
    #39553032
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, но так делать нельзя
Зачем вы так делаете? Как-то очень странно
Какую проблему вы пытаетесь решить?
...
Рейтинг: 0 / 0
Узнать положение курсора в текстовом поле dw
    #39553140
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Position()
...
Рейтинг: 0 / 0
Узнать положение курсора в текстовом поле dw
    #39553527
Apprehension
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробую описать ситуацию для получения стратегических советов :)

Задача: есть список телефонов, котрый можно править вручную.
1) Требуется автоматически расставлять дефисы и скобки после каждого нажатия клавиши, в зависимости от того, к паттерну какой страны принадлежит набираемый в данный момент номер.
2) Кроме того требуется тоже после каждого нажатия клавиши выкрашивать фоновый цвет элемента в зависимости от того является ли набираемый номер частью какого-то паттерна, попадает в него полностью, не попадает ни в какой паттерн и т.д.
DW работает с источником External.

Поскольку действия следует предпринимать после каждого нажатия, мне приходится писать обработчик события editChanged. Автоматическое добавление скобочек-дефисиков совершаю через функцию SetText, после чего необходимо правильно позиционировать курсор (поскольку длина новой строки может быть изменена). AcceptText() здесь не понадобился бы.
Что касается второго задания, то, насколько я понимаю, в случае, если приходится индивидуально раскрашивать каждую ячейку, а не целый столбец целиком, следует воспользоваться возможностью задать цвет через формулу в пэйнтере объекта dw. Тем не менее, формула у меня сложная, среди встроенных подходящих нет. Поэтому я добавил в объект dw новый столбец и завел расчет цвета фона уже через его содержимое, а содержимое я рассчитываю через собственную пользовательскую формулу в обработчике editChanged. Однако, судя по всему, пока это значение не пропишется в буфер, цвет ячейки с телефоном не изменится. Поэтому мне пришлось использовать AcceptText().
(ПРИМЕЧАНИЕ: Выяснил, что AcceptText() положение курсора не меняет, а вот SetText() – меняет).

Самому все это кажется не самым оптимальным, что посоветуете? di7 - спасибо!
...
Рейтинг: 0 / 0
Узнать положение курсора в текстовом поле dw
    #39553722
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. По поводу курсора, может так поможет:
Код: sql
1.
2.
3.
SUBROUTINE keybd_event( int bVk, int bScan, int dwFlags, int dwExtraInfo) LIBRARY "user32.dll"
// создать пользовательское событие на pbm_dwnchanging
keybd_event( 35, 1, 0, 0) // переводит курсор в конец строки



2. А по поводу скобок и дефисов, то сделайте маску на это поле ввода.

3. А по поводу большой функции и нет в художнике, так там можно на прямую указывать и пользовательскую функцию, если не ошибаюсь.
...
Рейтинг: 0 / 0
Узнать положение курсора в текстовом поле dw
    #39553885
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для еще непринятого текста в буфере есть аргумент события - data
Достаточно сделать Len(data), а потом поменять его через SetText
На форуме куча примеров как сделать автоподстановку, можно не писать велосипед.
Стандартно - предыдущее значение сохраняется в instance-переменной.
Но люди правильно советуют - может применить маску ввода?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Узнать положение курсора в текстовом поле dw
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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