Power Builder - COMO HABILITAR EL SENSITIVE KEY EN POWERBUILDER

 
Vista:
Imágen de perfil de Ulices

COMO HABILITAR EL SENSITIVE KEY EN POWERBUILDER

Publicado por Ulices (5 intervenciones) el 25/08/2015 00:56:56
Estoy trabajando en PW10.5, espeficamente en un objeto de dropdownlistbox con un listado de medicos, los medicos son personas de la tercera edad y les cuesta escribir rapido, y cuando utilizan la busqueda del listado presionan por ejemplo: RAMOS y cuando van por la letra M se salta a los listados que comienzan con la letra M.

SIEMPRE GRACIAS A LA COMUNIDAD ESTOY INICIANDO EN EL FORO.

ULICES PEREZ
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Manfred Maringer
Val: 11
Ha aumentado 1 puesto en Power Builder (en relación al último mes)
Gráfica de Power Builder

COMO HABILITAR EL SENSITIVE KEY EN POWERBUILDER

Publicado por Manfred Maringer (23 intervenciones) el 25/08/2015 21:20:39
Amigo Ulices
cómo andás?

Te cuento una manera de hacerlo:
Se busca coincidencia en todo el nombre, por ejemplo si el usuario escribe "MA" se mostrarán:

MArcela
TaMAra
MArtìn
......
etc

Esto se puede poner en el evento "modified" del single line edit, o en un botón.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//----------------------------------------
string is_filter //variable para guardar el texto del filtro
INTEGER i_rows,I_POS   // cantidad de filas recuperadas en el retrieve, posición del cursor que encuentra coincidencia
// sle_find es un objeto single line edit
 
IF TRIM(sle_find.TEXT)='' THEN
	messagebox('ATENCIÓN','INGRESE UN NOMBRE O PARTE DE UN NOMBRE')
    RETURN
END IF
 
is_filter='NOMBRE LIKE "%'+TRIM(sle_find.TEXT)+'%"'    //NOMBRE es un campo del datawindow
i_rows=dw_1.retrieve()
if i_rows>0 then
   I_POS=dw_1.SETFILTER(is_filter)
	DW_1.FILTER()
 
else
  messagebox('ATENCIÓN','NO SE ENCUENTRA EL NOMBRE INGRESADO. VERIFIQUE')
  RETURN
end if
//--------------------------------

Cualquier cosa, escribime al mail.
Abrazo desde Argentina!

Manfred Maringer
Analista de Sistemas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Manfred Maringer
Val: 11
Ha aumentado 1 puesto en Power Builder (en relación al último mes)
Gráfica de Power Builder

COMO HABILITAR EL SENSITIVE KEY EN POWERBUILDER

Publicado por Manfred Maringer (23 intervenciones) el 25/08/2015 21:54:31
Yo de nuevo amigo!
Estuve pensando y en realidad te conviene crear una datawindow con una consulta que te genere la lista igual a la del drowdownlistbox, es decir, el listado de mèdicos, y un single line edit donde le agregàs el evento Key_pressed con el id_event; pbm_keydown y le agregàs el siguiente script: (analiza cada tecla presionada)

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
// Key_Pressed Script for sle_find
 
// key pressed in datawindow
// capture up and down arrows to move the selection up and down
 
int li_movement
long ll_row
 
If KeyDown (keyUparrow!) then
	li_movement = -1
End If
 
If Key=keyBack! then
	li_movement = 0
End If
If KeyDown (keyDownarrow!) then
	li_movement = 1
End If
 
If li_movement <> 0 Then
	dw_1.SetRedraw(False)
	ll_row = dw_1.GetSelectedRow(0)
	ll_row = ll_row + li_movement
	If ll_row < 1 or ll_row > dw_1.RowCount( ) Then
		Beep(1)
		Return
	End If
	dw_1.selectrow(0,False)
	dw_1.SelectRow(ll_row , True)
	dw_1.ScrollToRow (ll_row)
	sle_find.text = dw_1.GetItemString(ll_row , 1)
	is_filter = sle_find.text
	il_selectedrow = ll_row
	dw_1.SetRedraw(True)
	sle_find.SelectText(len(sle_find.text) + 1,0)
	message.processed = true
	Return
End If
 
 
string	ls_character
long	ll_found_row
int		li_num_chars
 
ls_character = Char(message.wordparm)
 
//filter out non alpha characters
//CR149983
If ls_character <> " " Then
	If (Lower(ls_character) < "a" or Lower(ls_character) > "z") and  ls_character <> Char(8) Then
		message.processed = true
		Return
	End If
End If
 
// Backspace 
If message.wordparm = 8   then
//	li_num_chars = Len(is_filter)
   li_num_chars = Len(sle_find.text)
	If li_num_chars > 0 and Len(is_filter) > li_num_chars then
		is_filter = Left(is_filter, li_num_chars -1)
	end if
else
	is_filter = is_filter + ls_character
end if
 
 
 
// Do case-insensitive search
If Len(is_filter) > 0 Then
//	ll_found_row = dw_1.Find("Lower(#12) >=~"" + Lower(is_filter) + "~"",1, 99999)
ll_found_row = dw_1.Find("Lower(#12) like '%" + Lower(is_filter) + "%'",1, 99999)
	If ll_found_row > 0 then
		dw_1.SetRedraw(FALSE)
		dw_1.SelectRow(0, FALSE)
		dw_1.ScrollToRow(ll_found_row)
		dw_1.SelectRow(ll_found_row, TRUE)
		dw_1.SetRedraw(TRUE)
		pb_repetir.enabled=true
// is_filterer function did not find any matching row
	Else
		dw_1.ScrollToRow(1)
		dw_1.SetRedraw(FALSE)
		dw_1.SelectRow(0, FALSE)
		dw_1.SetRedraw(TRUE)
      Beep(1)
		li_num_chars = Len(is_filter)
		If li_num_chars > 0 Then
			is_filter = Left(is_filter, li_num_chars -1)
//			sle_find.text = Left(sle_find.text, li_num_chars -1)
		end if
// Throw away last character
		message.processed = true
		pb_repetir.enabled=false
	End If
// is_filterer length is 0, so unhighlight former selected row
Else
	dw_1.SelectRow(0, FALSE)
End If
 
// Remember number of highlighted row
il_selectedrow = ll_found_row
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ulices

COMO HABILITAR EL SENSITIVE KEY EN POWERBUILDER

Publicado por Ulices (5 intervenciones) el 10/09/2015 19:28:45
GRACIAS Manfred Maringer ESTARE HACIENDO LAS PRUEBAS Y DE ANTEMANO MUCHAS GRACIAS POR LA AYUDA TE LO AGRADECE LA COMUNIDAD GUATEMALTECA SALUDOS A LA ARGENTINA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Ulices

COMO HABILITAR EL SENSITIVE KEY EN POWERBUILDER

Publicado por Ulices (5 intervenciones) el 10/09/2015 21:19:25
COMPAÑERO ESTUVE REALIZANDO PRUEBAS PERO NO ME FUNCIONA DENTRO DE LOS EVENTOS id_event no me aparece el pbm_keydown y estoy agregandolo en pbm_dwnkey estoy en powerbuilder 10.5


gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar