text on tab

Post Reply
User avatar
Eoeo
Posts: 222
Joined: Mon Jun 04, 2012 12:00 pm

text on tab

Post 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 ?
User avatar
ukoenig
Posts: 3981
Joined: Wed Dec 19, 2007 6:40 pm
Location: Germany
Contact:

Re: text on tab

Post 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:
Since 1995 ( the first release of FW 1.9 )
i work with FW.
If you have any questions about special functions, maybe i can help.
User avatar
Eoeo
Posts: 222
Joined: Mon Jun 04, 2012 12:00 pm

Re: text on tab

Post by Eoeo »

good run ok!!!

but only until two tabs

If I have Many tabs it not run



pls see it


Image
User avatar
Eoeo
Posts: 222
Joined: Mon Jun 04, 2012 12:00 pm

Re: text on tab

Post 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 :)
User avatar
ukoenig
Posts: 3981
Joined: Wed Dec 19, 2007 6:40 pm
Location: Germany
Contact:

Re: text on tab

Post 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:
Since 1995 ( the first release of FW 1.9 )
i work with FW.
If you have any questions about special functions, maybe i can help.
Post Reply