Page 1 of 1

REDEFINE GET MEMO y cláusula ACTION

Posted: Sat Oct 17, 2020 8:58 am
by joseluispalma
Hola,

Espero que estéis todos bien. En un campo GET desde recursos tipo memo, es decir, REDEFINE GET cCampoMemo, necesito también poder usar la cláusula ACTION, que en los gets normales sí es posible, pero no en los memos.

Es decir:

Code: Select all

REDEFINE GET cCampoMEMO ID 101 OF oDlg MEMO ACTION Mifuncion()
¿Hay alguna forma de conseguirlo?

Gracias.

Re: REDEFINE GET MEMO y cláusula ACTION

Posted: Sat Oct 17, 2020 9:20 am
by Antonio Linares
Jose Luis,

La claúsula GET ... ACTION ... muestra un botón en el GET

Deseas que se vea ese botón en el GET multilinea (Memo) ? En que posición ?

Re: REDEFINE GET MEMO y cláusula ACTION

Posted: Sat Oct 17, 2020 9:33 am
by joseluispalma
Así es.

El botón debería ir en la primera línea, en el borde derecho del campo, como en el GET ACTION normal por favor.

¡Muchas gracias!

Re: REDEFINE GET MEMO y cláusula ACTION

Posted: Wed Dec 23, 2020 11:48 am
by joseluispalma
Hola amigos,

¿Hay algún avance?

Gracias. Un saludo y feliz navidad

Re: REDEFINE GET MEMO y cláusula ACTION

Posted: Wed Dec 23, 2020 12:50 pm
by Antonio Linares
Jose Luis,

Aqui tienes un ejemplo:

Code: Select all

#include "FiveWin.ch"

function Main()

   local oDlg, cText, oMemo

   DEFINE DIALOG oDlg SIZE 400, 200

   @ 1, 2 GET oMemo VAR cText MEMO OF oDlg SIZE 150, 40
 
   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT ( BuildButton( oMemo ), .T. )

return nil

function BuildButton( oMemo )

   local oBtn

   @ oMemo:nTop, oMemo:nRight * 2 + 2 BUTTON oBtn PROMPT "..." OF oMemo:oWnd PIXEL SIZE 20, 20 ACTION MsgInfo( "click" ) 

return nil  

Re: REDEFINE GET MEMO y cláusula ACTION

Posted: Wed Dec 23, 2020 9:07 pm
by joseluispalma
Muchas gracias Antonio, pero no me acaba de valer, porque el botón tiene que estar dentro del campo mismo, como ocurre con los GET normales, para que todo sea simétrico. Y además lo uso desde recursos.

Re: REDEFINE GET MEMO y cláusula ACTION

Posted: Thu Dec 24, 2020 9:26 am
by Antonio Linares
Aqui lo tienes :-)

Con recursos solo tienes que cambiar @ 1, 2 GET ... por REDEFINE GET ...

Code: Select all

#include "FiveWin.ch"

function Main()

   local oDlg, cText, oMemo

   DEFINE DIALOG oDlg SIZE 400, 200

   @ 1, 2 GET oMemo VAR cText MEMO OF oDlg SIZE 150, 40
 
   ACTIVATE DIALOG oDlg CENTERED ;
      ON INIT ( BuildButton( oMemo ), .T. )

return nil

function BuildButton( oMemo )

   local oBtn

   @ 0, oMemo:nWidth - 42 BUTTON oBtn PROMPT "..." OF oMemo PIXEL SIZE 20, 20 ACTION MsgInfo( "click" )
   
   oMemo:bChange = { || oBtn:Refresh() }

return nil  

Re: REDEFINE GET MEMO y cláusula ACTION

Posted: Thu Dec 24, 2020 11:33 am
by joseluispalma
Muchas gracias Antonio.

Pero el comportamiento sigue sin ser como REDEFINE GET ACTION, ya que en este caso el botón se sitúa dentro del get, no fuera, y no se puede escribir texto sobre el botón.

Re: REDEFINE GET MEMO y cláusula ACTION

Posted: Thu Dec 24, 2020 12:16 pm
by Antonio Linares
Jose Luis,

El código último al ejecutarse aqui se ve asi:

Image

Re: REDEFINE GET MEMO y cláusula ACTION

Posted: Thu Dec 24, 2020 12:23 pm
by joseluispalma
Antonio,

Mira esto por favor:

Code: Select all

#Include "FiveWin.ch"

//----------------------------------------------------------------------------//

Function Main()

   Local oDlg
   local oMemo
   local cGet := space(100)





   DEFINE DIALOG oDlg NAME "Test" TITLE "Prueba memo"



          REDEFINE GET oMemo VAR cGet  OF oDlg  ID 100  MEMO


   REDEFINE BUTTON ID 110 ACTION ( oDlg:end() )

   REDEFINE BUTTON ID 120  ACTION ( oDlg:end() )




   ACTIVATE DIALOG oDlg CENTERED;
            ON INIT ( BuildButton( oMemo ), .T. )





Return nil



function BuildButton( oMemo, oDlg )

   local oBtn


   @ 0, oMemo:nWidth - 22 BUTTONBMP oBtn PROMPT "..." OF oMemo PIXEL SIZE 20, 20 ACTION MsgInfo( "click" )

   oMemo:bChange = { || oBtn:Refresh() }



return nil
 

archivo .rc

Code: Select all


#ifdef __FLAT__
  1 24 "c:\fivetech\WindowsXP.Manifest"
#endif


#define IDC_EDIT1   101

Test DIALOG 41, 64, 409, 199
EXSTYLE WS_EX_DLGMODALFRAME
STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Testing"
FONT 8, "MS Sans Serif"
{
 
 EDITTEXT 100, 6, 12, 166, 162, ES_AUTOHSCROLL | ES_MULTILINE | WS_BORDER | WS_TABSTOP
 CONTROL "OK", 110, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 5, 179, 50, 16
 CONTROL "Cancelar", 120, "BUTTON", BS_PUSHBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 95, 179, 50, 16
}




 

Muchas gracias.

Re: REDEFINE GET MEMO y cláusula ACTION

Posted: Thu Dec 24, 2020 12:49 pm
by Antonio Linares
Jose Luis,

No es simple modificar el comportamiento de un control estandar de Windows.

Ahora hay que ver como hacer que el texto no ocupe el área del botón...

A buscar en google para ver si se puede hacer y como :-)