powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как wm_char в в datawindow
19 сообщений из 19, страница 1 из 1
Как wm_char в в datawindow
    #32696103
NewOne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!

Проблема следующая - есть datawindow где ни одно из полей не принимает фокус ввода (taborder = 0), а в pbm_dwnkey производятся некоторые действия, типа if keyflag = 2 and key = KeyA! then of_selectall() .

При этом, мне не совсем понятно как отреагировать на нажатие клавиши, приведшее к "вводу", скажем, буквы 'ы'?

Замапил wm_keyup и wm_keydown. Смотрю на message.wordparm по совету Филиппа. Он принимает одинаковое значение при нажатии ':' и 'ж' (virtual key code ?). Замапить pbm_char что-то не получилось.

Буду благодарен за каждый дельный совет.
Версия билдера - 10.4500
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32696122
NewOne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
subj следует читать:
как в datawindow эмулировать wm_key
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32696319
NewOne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ни за что не поверю, что никто подобного не преодолевал! Если это FAQ или RTFM, то так и скажите, желательно с direction sign.

На самом деле нужна навигация по нередактируемому dw. Нажали 'Ж' - спозиционировались на 'Жмеринка'. Отвечаю на вопрос: "А что вы хотели на самом деле". ;-))
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32696432
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо просто подумать :-)

1) wm_keydown не нужен вообще
2) Вот мой скрипт в подобном случае:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
 /*------------------------------------------------------------------------------
 Object:	dw_domain_select
 Event   :			ue_Keyup (pbm_keyup)
 Parameters:      keycode key
                  unsignedlong keyflags
 Returns:         long

 Copyright © 1999 BSR - Philip Salgannik
 Date Created: 03/22/99

 Description:		Key Search: Scrolls to row based on key pressed by searching the column
						Searches for following key presses (A-Z, 0-9)

--------------------------------------------------------------------------------
 Modifications:
 Date            Author              Comments


------------------------------------------------------------------------------*/ 

long ll_row
integer li_key, li_temp, li_pos
string ls_column, ls_temp
boolean lb_same


// Get ASCII Value of Key Pressed
li_key = Message.WordParm


// Make sure letter is A-Z, a-z,  0 - 9 
IF ((li_key >  64 ) AND (li_key <  91 )) OR ((li_key >  47 ) AND (li_key <  58 )) THEN 

		
	// If user already hit this key 
	// move to next row with same letter
	lb_same = (li_key = ii_last_key)
	IF lb_same THEN
		ll_row=this.GetRow() +  1  
	ELSE 
		ll_row= 1  
	END IF 
	
	ls_temp="ASC(UPPER(LEFT(list,1)))= " + String(li_key)
	ll_row = this.Find(ls_temp, ll_row, this.RowCount())
	
	IF ll_row >  0  THEN 
		this.ScrollToRow(ll_row)
		this.SetRow(ll_row)
	ELSE
		IF lb_same THEN //cycle thru entries starting with the key user pressed
			ll_row = this.Find(ls_temp,  1 , this.RowCount())
			IF ll_row >  0  THEN 
				this.ScrollToRow(ll_row)
				this.SetRow(ll_row)
			END IF
		END IF
	END IF
	
	ii_last_key = li_key

END IF

list - название колонки в которой поиск
ii_last_key (instance variable) - ASCII Value последней нажатой клавиши (после ретрива datawindow он приравнивается к ASCII Value первой буквы колонки list в первом ряду)

Это было с PFC, поэтому rowselection кода здесь нет...
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32696510
NewOne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ФилиппНадо просто подумать :-)

1) wm_keydown не нужен вообще

Про pbm_keydown это понятно, и было упомянуто в смысле "пробовал и то и это".

Насчёт "подумать"- не совсем понятно. Вопрос был не в том что делать с символом после его получения, а в том, как его правильно получить. Ответа не вижу. Как я уже говорил, pbm_keyup->message.wordparm не меняется при переключении imput language. Он одинаков для S и Ы, например (на русской клавиатуре). Если wm_keydown = pbm_keycode, то это virtual key code. Может надо применить MapVirtualKey?
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32696558
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторМожет надо применить MapVirtualKey?
Хрен его знает, т-рищ начальник, я только с английским языком работаю :-)
Но судя по всему, про Message.WordParm и ASC можно забыть ...
Может вообще GetKeyNameText пробовать? Тогда Message.LongParm пригодится...
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32696566
NewOne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Шутить изволите, батоно Филипп?
MSDNGetKeyNameText Function

