Page 1 of 1

text on tab

Posted: Tue Aug 14, 2012 7:02 pm
by Eoeo
I'd Like insert a text on the left of tabs how I can make to write it on the left
I try as you can see in this picture but the text is wrote near to second tab


Image






I made
the tab
@ oApp():oDlg:nGridBottom, nSplit+2 TABS oApp():oTab ;
OPTION nOrder SIZE oApp():oWndMain:nWidth()-80, 12 PIXEL OF oApp():oDlg ;
ITEMS 'Codice','Descrizione'
ACTION ....

activate dialog on init Tab_scritta( oTab,text,nSplit)


...
STATIC FUNCTION Tab_scritta( oTab,text,nSplit)
lOCAL oPSay2
@ 0, 20 SAY oPSay2 PROMPT text OF oApp():oTab COLOR CLR_RED TRANSPARENT

return nil


Any solution ?

Re: text on tab

Posted: Tue Aug 14, 2012 9:24 pm
by ukoenig
Silvio,

To get the left text-startposition,
maybe You can calculate the needed total Tab-width like :

Image

Code: Select all

nSpace := 0
FOR n = 1 to Len( oTabs:aPrompts )
       nSpace := nSpace + GetTextWidth( 0, StrTran( oTabs:aPrompts[ n ], "&", "" ), ;
       oTabs:oBold:hFont ) + ;
       IF( Empty( oTabs:ahBitmaps[ n ] ), 0, 18 ) + 20
NEXT   
   
Msgalert( nSpace )
 
@ 0, nSpace SAY oPSay2 PROMPT text OF oApp():oTab COLOR CLR_RED TRANSPARENT

Best Regards
Uwe :lol:

Re: text on tab

Posted: Wed Aug 15, 2012 7:40 am
by Eoeo
good run ok!!!

but only until two tabs

If I have Many tabs it not run



pls see it


Image

Re: text on tab

Posted: Wed Aug 15, 2012 7:59 am
by Eoeo
I resolve with :

IF Len( oTab:aPrompts ) > 5
numtab:= 3
ELSE
numtab:= Len( oTab:aPrompts )
ENDIF

FOR n = 1 to numtab

NOW run ok with ( until ) 10 Tabs I not Know why ...eh eh eh :)

Re: text on tab

Posted: Wed Aug 15, 2012 11:32 am
by ukoenig
Silvio,

I would adjust the text from Dialog RIGHT-position.
That looks much better and the Position is always the same distance from Right.
But if You like, getting closer to the Tabs, just increase the defined Space from right.
Some calculations needed, using any Font and Text.
Without calculation, it will be very hard, to adjust the Text to the needed Position.

Image

@ 0, any Value SAY oPSay2 PROMPT text OF oApp():oTab COLOR CLR_RED TRANSPARENT

Usage :

Text := "Test String from right"
// any Value of 0, 100. The needed Size 25, 10 will be calculated with the Function.
@ 0, 100 SAY oPSay2 VAR Text SIZE 25,10 OF oApp():oTab CLR_RED PIXEL TRANSPARENT FONT oTxtFont
...
...
// 100 = defined Text-top
// 5 = the wanted Distance between Text-end and Dialog-right

ACTIVATE DIALOG oDlg CENTERED ;
ON INIT TEXT_RIGHT( oPSay2, oTxtFont, 100, oDlg:nRight - 5, cText )

RETURN NIL

Code: Select all

FUNCTION TEXT_RIGHT( oSay, oFont, nTop, nLeft, cText ) 
LOCAL hDC, nTxtWidth, nTxtHeight

hDC := oSay:GetDC()
nTxtHeight := INT(  Abs( oFont:nHeight ) ) + 10
IF oFont:lItalic = .F. // Italic
    nTxtWidth :=  INT( GettextWidth( hDC, ALLTRIM(cText), oFont:hFont, ) ) + 6
ELSE
    nTxtWidth :=  INT( GettextWidth( hDC, ALLTRIM(cText), oFont:hFont, ) ) + 10
ENDIF
oSay:ReleaseDC()
oSay:nWidth := nTxtWidth
oSay:Move( nTop, nLeft - nTxtWidth, nTxtWidth, nTxtHeight + ( nTxtHeight / 4 ), .T. ) // adjusted Height

RETURN ( NIL )
 
Best Regards
Uwe :lol: