Hola amigos:
En el siguiente ejemplo se crea un di谩logo que contiene un radio y dos botones: uno para seleccionar y el otro para cancelar la tarea sin que se procese nada posterior al di谩logo. Es decir, lo que sigue despu茅s del di谩logo s贸lo debe procesarse si se pulsa sobre el bot贸n "Select".
La variable lSelecc se inicializa como .F. y solamente cambiar谩 a .T, si se pulsa el bot贸n "Select".
En otras palabras, si se cierra el di谩logo con cualquiera de las cuatro opciones difentes a "Select" y que son: 1.- Tecla ESC, 2.- pulsar sobre el bot贸n "Cancel", 3.- dar click sobre la "X" en la esquina superior derecha del di谩logo, y 4.- Pulsar las teclas ALT+F4 para cerrar el di谩logo, la variable "lSelecc" deber铆a permanecer en .F.
Esta condici贸n se cumple en los tres primeros casos, pero falla en el 4 (ALT+F4) que pone la variable en .T. como si se hubiese pulsado sobre el bot贸n "Select".
Esto pasa 煤nicamente con la clase TBTNBMP . Con las dem谩s clases para manejo de botones todo va bien.
驴 C贸mo puedo solucionarlo o qu茅 debo corregir en la clase ? Me urge resolverlo pues el proceso en el que se involucra este escenario es altamente sensible para la integridad de los datos del cliente.
Gracias anticipadas por su extraordinaria ayuda
En el siguiente ejemplo se crea un di谩logo que contiene un radio y dos botones: uno para seleccionar y el otro para cancelar la tarea sin que se procese nada posterior al di谩logo. Es decir, lo que sigue despu茅s del di谩logo s贸lo debe procesarse si se pulsa sobre el bot贸n "Select".
La variable lSelecc se inicializa como .F. y solamente cambiar谩 a .T, si se pulsa el bot贸n "Select".
En otras palabras, si se cierra el di谩logo con cualquiera de las cuatro opciones difentes a "Select" y que son: 1.- Tecla ESC, 2.- pulsar sobre el bot贸n "Cancel", 3.- dar click sobre la "X" en la esquina superior derecha del di谩logo, y 4.- Pulsar las teclas ALT+F4 para cerrar el di谩logo, la variable "lSelecc" deber铆a permanecer en .F.
Esta condici贸n se cumple en los tres primeros casos, pero falla en el 4 (ALT+F4) que pone la variable en .T. como si se hubiese pulsado sobre el bot贸n "Select".
Esto pasa 煤nicamente con la clase TBTNBMP . Con las dem谩s clases para manejo de botones todo va bien.
驴 C贸mo puedo solucionarlo o qu茅 debo corregir en la clase ? Me urge resolverlo pues el proceso en el que se involucra este escenario es altamente sensible para la integridad de los datos del cliente.
Gracias anticipadas por su extraordinaria ayuda
#include "FiveWin.ch"
Function Main()
聽 LOCAL oDlg, oBtn1, oBtn2, oRad, nOpr:=1
聽 LOCAL lSelecc:=.F. , lNoEsc := .T.
聽 LOCAL aItems := {"Opcion 1","Opcion 2","Opcion 3","Opcion 4","Opcion 5"}
聽 DEFINE DIALOG oDlg FROM 0,0 TO 176,245 PIXEL TITLE "Documentos a Reversar" TRANSPARENT
聽 聽 @ 05, 30 SAY "Seleccione tipo documento:" OF oDlg PIXEL SIZE 100,08
聽 聽 oRad := TRadMenu():New( 15,25,aItems,{|u|If(PCount()==0,nOpR,nOpR:=u)}, oDlg,,,,,,.F.,, 70 , 09,,.F.,.F.,.T.)
聽 聽 @ 68,08 BTNBMP oBtn1 PROMPT "&Select" ACTION ( lNoEsc := .T. , lSelecc:=.T. , oDlg:End()) OF oDlg SIZE 48,14 PIXEL;
聽 聽 聽 聽 聽 聽 LEFT NOBORDER
聽 聽 @ 68,67 BTNBMP oBtn1 PROMPT "&Cancel" ACTION ( lNoEsc := .T. , lSelecc:=.F. , oDlg:End()) OF oDlg SIZE 48,14 PIXEL;
聽 聽 聽 聽 聽 聽 LEFT NOBORDER
聽 ACTIVATE DIALOG oDlg CENTERED VALID lNoEsc
聽 if lSelecc
聽 聽 聽MsgInfo(nOpr) 聽 聽聽// <=== *** ESTO DEBE PROCESARLO SI, Y S脫LO SI, SE PULSA SOBRE EL BOT脫N "Select". *** //
聽 endif
Return(NIL)Saludos,
Carlos Gallego
*** FWH-25.12, xHarbour 1.3.1 Build 20241008, Borland C++7.70, PellesC, ADS 11.1***