Page 1 of 1

Problem on a Dialog, btns are disabled RESOLVED

PostPosted: Fri Dec 20, 2019 3:07 pm
by Silvio.Falconi
Image


on Top there is a turllnk ( I need it to protect the modify of reservation)

on Botton of dialog there are btnbmps buttons, these buttons are disabled until the final user press the urlnk..... why ?

if the url lnk is pressed the folder must change the height and the box (where is the turlnk) must be destroyed



Please try this small test

Code: Select all  Expand view

#include "fivewin.ch"
#include "constant.ch"


Function test()
   local oDlg,oBrowse,oFolder
   local oPanelGray,oPanelScroll,oPanelGreen,oPanelWhite
   local oBtnSave,oBtnClose,oBtnoMaggio
   local oFont,oFontBold,oLarge
   local oBtnPacc
   local nSpazio:= 40
   Local lModifica:=.f.
   Local oProtezione
   Local cImgProtetta:=".\bitmaps\Lock.png"

       DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
       DEFINE FONT oFontBold NAME "TAHOMA" SIZE 0,-14 BOLD
       DEFINE FONT oLarge NAME "VERDANA" SIZE 0,-20 BOLD


DEFINE DIALOG oDlg TITLE "test " SIZE 1130,650 ;
             PIXEL TRUEPIXEL RESIZABLE COLOR CLR_HGRAY ,CLR_WHITE

    @ 1, 0 FOLDEREX oFolder OF oDlg SIZE oDlg:nWidth-585,oDlg:nHeight-390 PIXEL  ;
        PROMPT "Reservation","Payments"
        oFolder:aEnable = { .t., .f. }

         @ 520,680 BTNBMP oBtnSave ;
             PROMPT "Save"  SIZE 130,60 PIXEL OF oDlg;
              RESOURCE "INVOICE_SAVE"  FLAT RIGHT;
               FONT oFontBold  ;
            ACTION ( oDlg:end( IDOK ) )

          @ 520,780 BTNBMP oBtnClose ;
               PROMPT "Chiudi"  SIZE 130,60 PIXEL OF oDlg;
               RESOURCE "INVOICE_EXIT"  FLAT RIGHT;
                FONT oFontBold  ;
            ACTION  ( oDlg:end( IDCANCEL ) )

             @ 520,680 BTNBMP oBtnoMaggio ;
             PROMPT " oMaggio "  SIZE 130,60 PIXEL OF oDlg;
              RESOURCE "INVOICE_OMAGGIO "  FLAT RIGHT;
              FONT oFontBold  ;
            ACTION  NIL


  oDlg:bResized  := <||
                local oRect    := oDlg:GetCliRect()
                oFolder:nWidth     := oRect:nRight-2

                If lModifica
                   oFolder:ntop     := oRect:nTop
                   oFolder:nHeight    := oRect:nBottom-60
                   oPanelGray:nTop    :=  oRect:nBottom - 130
                   oPanelGreen:nTop   := oRect:ntop +80
                   oPanelWhite:nTop     := oRect:nBottom - 175
                   oProtezione:end()
                  else
                    oFolder:ntop       :=  oRect:nTop+nSpazio
                    oFolder:nHeight    :=  oRect:nBottom-(60+nSpazio)
                    oPanelGray:nTop    :=  oRect:nBottom-(130+nSpazio)
                    oPanelGreen:nTop   :=  oRect:ntop +(80+nSpazio)
                    oPanelWhite:nTop   :=  oRect:nBottom - (175+nSpazio)
                    oProtezione:nwidth  := oRect:nRight - 2
                 ENDIF

                 oPanelGreen:nLeft  := oRect:nleft+10
                 oPanelWhite:nLeft    := oRect:nleft+500
                 oPanelGray:nwidth  := oRect:nRight - 18
                 oPanelGreen:nwidth := oRect:nRight - 18
                 oPanelWhite:nwidth := oRect:nRight -512

                oBtnSave:nLeft     := oRect:nRight - 300
                oBtnsave:nTop      := oRect:nBottom - 60
                oBtnClose:nLeft    := oRect:nRight - 140
                oBtnClose:nTop     := oRect:nBottom - 60
                oBtnoMaggio:nLeft    := oRect:nLeft + 100
                oBtnoMaggio:nTop     := oRect:nBottom - 60
                 return nil
              >


              ACTIVATE DIALOG oDlg CENTERED;
              ON INIT (IIf(!lmodifica,(oProtezione:=BoxProtezione(oDlg),;
                   Setta_Modifica(oProtezione,@lModifica,oDlg,cImgProtetta)),) ,;
                          oPanelGreen  := PanelGreen(oFolder)  ,;
                          oPanelGray   := PanelGray(oFolder)   ,;
                          oPanelWhite  := PanelWhite(oFolder)  ,;
                           EVAL( oDlg:bResized)             )



      IF oDlg:nresult == IDOK
           msginfo("yes")
   Endif
