FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour text on tab
Posts: 222
Joined: Mon Jun 04, 2012 12:00 PM
text on tab
Posted: Tue Aug 14, 2012 07:02 PM
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









I made
the tab
@ oApp():nGridBottom, nSplit+2 TABS oApp():oTab ;
OPTION nOrder SIZE oApp():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 ?
Posts: 4043
Joined: Wed Dec 19, 2007 06:40 PM
Re: text on tab
Posted: Tue Aug 14, 2012 09:24 PM
Silvio,

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



Code (fw): Select all Collapse
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 :-)
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.
Posts: 222
Joined: Mon Jun 04, 2012 12:00 PM
Re: text on tab
Posted: Wed Aug 15, 2012 07:40 AM
good run ok!!!

but only until two tabs

If I have Many tabs it not run



pls see it


Posts: 222
Joined: Mon Jun 04, 2012 12:00 PM
Re: text on tab
Posted: Wed Aug 15, 2012 07:59 AM

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 :)

Posts: 4043
Joined: Wed Dec 19, 2007 06:40 PM
Re: text on tab
Posted: Wed Aug 15, 2012 11:32 AM
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.



@ 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 (fw): Select all Collapse
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 :-)
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.

Continue the discussion