Como atualizar SAY na dialog ?

Discussão sobre a biblioteca Fivewin - O Clipper para Windows.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como atualizar SAY na dialog ?

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Como atualizar SAY na dialog ?

Mensagem 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.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como atualizar SAY na dialog ?

Mensagem por JoséQuintas »

Ok, vou testar depois na dialog, é só na dialog que não atualiza.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Como atualizar SAY na dialog ?

Mensagem 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.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Como atualizar SAY na dialog ?

Mensagem 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.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Como atualizar SAY na dialog ?

Mensagem 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.
Kapiaba
Colaborador
Colaborador
Mensagens: 1908
Registrado em: 07 Dez 2012 16:14
Localização: São Paulo
Contato:

Como atualizar SAY na dialog ?

Mensagem 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.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Como atualizar SAY na dialog ?

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Responder