Cerrar Dialogo al perder el foco

Cerrar Dialogo al perder el foco

Postby Marcelo Via Giglio » Wed Jan 26, 2011 3:24 am

Holas,

el siguiente codigo funciona
Code: Select all  Expand view

#include "FiveWin.ch"

function Main()

   local oDlg

   DEFINE DIALOG oDlg FROM 5, 5 TO 20, 40

   oDlg:bLostFocus = { || oDlg:end() }

   ACTIVATE DIALOG oDlg CENTERED

return nil
 


pero cuando el dialogo es definido desde recursos no, esto funcionaba en versiones previas a la 9.06 si no me equivoco y dejo de funcionar con las versiones nuevas.

Alguna idea?

saludos

Marcelo
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Cerrar Dialogo al perder el foco

Postby Carles » Wed Jan 26, 2011 3:25 pm

M,

He testeado en 10.8 y funciona OK
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1090
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Cerrar Dialogo al perder el foco

Postby Daniel Garcia-Gil » Wed Jan 26, 2011 3:55 pm

Saludos

probado en la 10.12 y funciona bien
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Cerrar Dialogo al perder el foco

Postby Marcelo Via Giglio » Wed Jan 26, 2011 4:52 pm

Holas,

gracias por responder, tienen razon, funciona, mi problema es que hice un mal ejemplo, el problema es cuando hay algun control mas en el dialog por ejemplo un botton.

Recuerdo que lo utilice para hacer un calendario emergente y que si uno hacia click fuera del dialogo este se cerraba, esto dejo de funcionar, pero veo que la solucion es que el dialogo se cierre cuando se pierda el foco del control definido en el dialogo y no asi del dialogo en si, esto creo que funcionara.

Gracias y saludos

Marcelo
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Cerrar Dialogo al perder el foco

Postby Daniel Garcia-Gil » Wed Jan 26, 2011 4:57 pm

Marcelo

Prepara un ejemplo que podamos reproducir el error

Gracias
User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

Re: Cerrar Dialogo al perder el foco

Postby Marcelo Via Giglio » Wed Jan 26, 2011 5:07 pm

Daniel,

no estoy seguro que sea un error, por ejemplo, lo siguiente no cierra el dialogo
Code: Select all  Expand view
#include "FiveWin.ch"

function Main()

   local oDlg, b

   DEFINE DIALOG oDlg FROM 5, 5 TO 20, 40

   @ 2,2 BUTTON b PROMPT 'Close' OF oDlg ACTION oDlg:end()

   oDlg:bLostFocus = { || oDlg:end() }

   ACTIVATE DIALOG oDlg CENTERED

return nil
 
 


pero lo siguiente si
Code: Select all  Expand view

#include "FiveWin.ch"

function Main()

   local oDlg, b

   DEFINE DIALOG oDlg FROM 5, 5 TO 20, 40

   @ 2,2 BUTTON b PROMPT 'Close' OF oDlg ACTION oDlg:end()

   b:bLostFocus = { || oDlg:end() }

   ACTIVATE DIALOG oDlg CENTERED ON INIT b:setFocus()

return nil
 
 


Antes funciono, no recuerdo la version pero era 7... u 8... pero creo que de esta manera me sirve, no se si es lo esperado, Uds. lo diran

Muchas gracias por la atencion

saludos

Marcelo
Marcelo Via Giglio
 
Posts: 1050
Joined: Fri Oct 07, 2005 3:33 pm
Location: Cochabamba - Bolivia

Re: Cerrar Dialogo al perder el foco

Postby horacio » Thu Jan 27, 2011 1:33 pm

No sé si digo un disparate pero para poder cerrar el dialogo cuando pierde el foco, este debe ser NoWait, sin esta característica el dialogo nunca pierde el foco. Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Cerrar Dialogo al perder el foco

Postby ronaldo » Fri Feb 04, 2011 10:07 pm

tente utilizar assim:

odlg:bstart:={||oDlg:bLostFocus = { || oDlg:end() } }

Ronaldo
[b]Ronaldo Minacapelli[/b]
Sistemas, Hospedagem e Criação de WebSites
http://www.bazevani.com.br
User avatar
ronaldo
 
