Página 1 de 1

Como atualizar SAY na dialog ?

Enviado: 26 Jul 2024 20:35
por JoséQuintas
Já fiz todos os testes possíveis.

say:Refresh()
dialog:refresh()
say:Display()

Por enquanto, a saída foi trocar SAY BORDER por GET READONLY.
GET atualiza.

Nota: conteúdo está atualizado, já confirmei, mas a tela não atualiza de jeito nenhum, nem com WINDOW nem com DIALOG

Como atualizar SAY na dialog ?

Enviado: 30 Jul 2024 10:41
por Kapiaba
Use: VARPUT()

Código: Selecionar todos

   LOCAL cSay := ...
   LOCAL oSay

   REDEFINE SAY oSay VAR cSay ID 450   OF oDlg     ;
      COLORS CLR_BLACK, CLR_WHITE UPDATE FONT oFont

   // dispare em um VALID, ON CHANGE ou ACTION.. GET ou BUTTON...


FUNCTION Troca_SAY( oSay )

   LOCAL nTam...

   oSay:VarPut( Strzero( nTam, 3, 0 ) )
   oSay:Refresh()

RETURN( .T. )
Regards, saludos.

Como atualizar SAY na dialog ?

Enviado: 30 Jul 2024 10:53
por JoséQuintas
Ok, vou testar depois na dialog, é só na dialog que não atualiza.

Como atualizar SAY na dialog ?

Enviado: 30 Jul 2024 11:36
por Kapiaba
Teste simples com SetText(), como ja disse antes, FIVEWIN tem sempre formas difrentes de se fazer a mesma coisa, dependendo do momento.

Código: Selecionar todos

// C:\FWH\SAMPLES\TESTSAY.PRG Modified by João Santos.

#include "FiveWin.ch"

STATIC oFont, oFnt, oFont1, oFont2, oFont3

FUNCTION Main()

   LOCAL oWnd
   LOCAL oMenu

   DEFINE FONT oFont  NAME "Ms Sans Serif"  SIZE 00, -14 BOLD
   DEFINE FONT oFnt   NAME "Ms Sans Serif"  SIZE 00, -12 BOLD
   DEFINE FONT oFont1 NAME "Calibri"        SIZE 0,  -14
   DEFINE FONT oFont2 NAME "Segoe UI Light" SIZE 0,  -18
   DEFINE FONT oFont3 NAME "Segoe UI"       SIZE 0,  -26

   MENU oMenu

      MENUITEM "&Gradient" ACTION Dlg_Grad()

      MENUITEM "&Color" ACTION Dlg_Color()

      MENUITEM "&Bitmap" ACTION Dlg_Bit()

      MENUITEM "&Saida" ACTION( oWnd:End() )

   ENDMENU

   DEFINE WINDOW oWnd TITLE "Test Say" FROM 0, 0 TO 400, 800 PIXEL MENU oMenu

   ACTIVATE WINDOW oWnd CENTERED // MAXIMIZED

   RELEASE oFont, oFnt, oFont1, oFont2, oFont3

RETURN NIL

PROCEDURE Dlg_Grad

   LOCAL oDlg, oSay, oBrush, oBtn

   DEFINE BRUSH oBrush GRADIENT { { 0.4, nRGB( 75, 144, 223 ), nRGB( 41, 85, 145 ) }, ;
      { 0.6, nRGB( 24,  61, 118 ), nRGB( 50, 95, 158 ) } }

   DEFINE DIALOG oDlg TITLE "Test Say With Gradient Brush" ;
      SIZE 400, 400 PIXEL BRUSH oBrush transparent

   oDlg:lHelpIcon := .F.

   // @ 2, 2 TO 100, 100 OF oDlg PIXEL - VERSOES ANTIGAS COMO NO CLIPPER

   // VERSOES MODERNAS DO FIVEWIN:
   @ 30,  2 GROUP TO 100, 150 LABEL "Say With Gradient Brush" OF oDlg PIXEL ;
      COLOR METRO_ORANGE, CLR_WHITE TRANSPARENT FONT oFnt

   @ 50, 15 SAY oSay PROMPT "This a Test" of oDlg SIZE 50, 20 UPDATE ;
      COLOR METRO_ORANGE, CLR_WHITE PIXEL TRANSPARENT ADJUST FONT oFont3

   @ 10, 120 BUTTON oBtn PROMPT "Test Quintas" OF oDlg PIXEL ;
      ACTION( oSay:SetText( "Change Text Quintas" ), oBtn:Disable() )

   @ 130, 080 BUTTON "&Saida" OF oDlg PIXEL ;
      ACTION( oDlg:End() ) CANCEL

   ACTIVATE DIALOG oDlg CENTERED

   RELEASE BRUSH oBrush

   oBtn:Enable()  // religo o Botao

