Page 3 of 3

Re: Bug en 11.11 30/septiembre

PostPosted: Fri Dec 09, 2011 9:22 am
by fgondi
up

Re: Bug en 11.11 30/septiembre

PostPosted: Fri Dec 09, 2011 12:20 pm
by Antonio Linares
Fernando,

Respecto al 4. por favor cambia estas líneas en window.prg:

Code: Select all  Expand view
METHOD Destroy() CLASS TWindow

   if ( ::hWnd == nil .or. ::hWnd == 0 ) .and. ;
      ( ::nResult == nil .or. ( ValType( ::nResult ) == "N" .and. ::nResult == 0 ) )
      return nil
   endif

   ...
 

Re: Bug en 11.11 30/septiembre

PostPosted: Fri Dec 09, 2011 12:33 pm
by Antonio Linares
Para el 2. este cambio en dialog.prg:

Code: Select all  Expand view
METHOD KeyChar( nKey, nFlags ) CLASS TDialog

   if nKey == VK_ESCAPE
      if ::oWnd != nil .and. ( ::oWnd:IsKindOf( "TMDICHILD" ) .or. ;
         ::oWnd:IsKindOf( "TDIALOG" ) .or. ::oWnd:IsKindOf( "TMDIFRAME" ) )
         if SetDialogEsc()
            ::End()
         endif
      endif
      return nil     // este!
   endif

return Super:KeyChar( nKey, nFlags )
 

Re: Bug en 11.11 30/septiembre

PostPosted: Fri Dec 09, 2011 12:44 pm
by Antonio Linares
Fernando,

Para la longitud del contenido del GET al hacer paste, este código en TGet lo soluciona:

Code: Select all  Expand view
     case nMsg == WM_PASTE
           if GetFocus() == ::hWnd
              CallWindowProc( ::nOldProc, ::hWnd, WM_PASTE, 0, 0 )
              SetWindowText( ::hWnd, SubStr( GetWindowText( ::hWnd ), 1, Len( ::oGet:Original ) ) )  // Nuevo !!!
              ::oGet:Buffer = GetWindowText( ::hWnd )
              ::oGet:Pos = GetCaretPos()[ 2 ]
              ::oGet:Assign()
              if ::bChange != nil
                 Eval( ::bChange,,, Self )
              endif
           endif
           return 0
 

Re: Bug en 11.11 30/septiembre

PostPosted: Fri Dec 09, 2011 1:05 pm
by fgondi
Muchas gracias Antonio,

Estos cambios los puedo aplicar sobre los archivos que tengo de la versión 11.11 04/diciembre/2011.

Pero estos días me has enviado las librerías con correcciones.

Si aplico los cambios sobre los archivos que tengo pierdo las últimas correcciones.

Re: Bug en 11.11 30/septiembre

PostPosted: Fri Dec 09, 2011 1:10 pm
by Antonio Linares
Te envio las librerias :-)

Re: Bug en 11.11 30/septiembre

PostPosted: Fri Dec 09, 2011 1:23 pm
by fgondi
Antonio,

¿En las librerias que me acabas de enviar vienen incluidos los cambios que mencionas?

Es que sigo teniendo los mismos problemas.

Si no están incluidos como obtengo de la lib los prg.

Re: Bug en 11.11 30/septiembre

PostPosted: Fri Dec 09, 2011 3:25 pm
by Antonio Linares
Fernando,

Estas seguro de que estás usando las librerías que te he enviado ?

Aqui tu ejemplo está funcionando bien:
http://code.google.com/p/fivewin-contributions/downloads/detail?name=fgondi.exe&can=2&q=

Re: Bug en 11.11 30/septiembre

PostPosted: Fri Dec 09, 2011 3:39 pm
by fgondi
Antonio,

El post hacía referencia a las liberías que me has enviado a las 14:13
Con las librerias que me has enviado a las 15:47, funcionando correctamente los problemas.

Muchisimas gracias por tu tiempo y tu dedicación.
Este apoyo y ayuda creo que es muy dificil de encontrar.

