Page 1 of 2

PROMT on button

Posted: Wed May 21, 2008 6:45 pm
by Rick Lipkin
To All

Sorry for asking a dumb question .. never had to do this before .. based on a logical condition to change the text on the button .. here is the code :

DO CASE
CASE cISCHARTER = .T. // found a charter document
cCHPROMPT := " This Projects CHARTER [read me]"
OTHERWISE
cCHPROMPT := " This Projects CHARTER"
ENDCASE

REDEFINE BUTTON oBTN5 ID 138 PROMPT cCHPROMPT of oWORK ; // charter
ACTION ( _Chimport( oRsProj, cPROJECTEID, cMODE, oWork ))


Application
===========
Path and name: C:\FOX\PMOSQL\PmoW32.Exe (32 bits)
Size: 1,717,248 bytes
Time from start: 0 hours 0 mins 3 secs
Error occurred at: 05/21/2008, 14:31:54
Error description: Error BASE/1004 Message not found: TBUTTON:DEFCONTROL

Stack Calls
===========
Called from: => TBUTTON:ERROR(179)
Called from: tobject.prg => (b)HBOBJECT:HBOBJECT(105)
Called from: => TBUTTON:MSGNOTFOUND(0)
Called from: BUTTON.PRG => TBUTTON:DEFCONTROL(167)
Called from: BUTTON.PRG => TBUTTON:REDEFINE(0)
Called from: PROJVIEW.PRG => _PROJVIEW(350)
Called from: PROJBROW.PRG => (b)_PBROW(200)
Called from: CONTROL.PRG => TCONTROL:LDBLCLICK(0)
Called from: WBROWSE.PRG => TWBROWSE:LDBLCLICK(0)
Called from: WINDOW.PRG => TWINDOW:HANDLEEVENT(0)
Called from: CONTROL.PRG => TWBROWSE:HANDLEEVENT(0)
Called from: WINDOW.PRG => _FWH(0)
Called from: => WINRUN(0)
Called from: WINDOW.PRG => TMDIFRAME:ACTIVATE(0)
Called from: MAIN.PRG => MAIN(234)


Any clues ?? using a rather old version or FiveWin .. fwh27 ..

Rick Lipkin
SC Dept of Health, USA

Re: PROMT on button

Posted: Wed May 21, 2008 8:04 pm
by Enrico Maria Giordano

Code: Select all

#include "Fivewin.ch"


FUNCTION MAIN()

    LOCAL oDlg

    LOCAL oBtn

    DEFINE DIALOG oDlg

    @ 3, 1 BUTTON oBtn;
           PROMPT "&Original";
           ACTION oBtn:SetText( "Changed" )

    ACTIVATE DIALOG oDlg;
             CENTER

    RETURN NIL
EMG

Posted: Wed May 21, 2008 8:24 pm
by Rick Lipkin
Enrico

Trying to do this on a redefine .. looking at FiveWin.ch .. 'prompt' is a parameter on the Redefine Button :cry:

I just re-newed my FTDN .. perhaps my old fwh27 has a few 'moths' in it ..

Thanks
Rick Lipkin

Posted: Wed May 21, 2008 8:52 pm
by Antonio Linares
Rick,

We have just processed your order, thanks!

Try it this way:
REDEFINE BUTTON oBTN5 PROMPT cCHPROMPT ID 138 of oWORK ;
ACTION ( _Chimport( oRsProj, cPROJECTEID, cMODE, oWork ))

It looks as a preprocessor issue with the compiler version that you are using. Check the resulting PPO file

Posted: Wed May 21, 2008 9:16 pm
by Rick Lipkin
Antonio

HMMMM .. that worked .. just had the PROMPT in the wrong place .. Another question .. I would like to turn the PROMPT ( text ) RED if the logical is .f. .. did not see a COLOR clause Button option .. is this doable ??

Thanks
Rick Lipkin

Posted: Wed May 21, 2008 9:20 pm
by Antonio Linares
Rick,

Try this:
oButton:SetColor( "R+/W" ) // or use a pair of RGB colors

You may be able to change the text color only

Posted: Wed May 21, 2008 9:33 pm
by Rick Lipkin
Antonio

Must be doing something wrong .. getting an error that setcolor is NIL

DO CASE
CASE cISCHARTER = .T. // found a charter document
cCHPROMPT := "This Projects CHARTER [read me]"
oBtn5:SetColor( "G+/W" )
OTHERWISE
cCHPROMPT := "This Projects CHARTER"
oBtn5:SetColor( "R+/W" )
ENDCASE

REDEFINE BUTTON oBTN5 PROMPT cCHPROMPT ID 138 of oWORK ;
ACTION ( _Chimport( oRsProj, cPROJECTEID, cMODE, oWork ))

Application
===========
Path and name: C:\FOX\PMOSQL\PmoW32.Exe (32 bits)
Size: 1,718,272 bytes
Time from start: 0 hours 0 mins 3 secs
Error occurred at: 05/21/2008, 17:30:08
Error description: Error BASE/1004 Class: 'NIL' has no exported method: SETCOLOR
Args:
[ 1] = C G+/W