--------------------------------------------------------------------------------

The GetKeyNameText function retrieves a string that represents the name of a key.

Syntax

int GetKeyNameText( LONG lParam,
LPTSTR lpString,
int nSize
);
Parameters

lParam
[in] Specifies the second parameter of the keyboard message (such as WM_KEYDOWN) to be processed. The function interprets the following bit positions in the lParam.
16—23
Scan code.
24
Extended-key flag. Distinguishes some keys on an enhanced keyboard.
25
"Don't care" bit. The application calling this function sets this bit to indicate that the function should not distinguish between left and right CTRL and SHIFT keys, for example.
lpString
[out] Pointer to a buffer that will receive the key name.
nSize
[in] Specifies the maximum length, in TCHAR, of the key name, including the terminating null character. (This parameter should be equal to the size of the buffer pointed to by the lpString parameter.)
Return Value

If the function succeeds, a null-terminated string is copied into the specified buffer, and the return value is the length of the string, in TCHAR, not counting the terminating null character.

If the function fails, the return value is zero. To get extended error information, call GetLastError.




Remarks

The format of the key-name string depends on the current keyboard layout. The keyboard driver maintains a list of names in the form of character strings for keys with names longer than a single character. The key name is translated according to the layout of the currently installed keyboard, thus the function may give different results for different input locales. The name of a character key is the character itself. The names of dead keys are spelled out in full.

Windows 95/98/Me: GetKeyNameTextW is supported by the Microsoft Layer for Unicode. To use this, you must add certain files to your application, as outlined in Microsoft Layer for Unicode on Windows 95/98/Me Systems.
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32696605
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никаких шуток

The format of the key-name string depends on the current keyboard layout. The keyboard driver maintains a list of names in the form of character strings for keys with names longer than a single character. The key name is translated according to the layout of the currently installed keyboard, thus the function may give different results for different input locales . The name of a c-h-a-r-a-c-t-e-r key is the c-h-a-r-a-c-t-e-r ITSELF .
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32697247
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На моем сайте (о котором все уже давно знают :) ) lokshinmark.narod.ru есть библиотека VELM zip. http://lokshinmark.narod.ru/files/velm.zip
В ней есть User Object uo_dw_select_list. Посмотрите как там это обрабатываетсям.

PS. Что-то я с прошым постом натворил :)
To ASCRUS: можно его и удалить...
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32697368
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркPS. Что-то я с прошым постом натворил :)
To ASCRUS: можно его и удалить...
Хоть я и не ASCRUS, но ... Удалено, в общем.
---
С уважением, IKAR

ikarhomecenter@narod.ru
IkarHomeCenter
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32697481
NewOne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Локшин МаркНа моем сайте (о котором все уже давно знают :) ) lokshinmark.narod.ru есть библиотека VELM zip. http://lokshinmark.narod.ru/files/velm.zip
В ней есть User Object uo_dw_select_list. Посмотрите как там это обрабатываетсям.

PS. Что-то я с прошым постом натворил :)
To ASCRUS: можно его и удалить...

Исходя из На моем сайте (о котором все уже давно знают :) ) всё-таки RTFM ... :-))
BTW, а что за сообщение 1349 (0x545) WM_USER+0x145 вы обрабатываете other?
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32698401
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А может пойти типа "умный в гору не пойдёт" и засандалить SLE?
/topic/51539&hl=

http://www.justpbinfo.com/pbtips/dwscrollsearch.asp

http://www.justpbinfo.com/pbtips/dwscrollsearch2.asp
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32698510
NewOne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Muchas gracias, estimado Don Филипп!
Про гору вы абсолютно правы.
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32699426
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewOneПро гору вы абсолютно правы.
Ну не знаю, не знаю. Первоначально у меня поиск был примерно как в database painter'е при выборе таблиц устроен, но пользователи путались, и пришлось поиск переписывать. Так был добавлен вывод того, что печатается. Потом еще добавились кнопки для задания направления поиска. Мне кажется, что у меня, как минимум, не хуже. Но, наверное, кому как нравится.
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32700046
NewOne
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Марк
Про гору, это в более общем сысле Марк, не принимайте на свой счёт.