RETURN

PROCEDURE Dlg_Color

   LOCAL oDlg
   LOCAL oBrush
   LOCAL oSay

   DEFINE BRUSH oBrush COLOR CLR_CYAN

   DEFINE dialog oDlg TITLE "Test Say With Color Brush" BRUSH oBrush ;
      SIZE 400, 400 PIXEL

   oDlg:lHelpIcon := .F.

   @ 2, 2 SAY oSay PROMPT "This a Test" OF oDlg SIZE 100, 130 ;
      COLOR CLR_WHITE PIXEL TRANSPARENT UPDATE

   @ 10, 120 BUTTON "Test" ACTION oSay:SetText( "Change Text" ) PIXEL

   ACTIVATE DIALOG oDlg CENTERED

   RELEASE BRUSH oBrush

RETURN

PROCEDURE Dlg_Bit

   LOCAL oDlg, oBrush, oSay

   DEFINE BRUSH oBrush FILE "..\bitmaps\cara.bmp"

   DEFINE dialog oDlg TITLE "Test Say With bitmap Brush" BRUSH oBrush ;
      SIZE 400, 400 PIXEL

   oDlg:lHelpIcon := .F.

   @ 2, 2 SAY oSay PROMPT "This a Test" OF oDlg SIZE 100, 130 ;
      COLOR CLR_WHITE PIXEL TRANSPARENT UPDATE

   @ 10, 120 BUTTON "Test" PIXEL ACTION oSay:SetText( "Change Text" )

   ACTIVATE DIALOG oDlg CENTERED ON INIT osay:refresh()

   RELEASE BRUSH oBrush

RETURN

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.

Como atualizar SAY na dialog ?

Enviado: 30 Jul 2024 11:44
por Kapiaba
Usando SayText() VERTICAL:

Código: Selecionar todos

// C:\FWH\SAMPLES\SAYBOX.PRG

#include "FiveWin.ch"

/*
FUNCTION Main()

   LOCAL oWnd, oSay[ 3 ], oFont[ 2 ]

   DEFINE FONT oFont[ 1 ] NAME "ARIAL" SIZE 0, 20 BOLD NESCAPEMENT 900

   DEFINE WINDOW oWnd ;// FROM 1,5 TO 20,65 ;
      TITLE "Testing SAY With Design"

   @ 180, 30 SAY osay[ 2 ] PROMPT "" OF oWnd COLOR 0 SIZE 80, 200 ;
      FONT oFont[ 1 ]   design  UPDATE pixel

   ACTIVATE WINDOW oWnd MAXIMIZED          ;
      ON INIT  oSay[ 2 ]:SAY( 180, 30, "THIS DONT SHOW", CLR_BLACK, CLR_YELLOW, oFont[ 1 ], .T., )  ;
      ON PAINT osay[ 2 ]:SAY( 180, 30, "THIS DONT SHOW", CLR_BLACK, CLR_YELLOW, oFont[ 1 ], .F., )

RETURN NIL
*/