return nil


 RETURN NIL
//--------------------------------------------------------------------------------//
Function  Setta_Modifica(oPanelProtect,lModifica,oDlg,cImgProtetta)
   Local oFnt
   Local nRow:= 2
   Local cText:= "Prenotazione protetta da modifica -"


 IF !lModifica
      DEFINE FONT oFnt NAME "Arial" SIZE 0,-10
        oPanelProtect:bPainted := { || (  oPanelProtect:Box( 1,1,oPanelProtect:nHeight-1,oPanelProtect:nWidth-1),;
                                     FW_DrawImage( oPanelProtect, cImgProtetta,{ 5,9,25,26} , .t.,,,.f.,"LEFT", ),;
                                    oPanelProtect:Say( nRow+6, 44, cText, CLR_BLUE, , oFnt, .t.,.T., ),;
                                    UrlAction(@lModifica,oDlg,oFnt,nRow+6,213,oPanelProtect)) }
  Endif
  return lModifica
//-----------------------------------------------------------//




Function UrlAction(lModifica,oDlg,oFont,nRow,nCol,oPanel)
   Local oUrlLink
   IF !lModifica
      oUrlLink := TUrlLink():New(nRow, nCol,oPanel , .T., .F., oFont, "", "("+"Sblocca"+")" )
      oUrlLink:SetColor(  oUrlLink:nClrText, oUrlLink:nClrPane )
      oUrlLink:nClrOver = CLR_RED
     oUrlLink:bAction =  { || lModifica := !lModifica,  EVAL( oDlg:bResized) }
   Endif
 return lModifica

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

 function PanelGreen(oFld)
  local oPanel,oBrushGreen
  Local aGradgreen := { Rgb( 225,239,219),Rgb( 225,239,219)}
  DEFINE BRUSH oBrushGreen GRADIENT aGradgreen
     oPanel:=Tpanel():New( 35, 5, 75, oFld:aDialogs[1]:nWidth-5, oFld:aDialogs[1])
     oPanel:SetBrush( oBrushGreen )
     oPanel:bPainted := { || oPanel:Box( 1,1,oPanel:nHeight-1,oPanel:nWidth-1 ) }
     return oPanel
//--------------------------------------------------------------//
  function PanelGray(oFld)
  local oPanel,oBrushGray
  Local aGradgray := { nRgb(211,211,211),nRgb(211,211,211)}
  DEFINE BRUSH oBrushGray GRADIENT aGradgray
     oPanel:=Tpanel():New( 35, 5, 75, oFld:aDialogs[1]:nWidth-5, oFld:aDialogs[1])
     oPanel:SetBrush( oBrushGray )
     oPanel:bPainted := { || oPanel:Box( 1,1,oPanel:nHeight-1,oPanel:nWidth-1 ) }
     return oPanel