Sólo queda el problema inicial:
1.- Dibujo de pantalla
Sigue apareciendo la pantalla de recurso antes de redefinirse.


Que desconozco el porque ahora se ve la pantalla inicial.
En las versiones anteriores (incluida la versión 11.11 30/noviembre/2011) no se ve ese diseño.
El tiempo de carga de la ventana es el mismo y ese segundo, segundo y medio que ahora está mostrando el diseño antes mostraba esto:
Image
Uploaded with ImageShack.us

Re: Bug en 11.11 30/septiembre

PostPosted: Fri Dec 09, 2011 6:01 pm
by fgondi
He creado un ejemplo con browse y forlder donde se puede apreciar la ventana en definición.
Es un ejemplo sencillo, por lo que se aprecia muy poco tiempo (tiempo que puede ser despreciable).
Pero los diseños que tengo son mas complejos y con mas información y se ve durante mas tiempo.

Si este ejemplo se compila con FWH 11.11 de 30/noviembre/2011 y con FWH 11.11 de 04/diciembre/2011 se puede apreciar claramente la diferencia.
Code: Select all  Expand view
#include "FiveWin.ch"
#include "xBrowse.ch"

function Main()
local oWnd

Define Window oWnd Title "Principal" Mdi Menu ps_Menu(oWnd)
Activate Window oWnd MAXIMIZED Valid MsgYesNo('Desea salir')
return nil


static func ps_Menu(oWnd)
local oMenu
Menu oMenu
MenuItem "Child" Action ps_Child(oWnd)
EndMenu
return oMenu

static proc ps_Child( oWnd )
local oChild
Define Window oChild MdiChild Title 'Child' of oWnd

Activate Window oChild On Init ps_Dialog(oChild)
return


static proc ps_Dialog( oChild )
local oDlg, oBrush, aGet[8], aVar[8]
local oFld, oDlg2, oBrw

USE EJEMPLO1

oBrush := tbrush():New(, nRgb(224, 236, 255) )
DEFINE DIALOG oDlg Resource "Dialogo" OF oChild TRANSPARENT Brush oBrush

aVar[1] := space(2)
Redefine Get aGet[1] Var aVar[1] Id 102 Update Message 'Indique el código del usuario' Of oDlg
aVar[2] := space(50)
Redefine Get aGet[2] Var aVar[2] Id 103 Update Message 'Indique el nombre del usuario' Of oDlg

aVar[3] := space(50)
Redefine Get aGet[3] Var aVar[3] Id 104 Update Message 'Indique el código de la empresa' Of oDlg
aVar[4] := space(50)
Redefine Get aGet[4] Var aVar[4] Id 105 Update Message 'Indique el nombre de la empresa' Of oDlg

Redefine Folder oFld ID 106 OF oDlg;
  Prompts '&Notas', 'Notas1', 'Notas2', 'Notas3' ;
  Dialogs 'Notas', 'Notas', 'Notas', 'Notas'

DEFINE DIALOG oDlg2 OF oFld STYLE WS_CHILD FROM 0, 0 TO 5, 5 PIXEL
aIns( oFld:aDialogs, 1, oDlg2, .T. )
aIns( oFld:aPrompts, 1, "Lineas", .T. )
aIns( oFld:aEnable, 1, .t., .T. )
@  0, 0 XBROWSE oBrw OF oDlg2 ALIAS 'EJEMPLO1' AUTOCOLS
oBrw:CreateFromCode()
oDlg2:oClient := oBrw

Redefine Get aGet[5] Var aVar[5] Id 102 Of oFld:aDialogs[2] MEMO
Redefine Get aGet[6] Var aVar[6] Id 102 Of oFld:aDialogs[3] MEMO
Redefine Get aGet[7] Var aVar[7] Id 102 Of oFld:aDialogs[4] MEMO
Redefine Get aGet[8] Var aVar[8] Id 102 Of oFld:aDialogs[5] MEMO


ACTIVATE DIALOG oDlg NoWait On Init ps_Incrus( oChild, oDlg ) Valid .F.
return



static proc ps_Incrus(oChild, oDlg)
local nWidth, nHeight

oDlg:Move(0, 0,,, .T.)