/*
#include "fivewin.ch"

#define SS_CENTERIMAGE      0x00000200

FUNCTION SayTestDlg()

   LOCAL oDlg, oSay

   DEFINE DIALOG oDlg TRUEPIXEL TITLE "SAY VCENTER"
      @ 20, 20 SAY oSay PROMPT "Center" SIZE 200, 100 PIXEL OF oDlg  CENTER

   IF Empty( oSay:hWnd )
      oSay:nStyle := nOr( oSay:nStyle, SS_CENTERIMAGE  ) // dialogs
   ELSE
      oSay:WinStyle( SS_CENTERIMAGE, .T. ) // windows, etc
   ENDIF

   ACTIVATE DIALOG oDlg CENTERED ;
      ON PAINT oDlg:Box( oSay:nTop - 1, oSay:nLeft - 1, oSay:nBottom + 1, oSay:nRight + 1 )

RETURN NIL
*/

#include "FiveWin.ch"

FUNCTION SayTest()

   LOCAL oDlg, oSay, oFont

   DEFINE FONT oFont NAME "Segoe UI" SIZE 0, - 40 NESCAPEMENT 900

   DEFINE DIALOG oDlg SIZE 600, 700 PIXEL TRUEPIXEL

   ACTIVATE DIALOG oDlg CENTERED ;
      ON PAINT ( oDlg:SayText( "Vertical Text" + CRLF + "Second Line", ;
      { 20, 20, 300, 120 }, NIL, oFont ), ;
      oDlg:Box( 20, 20, 300, 120 ) )


   RELEASE FONT ofont

RETURN NIL
Regards, saludos.

Como atualizar SAY na dialog ?

Enviado: 30 Jul 2024 11:48
por Kapiaba
Mudando a COR do SAY em tempo REAL:

Código: Selecionar todos

// C:\FWH\SAMPLES\SAYCOR3.PRG

#Include "FiveWin.ch"

FUNCTION CambiaClrSay()

   LOCAL oDlg, oFont, oBold, oSay, cClr
   LOCAL nKilos := 2000
   LOCAL bColor :=  {|| If( nKilos <= 50, cClr := CLR_HBLUE,;
                        If( nKilos >= 51 .and. nKilos <=500, cClr := CLR_GREEN,;
                        If( nKilos >= 501 .and. nKilos <=1000, cClr := CLR_HRED,))),;
                            oSay:SetColor(cClr,CLR_YELLOW) ,;
                            oSay:Refresh() }

   DEFINE FONT oFont NAME "TAHOMA"  SIZE 0,-12
   DEFINE FONT oBold NAME "VERDANA" SIZE 0,-32 BOLD

   DEFINE DIALOG oDlg SIZE 400,150 PIXEL TRUEPIXEL FONT oFont ;
          TITLE "SAY COLOR TEST"

   @ 20,100 SAY oSay PROMPT nKilos PICTURE "9999" ;
            SIZE 200,36 PIXEL OF oDlg FONT oBold CENTER

   @ 80, 20 BUTTON   "50" SIZE 100,30 PIXEL OF oDlg ;
      ACTION ( nKilos :=   50, Eval(bColor) )

   @ 80,150 BUTTON  "500" SIZE 100,30 PIXEL OF oDlg ;
      ACTION ( nKilos :=  500, Eval(bColor) )

   @ 80,280 BUTTON "1000" SIZE 100,30 PIXEL OF oDlg ;
      ACTION ( nKilos := 1000, Eval(bColor) )

   ACTIVATE DIALOG oDlg CENTERED

   RELEASE FONT oFont, oBold

RETURN NIL
Regards, saludos.

Como atualizar SAY na dialog ?

Enviado: 30 Jul 2024 12:38
por Kapiaba
Dúvidas, pergunte, A MAIOR SUPER POTÊNCIA DO FIVEWIN BRASIL está ao seu DISPOR. kkkkkkkkkkkkkkkkkkkkkkkkkk
Brincadeira Mister Quintas.

Código: Selecionar todos

// C:\FWH\SAMPLES\TROCASAY.PRG by Joao Santos.

#include "FiveWin.ch"

STATIC oFont, oFnt, oFont1, oFont2, oFont3, oSay, lLigaBtn := .F.