//------------------------------------------------------------------//
   Static function PanelWhite(oFld)
  local oPanel,oBrushWhite
  Local aGradWhite := { RGB( 255, 255, 255 ),RGB( 255, 255, 255 )}
  DEFINE BRUSH oBrushWhite GRADIENT aGradWhite
     oPanel:=Tpanel():New( 35, 5, 75, 200, oFld:aDialogs[1])
     oPanel:SetBrush( oBrushWhite )
     oPanel:bPainted := { || oPanel:Box( 1,1,oPanel:nHeight-1,oPanel:nWidth-1 ) }
     return oPanel
//------------------------------------------------------------------//

 function BoxProtezione(oDlg)
  local oPanel,oBrushGreen
  Local aGradgreen := { Rgb( 225,239,219),Rgb( 225,239,219)}
  DEFINE BRUSH oBrushGreen GRADIENT aGradgreen
     oPanel:=Tpanel():New( 2, 2, 25, oDlg:nWidth-5, oDlg)
     oPanel:SetBrush( oBrushGreen )
     oPanel:bPainted := { || oPanel:Box( 1,1,oPanel:nHeight-1,oPanel:nWidth-1 ) }
     return oPanel
//------------------------------------------------------------------//





 


I would need at least to have the obtnclose button active because the end user could not modify the record and close the dialog

Re: Problem on a Dialog (btnbmp are disabled)

PostPosted: Sat Dec 21, 2019 6:51 pm
by ukoenig
Silvio,

just change
oDlg:bResized := <||
to
oDlg:bPainted := <||
and delete in
ON INIT
EVAL( oDlg:bResized)

THE TEST

Image

regards
Uwe :D

Re: Problem on a Dialog (btnbmp are disabled)

PostPosted: Mon Dec 23, 2019 9:09 am
by Silvio.Falconi
ukoenig wrote:Silvio,

just change
oDlg:bResized := <||
to
oDlg:bPainted := <||
and delete in
ON INIT
EVAL( oDlg:bResized)

THE TEST

Image

regards
Uwe :D







Uwe,
it is the same

I add

Code: Select all  Expand view

  oDlg:bPainted := {|| (EVAL( oDlg:bResized),;
                   IIF( lModifica = .f.,;
                   setta_Modifica(oProtezione,@lModifica,oDlg,cImgProtetta),)  ) }

 




I need to have on init clausole and bResized to resize panels

Code: Select all  Expand view

ACTIVATE DIALOG oDlg CENTERED;
                     ON INIT (oProtezione:=BoxProtezione(oDlg),;
                              oPanelGreen  := PanelGreen(oFolder)  ,;
                              oPanelGray   := PanelGray(oFolder)   ,;
                              oPanelWhite  := PanelWhite(oFolder) )
                                        


 



I tried but the buttons are disabled the same
the test
Code: Select all  Expand view
#include "fivewin.ch"
#include "constant.ch"

REQUEST DBFCDX
REQUEST DBFFPT
EXTERNAL ORDKEYNO,ORDKEYCOUNT,ORDCREATE,ORDKEYGOTO

REQUEST HB_Lang_IT
REQUEST HB_CODEPAGE_ITWIN
Function test()
   local oDlg,oBrowse,oFolder
   local oPanelGray,oPanelScroll,oPanelGreen,oPanelWhite
   local oBtnSave,oBtnClose,oBtnoMaggio
   local oFont,oFontBold,oLarge
   local oBtnPacc
   local nSpazio:= 40
   Local lModifica:=.f.
   Local oProtezione
   Local cImgProtetta:=".\bitmaps\Lock.png"

       DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
       DEFINE FONT oFontBold NAME "TAHOMA" SIZE 0,-14 BOLD
       DEFINE FONT oLarge NAME "VERDANA" SIZE 0,-20 BOLD