Stack Calls
===========
Called from: => SETCOLOR(0)
Called from: PROJVIEW.PRG => _PROJVIEW(342)
Called from: PROJBROW.PRG => (b)_PBROW(200)
Called from: CONTROL.PRG => TCONTROL:LDBLCLICK(0)
Called from: WBROWSE.PRG => TWBROWSE:LDBLCLICK(0)
Called from: WINDOW.PRG => TWINDOW:HANDLEEVENT(0)
Called from: CONTROL.PRG => TWBROWSE:HANDLEEVENT(0)
Called from: WINDOW.PRG => _FWH(0)
Called from: => WINRUN(0)
Called from: WINDOW.PRG => TMDIFRAME:ACTIVATE(0)
Called from: MAIN.PRG => MAIN(234)

Must be one of my 'stupid' days .. sorry :?

Rick Lipkin

Posted: Wed May 21, 2008 9:37 pm
by Antonio Linares
Rick,

You have to call oBtn:SetColor( ... ) after you REDEFINE it

If you do it before, then oBtn is still nil

Posted: Wed May 21, 2008 9:53 pm
by Rick Lipkin
Antonio

Did not get an error .. but no change in color for the oBtn5 button ..

DO CASE
CASE cISCHARTER = .T. // found a charter document
cCHPROMPT := "This Projects CHARTER [read me]"+space(12)
OTHERWISE
cCHPROMPT := "This Projects CHARTER"+space(40)
ENDCASE

REDEFINE BUTTON oBTN5 PROMPT cCHPROMPT ID 138 of oWORK ;
ACTION ( _Chimport( oRsProj, cPROJECTEID, cMODE, oWork ))

DO CASE
CASE cISCHARTER = .T. // found a charter document
oBtn5:SetColor( "G+/W" )
oBTN5:ReFresh()
SysReFresh()
OTHERWISE
oBtn5:SetColor( "R+/W" )
oBtn5:ReFresh()
SysReFresh()
ENDCASE

Rick Lipkin

Posted: Wed May 21, 2008 10:09 pm
by Antonio Linares
Rick,

Please try it again from the ON INIT clause of the dialog:

ACTIVATE DIALOG oDlg ;
ON INIT oBtn5:SetColor( "R+/W" )

Posted: Wed May 21, 2008 10:29 pm
by Rick Lipkin
Antonio

Been one of those days .. just got Sylvia's FTDN renewal notice and I have downloaded the latest FWH .. going to wait til tomorrow to update ..

Unfortunitly .. the ON INIT clause did not change any color on oBtn5 .. did not error .. just did not change the color ..

DO CASE
CASE lISCHARTER = .T. // found a charter document
cCHPROMPT := "This Projects CHARTER [read me]"+space(10)
OTHERWISE
cCHPROMPT := "This Projects CHARTER"+space(40)
ENDCASE

REDEFINE BUTTON oBTN5 PROMPT cCHPROMPT ID 138 of oWORK ;
ACTION ( _Chimport( oRsProj, cPROJECTEID, cMODE, oWork ))

/*
DO CASE
CASE lISCHARTER = .T. // found a charter document
oBtn5:SetColor( "G+/W" )
oBTN5:ReFresh()
SysReFresh()
OTHERWISE
oBtn5:SetColor( "R+/W" )
oBtn5:ReFresh()
SysReFresh()
ENDCASE
*/

REDEFINE BUTTON oBTN6 ID 115 of oWORK // misc documents


ACTIVATE DIALOG oWORK ;
ON INIT( if( cMODE = "V", (oBTN7:Hide(), oBTN8:Hide(), oBtn9:Hide()), ),;
if( lISCHARTER = .T., oBtn5:SetColor( "G+/W" ),oBtn5:SetColor( "R+/W" ) ))

Posted: Wed May 21, 2008 10:44 pm
by Antonio Linares
Rick,

We are going to do some tests here.

You may need to use a TBtnBmp instead of a TButton

Posted: Wed May 21, 2008 10:47 pm
by Rick Lipkin
Antonio

Thanks a MILLION !!

Posted: Wed May 21, 2008 11:04 pm
by Antonio Linares
Rick,

Here you have a working sample using the Class TBtnBmp:

test.prg

Code: Select all

#include "FiveWin.ch"

function Main()

   local oDlg, oBtn

   DEFINE DIALOG oDlg RESOURCE "Test"

   REDEFINE BTNBMP oBtn PROMPT "A Test" ID 100 OF oDlg ACTION MsgInfo( "Click" )
   
   oBtn:SetColor( "R+/W" )
   
   ACTIVATE DIALOG oDlg CENTERED

return nil
test.rc

Code: Select all

test DIALOG 76, 71, 194, 119
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Colors on Buttons"
FONT 8, "MS Sans Serif"
{
 CONTROL "A Test", 100, "TBtnBmp", 0 | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 70, 62, 50, 22
}
Image

Posted: Wed May 21, 2008 11:44 pm
by Rick Lipkin
Antonio

Worked like a CHAMP !! .. 8:00 pm here .. time for me to go home !!

Thank you VERY Much

Rick Lipkin