FUNCTION Main()

   LOCAL oDlg, oBtn, oBtn2, oBtn3, oBrush, cSay := "EU SOU O SAY DO QUINTAS!"

   SkinButtons() // cores no botao

   DEFINE FONT oFont  NAME "Ms Sans Serif"  SIZE 00, -14 BOLD
   DEFINE FONT oFnt   NAME "Ms Sans Serif"  SIZE 00, -12 BOLD
   DEFINE FONT oFont1 NAME "Calibri"        SIZE 0,  -14
   DEFINE FONT oFont2 NAME "Segoe UI Light" SIZE 0,  -18
   DEFINE FONT oFont3 NAME "Segoe UI"       SIZE 0,  -26

   DEFINE BRUSH oBrush COLOR METRO_CYAN // CLR_CYAN

   DEFINE DIALOG oDlg TITLE "Trocar Say em Tempo Real" BRUSH oBrush ;
      SIZE 550, 400 PIXEL

   oDlg:lHelpIcon := .F.

   @ 080, 10 SAY oSay VAR cSay OF oDlg SIZE 300, 20 FONT oFont3 ;
      COLOR METRO_ORANGE, CLR_WHITE PIXEL TRANSPARENT UPDATE

   @ 10, 120 BUTTONBMP oBtn PROMPT "&Trocar SAY" OF oDlg SIZE 70, 16  ;
      PIXEL BITMAP "..\bitmaps\16x16\floppy.bmp" TEXTRIGHT            ;
      TOOLTIP "Trocar SAY em Tempo Real by Quintas" FONT oFont2       ;
      ACTION ( TROCAR_SAY_EM_TEMPO_REAL() )

   @ 35, 120 BUTTONBMP oBtn2 PROMPT "&Voltar SAY" OF oDlg SIZE 70, 16 ;
      PIXEL BITMAP "..\bitmaps\16x16\Open.bmp" TEXTRIGHT              ;
      TOOLTIP "Voltar SAY em Tempo Real by Quintas" FONT oFont2       ;
      ACTION ( VOLTAR_SAY_EM_TEMPO_REAL() ) WHEN( lLigaBtn )

   @ 150, 100 BUTTONBMP oBtn3 PROMPT "&Saida" OF oDlg SIZE 50, 16     ;
      PIXEL BITMAP "..\bitmaps\16x16\exit.bmp" TEXTRIGHT              ;
      TOOLTIP "Saida - Exit - Cancelar" FONT oFont                    ;
      ACTION ( oDlg:End() ) CANCEL

   ACTIVATE DIALOG oDlg CENTERED

   /*
   RELEASE BRUSH oBrush
   RELEASE oFont, oFnt, oFont1, oFont2, oFont3
   */

   // .PPO:
   IIF( HB_ISOBJECT( oBrush ), oBrush:End(), ) ; oBrush := nil

   __MVXRelease( "oFont", "oFnt", "oFont1", "oFont2", "oFont3" )

RETURN NIL

FUNCTION TROCAR_SAY_EM_TEMPO_REAL()

   LOCAL QuintasSay := "EU SOU O NOVO SAY DO QUINTAS: " + Time()

   oSay:VARPUT( QuintasSay )
   oSay:Refresh()

   lLigaBtn := .T.

RETURN NIL

FUNCTION VOLTAR_SAY_EM_TEMPO_REAL()

   LOCAL QuintasSay := "EU SOU O SAY DO QUINTAS!"

   oSay:VARPUT( QuintasSay )
   oSay:Refresh()

   lLigaBtn := .F.

RETURN NIL

// FIN / END - kapiabafwh@gmail.com
Regards, saludos.

Como atualizar SAY na dialog ?

Enviado: 30 Jul 2024 13:51
por JoséQuintas
Kapiaba escreveu:Teste simples com SetText(), como ja disse antes, FIVEWIN tem sempre formas difrentes de se fazer a mesma coisa, dependendo do momento.
Pra mim tá mais pra falta de padronização, ou pra deixar por conta do usuário resolver os pipinos da lib.
Mas tudo bem... fazer o que... pelo menos resolveu.
Agradecido.