Posts: 139
Joined: Fri Nov 25, 2005 4:38 pm
Location: brasil

Re: Cerrar Dialogo al perder el foco

Postby antolin » Mon Feb 07, 2011 7:23 am

Horacio, si no me equivoco, el dialogo, si tiene controles, nunca toma el foco, las NOWAIT menos. Yo utilizo muchas de esas ventanitas y siempre la cierro cuando TODOS los controles dejan de tener foco. No encontré otra solución.

Un saludo
Peaaaaaso de foro...
antolin
 
Posts: 491
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Cerrar Dialogo al perder el foco

Postby horacio » Tue Feb 08, 2011 2:25 pm

Aqui te pongo un ejemplo que funciona

Code: Select all  Expand view

Define Dialog oDlg from 6, 18 To 180, 190 Of oVarGlobales : oWndMain Pixel Font oFonts1

   oDlg : nStyle    :=  nOr( WS_POPUP )
   oDlg : bRClicked := { || oDlg : End() }
   @ 2, 2 Group oGrupo To oDlg : nRight / 2 - 8, oDlg : nBottom / 2 - 8 Label "" Of oDlg Pixel

   @ 0, 0 ListBox oLbx Fields "" Size 85, 100 Pixel Of oDlg Font oFonts
   oLbx : SetArray( aPeriodos )
   With Object oLbx
      :bLine         := { | nAt | nAt := oLbx : nAt, { Alltrim( aPeriodos[ nAt ][ 1 ] ) } }
      :bFont         := { | nRow, nCol, nStyle | If( nStyle == 1, oFonts3 : hFont, If( nStyle == 3 .and. ( nCol == 2 .or. nCol == 3 .or. nCol == 4 .or. nCol == 5  .or. nCol == 6 .or. nCol == 7 ), oFonts3 : hFont, ) ) }
      :lDrawHeaders  := .f.
      :nHeaderHeight := 15
      :aHJustify     := { 2, 2,2,2,2 }
      :aJustify      := { 0 }
      :nClrFFore     := CLR_RED
      :nLineHeight   := 20
      :aColSizes     := { 100 }
      :lCellStyle    := .f.
      :nClrLine      := RGB( 235, 235, 235 )
      :bLDblClick    := { || ConmutaBase( oLbx, aPeriodos, oDlg )  }
      :bKeyDown      := { | nKey | If( nKey == VK_RETURN, ConmutaBase( oLbx, aPeriodos, oDlg ), )  }
      :nClrPane      := { || If( oLbx : nAt % 2 == 0, RGB( 245,245,245 ), RGB( 255,255,255 )) }
      :nLineStyle    := 5
      :nHeaderStyle  := 6                                                                                                                                                                             //If( nStyle == 3 .and. nCol == 3, CLR_BLACK, )
      :nFooterStyle  := 5
      :bTextColor    := { | nRow, nCol, nStyle | If( nStyle == 1, CLR_HEAD, ) }
      //:bBkColor       := { | nRow, nCol, nStyle | If( nStyle == 3 .and. nCol == 1, CLR_WHITE, ) }
   End

Activate Dialog oDlg On Init( oDlg : bLostFocus := { || oDlg : End() }, oDlg : Move( oVarGlobales : oWndMain : nBottom + ( oVarGlobales : oWndMain : oMsgBar : nTop - 4 - oVarGlobales : oWndMain : oMsgBar : nBottom ) - oDlg : nHeight, oVarGlobales : oWndMain : oMsgBar : nRight - ( oDlg : nWidth + 150 ) ), Centra( oDlg ), oLbx : Refresh(), oLbx : Paint() ) Valid( oFuente1 : End(), oFuente2 : End(), oFonts : End(), oFonts1 : End(), oFonts2 : End(), oFonts3 : End(), oVarGlobales : oWndMain : SetFocus(), .t. ) NoWait
 

Espero te sirva
Saludos
horacio
 
Posts: 1358
Joined: Wed Jun 21, 2006 12:39 am
Location: Capital Federal Argentina

Re: Cerrar Dialogo al perder el foco

Postby Antonio Mart. » Fri Apr 26, 2013 8:02 pm

Antonio Mart.
 
Posts: 174
Joined: Sat Feb 23, 2013 10:04 am


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 70 guests