nWidth  := oDlg:nWidth + 7
nHeight := oDlg:nHeight + 33
oChild:SetSize(nWidth, nHeight, .T.)
oChild:Center()
return


con rc:
Code: Select all  Expand view
DIALOGO DIALOG DISCARDABLE 0, 0, 519, 264
STYLE WS_CHILD|WS_VISIBLE
FONT 8, "MS Sans Serif"
{
  CONTROL "123", 102, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 44, 7, 39, 12
  CONTROL "123456", 103, "Edit", ES_AUTOHSCROLL|WS_BORDER|WS_TABSTOP, 91, 7, 146, 12
  CONTROL "12", 104, "Edit", WS_BORDER|WS_TABSTOP, 288, 7, 32, 12
  CONTROL "1", 105, "Edit", WS_BORDER|WS_TABSTOP, 335, 7, 105, 12
  CONTROL "", 106, "SysTabControl32", 0x00000000, 0, 26, 519, 238
  CONTROL "Usuario:", -1, "Static", SS_CENTERIMAGE|WS_GROUP, 5, 9, 31, 12
  CONTROL "Empresa:", -1, "Static", SS_CENTERIMAGE|WS_GROUP, 249, 9, 31, 12
}

NOTAS DIALOG DISCARDABLE 6, 18, 519, 222
STYLE WS_CHILD|WS_VISIBLE
FONT 8, "MS Sans Serif", 0, 0, 1
{
  CONTROL "Edit", 102, "Edit", ES_MULTILINE|ES_AUTOHSCROLL|ES_AUTOVSCROLL|ES_WANTRETURN|WS_HSCROLL|WS_VSCROLL|WS_BORDER|WS_TABSTOP, 0, 0, 519, 222
}
 

Re: Bug en 11.11 30/septiembre

PostPosted: Fri Dec 09, 2011 6:03 pm
by Antonio Linares
Fernando,

En la definición de los recursos que usas quita el estilo visible:

DIALOGO DIALOG DISCARDABLE 0, 0, 305, 80
STYLE WS_CHILD|WS_VISIBLE

a

STYLE WS_CHILD

Es una satisfacción poder ayudar a resolver problemas cuando se tiene el apoyo y la ayuda de muy buenos amigos, gracias :-)

Re: Bug en 11.11 30/septiembre

PostPosted: Fri Dec 09, 2011 6:12 pm
by fgondi
Antonio,

Solucionado.

Quitando el estilo visible ya carga perfectamente.

Buscaré en todos los rc donde aparece WS_VISIBLE y lo quitaré.

Muchisimas gracias por todo.
Con soluciones y ayudas como todo lo acontecido en este post, es con las que se demuestra que escoger FWH es la mejor solución.

PD: ¿Nuncá ha hecho falta tener WS_VISIBLE en los diálogos?

Re: Bug en 11.11 30/septiembre

PostPosted: Sun Dec 11, 2011 11:47 am
by Antonio Linares
Fernando,

En FWH 11.11 se ha optimizado el código de creación de las cajas de diálogo no modales para que sea compatible con todos los compiladores de C soportados (Borland, Microsoft y gcc), de hecho el código que se usa está ahora disponible en la versión 11.11, anteriormente no se proporcionaba.

Al optimizar ese código, a nivel de implementación, han aparecido estos efectos que hemos ido solucionando poco a poco y gracias a tu ayuda y a las de otros usuarios que han ido comentando diferencias.

En casos como el tuyo es preciso quitar el estilo WS_VISIBLE pues aunque en el código en C publicado, ocultamos el diálogo, transcurren unos instantes hasta que Windows lo procesa y de ahi que se vea. Aún asi, merece la pena estos ajustes pues el código final es muy limpio, pequeño y facilmente mantenible.

Efectos colaterales que a veces ocurren cuando se optimiza lo que ya funcionaba bien pero no en todos los compiladores de C :-)

Re: Bug en 11.11 30/septiembre (SOLUCIONADO)

PostPosted: Sun Dec 11, 2011 2:50 pm
by fgondi
Antonio,

Ok. Entendido.