DEFINE DIALOG oDlg TITLE "test " SIZE 1130,650 ;
             PIXEL TRUEPIXEL RESIZABLE COLOR CLR_HGRAY ,CLR_WHITE

    @ 1, 0 FOLDEREX oFolder OF oDlg SIZE oDlg:nWidth-585,oDlg:nHeight-390 PIXEL  ;
        PROMPT "Reservation","Payments"
        oFolder:aEnable = { .t., .f. }

         @ 520,680 BTNBMP oBtnSave ;
             PROMPT "Save"  SIZE 130,60 PIXEL OF oDlg;
              RESOURCE "INVOICE_SAVE"  FLAT RIGHT;
               FONT oFontBold  ;
            ACTION ( oDlg:end( IDOK ) )

          @ 520,780 BTNBMP oBtnClose ;
               PROMPT "Chiudi"  SIZE 130,60 PIXEL OF oDlg;
               RESOURCE "INVOICE_EXIT"  FLAT RIGHT;
                FONT oFontBold  ;
            ACTION  ( oDlg:end( IDCANCEL ) )

             @ 520,680 BTNBMP oBtnoMaggio ;
             PROMPT " omaggio "  SIZE 130,60 PIXEL OF oDlg;
              RESOURCE "INVOICE_OMAGGIO "  FLAT RIGHT;
              FONT oFontBold  ;
            ACTION  NIL





           oDlg:bPainted := {|| (EVAL( oDlg:bResized),;
                   IIF( lModifica = .f.,;
                   setta_Modifica(oProtezione,@lModifica,oDlg,cImgProtetta),)  ) }




  oDlg:bResized  := <||
                local oRect    := oDlg:GetCliRect()
                oFolder:nWidth     := oRect:nRight-2

                If lModifica
                   oFolder:ntop     := oRect:nTop
                   oFolder:nHeight    := oRect:nBottom-60
                   oPanelGray:nTop    :=  oRect:nBottom - 130
                   oPanelGreen:nTop   := oRect:ntop +80
                   oPanelWhite:nTop     := oRect:nBottom - 175
                   oProtezione:end()
                  else
                    oFolder:ntop       :=  oRect:nTop+nSpazio
                    oFolder:nHeight    :=  oRect:nBottom-(60+nSpazio)
                    oPanelGray:nTop    :=  oRect:nBottom-(130+nSpazio)
                    oPanelGreen:nTop   :=  oRect:ntop +(80+nSpazio)
                    oPanelWhite:nTop   :=  oRect:nBottom - (175+nSpazio)
                    oProtezione:nwidth := oRect:nRight - 2
                 ENDIF

                 oPanelGreen:nLeft  := oRect:nleft+10
                 oPanelWhite:nLeft    := oRect:nleft+500
                 oPanelGray:nwidth  := oRect:nRight - 18
                 oPanelGreen:nwidth := oRect:nRight - 18
                 oPanelWhite:nwidth := oRect:nRight -512

                oBtnSave:nLeft     := oRect:nRight - 300
                oBtnsave:nTop      := oRect:nBottom - 60
                oBtnClose:nLeft    := oRect:nRight - 140
                oBtnClose:nTop     := oRect:nBottom - 60
                oBtnoMaggio:nLeft  := oRect:nLeft + 100
                oBtnoMaggio:nTop   := oRect:nBottom - 60

                 return nil
              >

              oDlg:aMinMaxInfo := { nil, nil, ,, 1130,650, , }

              ACTIVATE DIALOG oDlg CENTERED;
                     ON INIT (oProtezione:=BoxProtezione(oDlg),;
                              oPanelGreen  := PanelGreen(oFolder)  ,;
                              oPanelGray   := PanelGray(oFolder)   ,;
                              oPanelWhite  := PanelWhite(oFolder) )





      IF oDlg:nresult == IDOK
         msginfo("yes")
         Endif

 RETURN NIL
//--------------------------------------------------------------------------------//

Function  Setta_Modifica(oPanelProtect,lModifica,oDlg,cImgProtetta)
   Local oFnt
   Local nRow:= 2
   Local cText:= "Prenotazione protetta da modifica -"


 IF !lModifica
      DEFINE FONT oFnt NAME "Arial" SIZE 0,-10
        oPanelProtect:bPainted := { || (  oPanelProtect:Box( 1,1,oPanelProtect:nHeight-1,oPanelProtect:nWidth-1),;
                                     FW_DrawImage( oPanelProtect, cImgProtetta,{ 5,9,25,26} , .t.,,,.f.,"LEFT", ),;
                                    oPanelProtect:Say( nRow+6, 44, cText, CLR_BLUE, , oFnt, .t.,.T., ),;
                                    UrlAction(@lModifica,oDlg,oFnt,nRow+6,213,oPanelProtect)) }
  Endif
  return lModifica