BTW, Вы ничего не ответили про сообщение, которое обрабатываете в other. Его десятичный номер 1349.
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32700102
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewOneBTW, Вы ничего не ответили про сообщение, которое обрабатываете в other. Его десятичный номер 1349.
Нашел экспериментально :)
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32700571
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня например, даже не SLE, а datawindow userobject сделано, оно совмещает фильтрацию с поиском и просто шлепается на окна/таб страницы, где надо, выглядит так
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32700580
Фотография Филипп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделано с datawindow в основном ради "подсказки" а-ля Windows - "Type to search by description...".
Dataobject имеет колонку description, её intial value - "Type to search by description...", и ещё 2 (или более) колонки - ="from_date", ="to_date"...
Instance variables:
Код: plaintext
1.
2.
3.
4.
CONSTANT string FROM_DATE ="from_date"
CONSTANT string TO_DATE ="to_date"
CONSTANT string SEARCH_AS_TYPE ="description"
protected:
boolean ib_description_modified
constructor:
Код: plaintext
InsertRow( 0 )
editchanged:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
 /*------------------------------------------------------------------------------

 Event   :			public u_cm_hierarchies_filter.Editchanged

 Returns:         Long

 Parameters:      value Long row
                  value DWObject dwo
                  value String data

 Copyright © 2002 DTI - Philip Salgannik

 Date Created: 7/2/2002

 Description:	Send UPPERED data entered to the parent
 
--------------------------------------------------------------------------------
 Modifications:
 Date            Author              Comments
------------------------------------------------------------------------------*/ 
string ls_data

IF row <  1  THEN RETURN

IF dwo.name = SEARCH_AS_TYPE THEN
	ls_data = Upper(Trim(data))
	IF IsNull(ls_data) THEN RETURN
	IF Len(ls_data) <  1  THEN RETURN
	parent.event dynamic ue_find_typed(ls_data)
END IF
itemchanged:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
 /*------------------------------------------------------------------------------

 Event   :			public u_cm_hierarchies_filter.Itemchanged

 Returns:         Long

 Parameters:      value Long row
                  value DWObject dwo
                  value String data

 Copyright © 2002 DTI - Philip Salgannik

 Date Created: 7/2/2002

 Description:	
 
--------------------------------------------------------------------------------
 Modifications:
 Date            Author              Comments
------------------------------------------------------------------------------*/ 
IF row <  1  THEN RETURN

IF dwo.name = SEARCH_AS_TYPE THEN RETURN //no filtering on this column

parent.event dynamic post ue_filter()
itemfocuschanged:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
 /*------------------------------------------------------------------------------

 Event   :			public u_cm_hierarchies_filter.Itemfocuschanged

 Returns:         Long

 Parameters:      value Long row
                  value DWObject dwo

 Copyright © 2002 DTI - Philip Salgannik

 Date Created: 7/3/2002

 Description:	remove the hint and change the color to black
 
--------------------------------------------------------------------------------
 Modifications:
 Date            Author              Comments
------------------------------------------------------------------------------*/ 

IF row <  1  THEN RETURN
IF dwo.name <> SEARCH_AS_TYPE THEN RETURN

IF NOT ib_description_modified THEN
	ib_description_modified  = NOT ib_description_modified 
	SetRedraw(FALSE)
	SetItem( row, SEARCH_AS_TYPE, '')
	SetItemStatus( row, SEARCH_AS_TYPE, Primary!, NotModified!)
	modify( SEARCH_AS_TYPE+ ".color=" + Describe(TO_DATE + ".color"))
	SetRedraw(TRUE)
END IF
Overwritten function:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
 /*------------------------------------------------------------------------------

 Function:			public u_cm_hierarchies_filter.Reset

 Returns:         Integer

 Parameters:      

 Copyright © 2002 DTI - Philip Salgannik

 Date Created: 7/2/2002

 Description:	
 
--------------------------------------------------------------------------------
 Modifications:
 Date            Author              Comments
------------------------------------------------------------------------------*/ 
integer li_rtn
SetRedraw(FALSE)
li_rtn = super::reset()
ib_description_modified = FALSE
modify( SEARCH_AS_TYPE+ ".color=" + "134217747")
InsertRow( 0 )
SetRedraw(TRUE)
RETURN li_rtn
...
Рейтинг: 0 / 0
Как wm_char в в datawindow
    #32700623
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня этот поиск используется только для DataWindow специального типа - для множественного выбора из списка. Весь функционал сосредоточен внутри одного объекта, шлепнул его на форму, связал между собой (при необходимости зависимого выбора) и прописал скрипт на Retrieve. Сделано, так, чтобы было покомпактнее.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Как wm_char в в datawindow
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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