FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Cerrar Dialogo al perder el foco
Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Cerrar Dialogo al perder el foco
Posted: Wed Jan 26, 2011 03:24 AM
Holas,

el siguiente codigo funciona
Code (fw): Select all Collapse
#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
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM
Re: Cerrar Dialogo al perder el foco
Posted: Wed Jan 26, 2011 03: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
HIX -> https://github.com/carles9000/hix
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Cerrar Dialogo al perder el foco
Posted: Wed Jan 26, 2011 03:55 PM

Saludos

probado en la 10.12 y funciona bien

Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: Cerrar Dialogo al perder el foco
Posted: Wed Jan 26, 2011 04: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

Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: Cerrar Dialogo al perder el foco
Posted: Wed Jan 26, 2011 04:57 PM

Marcelo

Prepara un ejemplo que podamos reproducir el error

Gracias

Posts: 1088
Joined: Fri Oct 07, 2005 03:33 PM
Re: Cerrar Dialogo al perder el foco
Posted: Wed Jan 26, 2011 05:07 PM
Daniel,

no estoy seguro que sea un error, por ejemplo, lo siguiente no cierra el dialogo
Code (fw): Select all Collapse
#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 (fw): Select all Collapse
#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
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Cerrar Dialogo al perder el foco
Posted: Thu Jan 27, 2011 01: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

Posts: 139
Joined: Fri Nov 25, 2005 04:38 PM
Re: Cerrar Dialogo al perder el foco
Posted: Fri Feb 04, 2011 10:07 PM

tente utilizar assim:

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

Ronaldo

Ronaldo Minacapelli
Sistemas, Hospedagem e Criação de WebSites
http://www.bazevani.com.br
Posts: 498
Joined: Thu May 10, 2007 08:30 PM
Re: Cerrar Dialogo al perder el foco
Posted: Mon Feb 07, 2011 07: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...

FWH 2007 - xHarbour - BCC55
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: Cerrar Dialogo al perder el foco
Posted: Tue Feb 08, 2011 02:25 PM
Aqui te pongo un ejemplo que funciona

Code (fw): Select all Collapse
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
Posts: 174
Joined: Sat Feb 23, 2013 10:04 AM
Re: Cerrar Dialogo al perder el foco
Posted: Fri Apr 26, 2013 08:02 PM

Continue the discussion