//-----------------------------------------------------------//




Function UrlAction(lModifica,oDlg,oFont,nRow,nCol,oPanel)
   Local oUrlLink
   IF !lModifica
      oUrlLink := TUrlLink():New(nRow, nCol,oPanel , .T., .F., oFont, "", "("+"Sblocca"+")" )
      oUrlLink:SetColor(  oUrlLink:nClrText, oUrlLink:nClrPane )
      oUrlLink:nClrOver = CLR_RED
     oUrlLink:bAction =  { || lModifica := !lModifica,  EVAL( oDlg:bResized) }
   Endif
 return lModifica

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

 function PanelGreen(oFld)
  local oPanel,oBrushGreen
  Local aGradgreen := { Rgb( 225,239,219),Rgb( 225,239,219)}
  DEFINE BRUSH oBrushGreen GRADIENT aGradgreen
     oPanel:=Tpanel():New( 35, 5, 75, oFld:aDialogs[1]:nWidth-5, oFld:aDialogs[1])
     oPanel:SetBrush( oBrushGreen )
     oPanel:bPainted := { || oPanel:Box( 1,1,oPanel:nHeight-1,oPanel:nWidth-1 ) }
     return oPanel
//--------------------------------------------------------------//
  function PanelGray(oFld)
  local oPanel,oBrushGray
  Local aGradgray := { nRgb(211,211,211),nRgb(211,211,211)}
  DEFINE BRUSH oBrushGray GRADIENT aGradgray
     oPanel:=Tpanel():New( 35, 5, 75, oFld:aDialogs[1]:nWidth-5, oFld:aDialogs[1])
     oPanel:SetBrush( oBrushGray )
     oPanel:bPainted := { || oPanel:Box( 1,1,oPanel:nHeight-1,oPanel:nWidth-1 ) }
     return oPanel
//------------------------------------------------------------------//
   Static function PanelWhite(oFld)
  local oPanel,oBrushWhite
  Local aGradWhite := { RGB( 255, 255, 255 ),RGB( 255, 255, 255 )}
  DEFINE BRUSH oBrushWhite GRADIENT aGradWhite
     oPanel:=Tpanel():New( 35, 5, 75, 200, oFld:aDialogs[1])
     oPanel:SetBrush( oBrushWhite )
     oPanel:bPainted := { || oPanel:Box( 1,1,oPanel:nHeight-1,oPanel:nWidth-1 ) }
     return oPanel
//------------------------------------------------------------------//

 function BoxProtezione(oDlg)
  local oPanel,oBrushGreen
  Local aGradgreen := { Rgb( 225,239,219),Rgb( 225,239,219)}
  DEFINE BRUSH oBrushGreen GRADIENT aGradgreen
     oPanel:=Tpanel():New( 2, 2, 25, oDlg:nWidth-5, oDlg)
     oPanel:SetBrush( oBrushGreen )
     oPanel:bPainted := { || oPanel:Box( 1,1,oPanel:nHeight-1,oPanel:nWidth-1 ) }
     return oPanel
//------------------------------------------------------------------//




 

Re: Problem on a Dialog (btnbmp are disabled)

PostPosted: Tue Jan 07, 2020 5:38 pm
by Silvio.Falconi
Any solution Please

I also Have the btnbmps disabled
I wish have close btnbmp enable

seem urllink control disabled all

Re: Problem on a Dialog (btnbmp are disabled)

PostPosted: Tue Jan 07, 2020 6:37 pm
by karinha
Silvio, teste please:

Code: Select all  Expand view

   /* // no funciona -> CLR_HGRAY -> Dark mode.
   DEFINE DIALOG oDlg TITLE "test " SIZE 1130, 650 ;
      PIXEL TRUEPIXEL RESIZABLE COLOR CLR_HGRAY , CLR_WHITE
   */


   // funciona
   DEFINE DIALOG oDlg TITLE "test/Silvio" SIZE 1130, 650 ;
      PIXEL TRUEPIXEL RESIZABLE COLORS CLR_BLACK, CLR_WHITE TRANSPARENT
 



Re: Problem on a Dialog (btnbmp are disabled)

PostPosted: Wed Jan 08, 2020 9:54 am
by Silvio.Falconi
there is not a question of colors
Please
When the Urllink control is activated you cannot press the buttons
you must press before the url link and the the button are enabled


@ 520,680 BTNBMP oBtnSave ;
PROMPT "Save" SIZE 130,60 PIXEL OF oDlg;
RESOURCE "INVOICE_SAVE" FLAT RIGHT;
FONT oFontBold ;
ACTION ( oDlg:end( IDOK ) )

@ 520,780 BTNBMP oBtnClose ;
PROMPT "Chiudi" SIZE 130,60 PIXEL OF oDlg;
RESOURCE "INVOICE_EXIT" FLAT RIGHT;
FONT oFontBold ;
ACTION ( oDlg:end( IDCANCEL ) )



you can move the mouse over therse buttons but you cannot execute the command of each buttons

If you press "Save" buttons the procedure must execute this

Code: Select all  Expand view
IF oDlg:nresult == IDOK
               msginfo("yes")
            Endif




