Jump to content
Fivewin Brasil

Justificar texto a direita


Marca

Recommended Posts

Bom dia a Todos

 

DEFINE DIALOG oDlgBol RESOURCE 'MINHATELA TITLE "TESTE DE ALINHAMENTO DE TEXTO " FONT meufonte BRUSH meubrush TRANSPARENT


   REDEFINE BITMAP oBmpFx     ID 6000 RESOURCE "BANNER"   OF oDlgBol ADJUST TRANSPARENT 

   Quero escrever um texto que fique alinhado em cima deste bitmap sendo que da direita pra esquerda

   com o say e o sensitive say funcionam sendo q. ambos dão problemas em determinadas situações

   o say caso eu coloque um brush na tela ela não aparece o texto , ele mostra o Brush

   O sensitivesay deu problema com alguns temas e com o Windows server

   REDEFINE SAY oSayBol[7] PROMPT 'Texto que quero que saia alinhado a direita' ID 6001  OF oDlgBol FONT oPub:oFontBaner COLOR CLR_WHITE ALIGN RIGHT TRANSPARENT 

   Com isso encontrei este exemplo que escreve em cima do bitmap e resolve o problema  sendo que quero calcular a posição da coluna automaticamente e não colocar ela fixa

para que se mudar a resolução não de problema:

Como calcular  nCalculoPosColuna  de acordo com o texto q. eu enviar ??

O Gilmer me sugeriu utilizar a    //GetTextWidth( <hDC>, <cString>, [<hFont>] ) --> nPixelWidth
Sendo q. já tentei e não esta funcionando conforme a função abaixo q. inicializei no on init 

ACTIVATE DIALOG oDlgBol CENTERED ;
         ON INIT ( MontaSayTela ( oBmpFx , cTextoTela , oDlgBol )  )

FUNCTION MontaSayTela ( oBmpSay , cTextoSay , oDlg )
LOCAL nCalculoPos

IF oBmpSay != NIL

    //     0         316       813           581        151
    ? oDlg:nLeft,oDlg:nRight, oDlg:nWidth ,oDlg:nHeight ,oDlg:nBottom
 // Valores  

*   ? oBmpSay:nLeft,oBmpSay:nRight, oBmpSay:nWidth ,oBmpSay:nHeight 
   //      0              0              10               40                            0

*   nCalculoPos  := GetTextWidth(0,Replicate("B",Max(oDlg:nHeight,len(cTextoSay))+1), oPub:oFontBaner)

   oBmpSay:bPainted := {|| oBmpSay:Say( 1   , nCalculoPos , cTextoSay , CLR_WHITE,        , oPub:oFontBaner, .T.   ,.T.         ,              )}
   oBmpSay:Refresh()

ENDIF

 

Alguém saberia como resolver ?

 

 

Link to comment
Share on other sites

Bom Dia,

    Você precisa pegar o comprimento da janela em pixel e diminuir o comprimento do texto, assim você terá a posição, ex.

   Comprimento da janela em pixel = 500
   Comprimento do texto (GetTextWidth) = 100

   Posição inicial da coluna = 400 (assim ficará alinhado a direita)

 

 

 

 

 

Link to comment
Share on other sites

Assim Gilmer?


#include "FiveWin.Ch"
	FUNCTION Main()
	   LOCAL oFont, oDlg
   LOCAL oDat1,cDat1:='Observaciones'
   LOCAL oDat2,cDat2:='Datos de la cotización'
	   DEFINE FONT oFont NAME "ARIAL" SIZE 0,-20 BOLD
	   DEFINE DIALOG oDlg FROM 0,0 TO 300,450 PIXEL
	   oDlg:lHelpIcon := .F.
	   @ 1,  30 SAY oDat1 VAR cDat1 OF oDlg FONT oFont PIXEL SIZE GetTextWidth(0,cDat1,oFont),20 / 2
	   @ 12, 30 SAY oDat2 VAR cDat2 OF oDlg FONT oFont PIXEL SIZE GetTextWidth(0,cDat2,oFont),20 / 2
	   ACTIVATE DIALOG oDlg CENTERED
	   oFont:End()
	RETURN NIL


 

Link to comment
Share on other sites

 

Bom Dia,

    Você precisa pegar o comprimento da janela em pixel e diminuir o comprimento do texto, assim você terá a posição, ex.

   Comprimento da janela em pixel = 500
   Comprimento do texto (GetTextWidth) = 100

   Posição inicial da coluna = 400 (assim ficará alinhado a direita)

Já fiz isso e não funcionou

   * nCalculoPos := (oDlg:nWidth-GetTextWidth(0, cTextoSay ,oPub:oFontBaner)) 

     Tentei tbem calculando o bmp

   * nCalculoPos := (oBmp:nWidth-GetTextWidth(0, cTextoSay ,oPub:oFontBaner)) 
   Pra funcionar tive q. fazer assim:
    nCalculoPos :=    oDlg:nWidth - Len( cTextoSay )
Oq. não faz sentido.

 

 

 

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...