Please test this release ( I translate on english my texts)
Code: Select all  Expand view

    #include "fivewin.ch"
    #include "constant.ch"


    Function test()
       local oDlg,oBrowse,oFolder
       local oPanelGray,oPanelScroll,oPanelGreen,oPanelWhite
       local oBtnSave,oBtnClose,oBtnoMaggio
       local oFont,oFontBold,oLarge
       local oBtnPacc
       local nSpazio:= 40

       Local lModifica:=.f.    // init for block the modify

       Local oProtezione
       Local cImgProtetta:=".\bitmaps\Lock.png"

           DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-14
           DEFINE FONT oFontBold NAME "TAHOMA" SIZE 0,-14 BOLD
           DEFINE FONT oLarge NAME "VERDANA" SIZE 0,-20 BOLD


    DEFINE DIALOG oDlg TITLE "test " SIZE 1130,650 ;
                 PIXEL TRUEPIXEL RESIZABLE COLORS CLR_BLACK, CLR_WHITE TRANSPARENT //COLOR CLR_HGRAY ,CLR_WHITE

        @ 1, 0 FOLDEREX oFolder OF oDlg SIZE oDlg:nWidth-585,oDlg:nHeight-390 PIXEL  ;
            PROMPT "Reservation","Payments"
            oFolder:aEnable = { .t., .f. }

             @ 520,680 BTNBMP oBtnSave ;
                 PROMPT "Save"  SIZE 130,60 PIXEL OF oDlg;
                  RESOURCE "INVOICE_SAVE"  FLAT RIGHT;
                   FONT oFontBold  ;
                ACTION ( oDlg:end( IDOK ) )

              @ 520,780 BTNBMP oBtnClose ;
                   PROMPT "Close"  SIZE 130,60 PIXEL OF oDlg;
                   RESOURCE "INVOICE_EXIT"  FLAT RIGHT;
                    FONT oFontBold  ;
                ACTION  ( oDlg:end( IDCANCEL ) )

                 @ 520,680 BTNBMP oBtnoMaggio ;
                 PROMPT " another btn "  SIZE 130,60 PIXEL OF oDlg;
                  RESOURCE "INVOICE_OMAGGIO "  FLAT RIGHT;
                  FONT oFontBold  ;
                ACTION  NIL


      oDlg:bResized := <||
                    local oRect    := oDlg:GetCliRect()
                    oFolder:nWidth     := oRect:nRight-2

                    If lModifica
                       oFolder:ntop     := oRect:nTop
                       oFolder:nHeight    := oRect:nBottom-60
                       oPanelGray:nTop    :=  oRect:nBottom - 130
                       oPanelGreen:nTop   := oRect:ntop +80
                       oPanelWhite:nTop     := oRect:nBottom - 175
                       oProtezione:end()
                      else
                        oFolder:ntop       :=  oRect:nTop+nSpazio
                        oFolder:nHeight    :=  oRect:nBottom-(60+nSpazio)
                        oPanelGray:nTop    :=  oRect:nBottom-(130+nSpazio)
                        oPanelGreen:nTop   :=  oRect:ntop +(80+nSpazio)
                        oPanelWhite:nTop   :=  oRect:nBottom - (175+nSpazio)
                        oProtezione:nwidth  := oRect:nRight - 2
                     ENDIF

                     oPanelGreen:nLeft  := oRect:nleft+10
                     oPanelWhite:nLeft    := oRect:nleft+500
                     oPanelGray:nwidth  := oRect:nRight - 18
                     oPanelGreen:nwidth := oRect:nRight - 18
                     oPanelWhite:nwidth := oRect:nRight -512

                    oBtnSave:nLeft     := oRect:nRight - 300
                    oBtnsave:nTop      := oRect:nBottom - 60
                    oBtnClose:nLeft    := oRect:nRight - 140
                    oBtnClose:nTop     := oRect:nBottom - 60
                    oBtnoMaggio:nLeft    := oRect:nLeft + 100
                    oBtnoMaggio:nTop     := oRect:nBottom - 60
                     return nil
                  >








                  ACTIVATE DIALOG oDlg CENTERED;
                  ON INIT (IIf(!lmodifica,(oProtezione:= BoxUrllnk(oDlg),;
                       Activate_Modify(oProtezione,@lModifica,oDlg,cImgProtetta)),) ,;
                              oPanelGreen  := PanelGreen(oFolder)  ,;
                              oPanelGray   := PanelGray(oFolder)   ,;
                              oPanelWhite  := PanelWhite(oFolder)  ,;
                               EVAL( oDlg:bResized)             )



          IF oDlg:nresult == IDOK
               msginfo("yes")
            Endif

    return nil


     RETURN NIL
    //--------------------------------------------------------------------------------//
   // if not lmodifica show a url linkinto oPanel protect

    Function  Activate_Modify(oPanelProtect,lModifica,oDlg,cImgProtetta)
       Local oFnt
       Local nRow:= 2
       Local cText:= "Booking protected from modify"

     IF !lModifica
          DEFINE FONT oFnt NAME "Arial" SIZE 0,-10
            oPanelProtect:bPainted := { || (  oPanelProtect:Box( 1,1,oPanelProtect:nHeight-1,oPanelProtect:nWidth-1),;
                                         FW_DrawImage( oPanelProtect, cImgProtetta,{ 5,9,25,26} , .t.,,,.f.,"LEFT", ),;
                                        oPanelProtect:Say( nRow+6, 44, cText, CLR_BLUE, , oFnt, .t.,.T., ),;
                                        UrlAction(@lModifica,oDlg,oFnt,nRow+6,213,oPanelProtect)) }
      Endif
      return lModifica
    //-----------------------------------------------------------//
      // activate a Url link control
    Function UrlAction(lModifica,oDlg,oFont,nRow,nCol,oPanel)
       Local oUrlLink
       IF !lModifica
          oUrlLink := TUrlLink():New(nRow, nCol,oPanel , .T., .F., oFont, "", "("+"Check"+")" )
          oUrlLink:SetColor(  oUrlLink:nClrText, oUrlLink:nClrPane )
          oUrlLink:nClrOver = CLR_RED
         oUrlLink:bAction =  { || lModifica := !lModifica,  EVAL( oDlg:bResized) }  //
       Endif
     return lModifica
    //-----------------------------------------------------------//
     function PanelGreen(oFld)
      local oPanel,oBrushGreen
      Local aGradgreen := { Rgb( 225,239,219),Rgb( 225,239,219)}
      DEFINE BRUSH oBrushGreen GRADIENT aGradgreen
         oPanel:=Tpanel():New( 35, 5, 75, oFld:aDialogs[1]:nWidth-5, oFld:aDialogs[1])
         oPanel:SetBrush( oBrushGreen )
         oPanel:bPainted := { || oPanel:Box( 1,1,oPanel:nHeight-1,oPanel:nWidth-1 ) }
         return oPanel
    //--------------------------------------------------------------//
      function PanelGray(oFld)
      local oPanel,oBrushGray
      Local aGradgray := { nRgb(211,211,211),nRgb(211,211,211)}
      DEFINE BRUSH oBrushGray GRADIENT aGradgray
         oPanel:=Tpanel():New( 35, 5, 75, oFld:aDialogs[1]:nWidth-5, oFld:aDialogs[1])
         oPanel:SetBrush( oBrushGray )
         oPanel:bPainted := { || oPanel:Box( 1,1,oPanel:nHeight-1,oPanel:nWidth-1 ) }
         return oPanel
    //------------------------------------------------------------------//
       Static function PanelWhite(oFld)
      local oPanel,oBrushWhite
      Local aGradWhite := { RGB( 255, 255, 255 ),RGB( 255, 255, 255 )}
      DEFINE BRUSH oBrushWhite GRADIENT aGradWhite
         oPanel:=Tpanel():New( 35, 5, 75, 200, oFld:aDialogs[1])
         oPanel:SetBrush( oBrushWhite )
         oPanel:bPainted := { || oPanel:Box( 1,1,oPanel:nHeight-1,oPanel:nWidth-1 ) }
         return oPanel
    //------------------------------------------------------------------//
     function BoxUrllnk(oDlg)
      local oPanel,oBrushGreen
      Local aGradgreen := { Rgb( 225,239,219),Rgb( 225,239,219)}
      DEFINE BRUSH oBrushGreen GRADIENT aGradgreen
         oPanel:=Tpanel():New( 2, 2, 25, oDlg:nWidth-5, oDlg)
         oPanel:SetBrush( oBrushGreen )
         oPanel:bPainted := { || oPanel:Box( 1,1,oPanel:nHeight-1,oPanel:nWidth-1 ) }
         return oPanel
    //------------------------------------------------------------------//
   


I Tried to use bpainted as sad by Uwe but it not run
I Tried also to insert oBtnClose:Enable() when it create the urllnk object but not run also
I tried to substitute a button instead of Urllink as

@ nrow,ncol button oUrlLink Prompt "Sblocca" of oPanel size 20,12 PIXEL
oUrlLink:bAction = { || lModifica := !lModifica, EVAL( oDlg:bResized) }

the btnbmps are disabled also

Re: Problem on a Dialog, btns are disabled with Urlnk object

PostPosted: Wed Jan 08, 2020 10:55 am
by Silvio.Falconi
Now I found perhaps the error oPanelProtect:bPainted
If I rem this

oPanelProtect:bPainted := { || (  oPanelProtect:Box( 1,1,oPanelProtect:nHeight-1,oPanelProtect:nWidth-1),;
                                         FW_DrawImage( oPanelProtect, cImgProtetta,{ 5,9,25,26} , .t.,,,.f.,"LEFT", ),;
                                        oPanelProtect:Say( nRow+6, 44, cText, CLR_BLUE, , oFnt, .t.,.T., ),;
                                        UrlAction(@lModifica,oDlg,oFnt,nRow+6,213,oPanelProtect)) }


and insert this

UrlAction(@lModifica,oDlg,oFnt,nRow+6,213,oPanelProtect)

run ok but I need to write a test and show a bitmap on oPanelProtect

Re: Problem on a Dialog, btns are disabled with Urlnk object

PostPosted: Wed Jan 08, 2020 12:01 pm
by Silvio.Falconi
Good I found the error now run ok

IF !lModifica
UrlAction(@lModifica,oDlg,oFnt,nRow+6,213,oPanelProtect)
Endif
return lModifica

and then move all bpainted on function BoxUrllnk