Page 1 of 1
Treview Help
Posted: Mon Aug 04, 2008 2:17 pm
by Horizon
Hi,
I have changed FWH/Samples/TestTre2.prg like below.
When the focus is Page-1, The Test1 function could not be called. But "xBase & OOPS" that is under Page-1 calls the Test1.
How Can I solve my problem.
Thanks,
Code: Select all
// -- testtre2.prg
// WinAPI Trees (SysTreeView32) !!!
// Window with a Tree, a Vertical Splitter & a resizable dialog
#include "FiveWin.ch"
#include "Splitter.ch"
//----------------------------------------------------------------------------//
function Main()
local oWnd, oDlg, oBar, oTree, oItem1, oItem2, oImageList, oSplit
DEFINE WINDOW oWnd FROM 3, 6 TO 20, 70 ;
TITLE "Welcome to " + FWVERSION COLOR "N/W"
oTree := TTreeView():New( 2, 0, oWnd )
oTree:bChanged := {|oTree,oItem| ;
oWnd:SetText( If( oTree:GetSelected():GetParent() != nil,;
oTree:GetSelected():GetParent():cPrompt + " + ", "" ) + ;
oTree:GetSelText() ), ;
oItem := oTree:GetSelected(), ;
If( oItem # nil .and. ValType( oItem:cargo ) == "B", Eval( oItem:cargo ), nil ) }
oItem1 := oTree:Add( "Page - 1", 1, {|| Test1( oDlg )})
oItem1:Add( "xBase & OOPS", 1, {|| Test1( oDlg ) } )
oItem2 := oTree:Add( "Page - 2", 1, {|| Test2( oDlg )})
DEFINE DIALOG oDlg OF oWnd ;
STYLE nOR( WS_CHILD, WS_VISIBLE ) ;
@ 29, 200 SPLITTER oSplit ;
VERTICAL _3DLOOK ;
PREVIOUS CONTROLS oTree ;
HINDS CONTROLS oDlg ;
SIZE 4, 200 PIXEL ;
LEFT MARGIN 20 ;
RIGHT MARGIN 25 ;
OF oWnd
ACTIVATE DIALOG oDlg NOMODAL
ACTIVATE WINDOW oWnd ;
ON INIT ( oDlg:Move( 0, oSplit:nRight, oWnd:nWidth, oWnd:nHeight, .f. ), ;
oWnd:bResized := {|| oSplit:AdjClient(), oDlg:SetSize( oWnd:nWidth - oTree:nWidth - oSplit:nWidth - 8, oSplit:nHeight - 1, .t. ) }, ;
oDlg:refresh(.t.), oTree:refresh(.t.) ) // required so that objects around splitter paint correctly on init
oImageList:End()
return nil
//----------------------------------------------------------------------------//
static function CleanSlate( oDlg )
while Len( oDlg:aControls ) > 0
ATail( oDlg:aControls ):end()
end
return nil
//----------------------------------------------------------------------------//
static function Test1( oDlg )
Local oGet1, oGet2
Local cGet1 := PadR( "Type something!", 50 )
Local cGet2 := PadR( "Type something else!", 50 )
CleanSlate( oDlg )
@ 5,10 Say "Some data:" Of oDlg Pixel
@ 3,70 Get oGet1 Var cGet1 Of oDlg Pixel ;
Size 150,22
@ 30,10 Say "Other data:" Of oDlg Pixel
@ 28,70 Get oGet2 Var cGet2 Of oDlg Pixel ;
Size 150,22
Return nil
//----------------------------------------------------------------------------//
static function Test2( oDlg )
Local oCbx1, oChk1
Local cCbx1 := "", lChk1 := .t.
CleanSlate( oDlg )
@ 5,10 Say "Choose:" Of oDlg Pixel
@ 3,70 Combobox oCbx1 Var cCbx1 Of oDlg Pixel ;
Items { "Uno", "Dos", "Tres", "Mambo!" } ;
Size 80,18
@ 28,70 Checkbox oChk1 Var lChk1 Of oDlg Pixel ;
Prompt "Tick tock tick tock" ;
Size 150,22
Return nil
//----------------------------------------------------------------------------//
procedure AppSys // Xbase++ requirement
return
//----------------------------------------------------------------------------// 9
Posted: Mon Aug 04, 2008 6:20 pm
by Antonio Linares
Hakan,
Try it this way. Here it is working fine:
Code: Select all
#include "FiveWin.ch"
#include "Splitter.ch"
//----------------------------------------------------------------------------//
function Main()
local oWnd, oDlg, oBar, oTree, oItem1, oItem2, oImageList, oSplit
DEFINE WINDOW oWnd FROM 3, 6 TO 20, 70 ;
TITLE "Welcome to " + FWVERSION COLOR "N/W"
oTree := TTreeView():New( 2, 0, oWnd )
oTree:bChanged := { | oItem | oItem := oTree:GetSelected(), If( ValType( oItem:Cargo ) == "B", Eval( oItem:Cargo ),) }
oItem1 := oTree:Add( "Page - 1", 1 )
oItem1:Cargo = {|| CleanSlate( oDlg )}
oItem1:Add( "xBase & OOPS", 1 ):Cargo = {|| Test1( oDlg ) }
oTree:Add( "Page - 2", 1 ):Cargo = {|| Test2( oDlg ) }
DEFINE DIALOG oDlg OF oWnd ;
STYLE nOR( WS_CHILD, WS_VISIBLE ) ;
@ 29, 200 SPLITTER oSplit ;
VERTICAL _3DLOOK ;
PREVIOUS CONTROLS oTree ;
HINDS CONTROLS oDlg ;
SIZE 4, 200 PIXEL ;
LEFT MARGIN 20 ;
RIGHT MARGIN 25 ;
OF oWnd
ACTIVATE DIALOG oDlg NOMODAL
ACTIVATE WINDOW oWnd ;
ON INIT ( oDlg:Move( 0, oSplit:nRight, oWnd:nWidth, oWnd:nHeight, .f. ), ;
oWnd:bResized := {|| oSplit:AdjClient(), oDlg:SetSize( oWnd:nWidth - oTree:nWidth - oSplit:nWidth - 8, oSplit:nHeight - 1, .t. ) }, ;
oDlg:refresh(.t.), oTree:refresh(.t.) ) // required so that objects around splitter paint correctly on init
oImageList:End()
return nil
//----------------------------------------------------------------------------//
static function CleanSlate( oDlg )
while Len( oDlg:aControls ) > 0
ATail( oDlg:aControls ):end()
end
return nil
//----------------------------------------------------------------------------//
static function Test1( oDlg )
Local oGet1, oGet2
Local cGet1 := PadR( "Type something!", 50 )
Local cGet2 := PadR( "Type something else!", 50 )
CleanSlate( oDlg )
@ 5,10 Say "Some data:" Of oDlg Pixel
@ 3,70 Get oGet1 Var cGet1 Of oDlg Pixel ;
Size 150,22
@ 30,10 Say "Other data:" Of oDlg Pixel
@ 28,70 Get oGet2 Var cGet2 Of oDlg Pixel ;
Size 150,22
Return nil
//----------------------------------------------------------------------------//
static function Test2( oDlg )
Local oCbx1, oChk1
Local cCbx1 := "", lChk1 := .t.
CleanSlate( oDlg )
@ 5,10 Say "Choose:" Of oDlg Pixel
@ 3,70 Combobox oCbx1 Var cCbx1 Of oDlg Pixel ;
Items { "Uno", "Dos", "Tres", "Mambo!" } ;
Size 80,18
@ 28,70 Checkbox oChk1 Var lChk1 Of oDlg Pixel ;
Prompt "Tick tock tick tock" ;
Size 150,22
Return nil
//----------------------------------------------------------------------------//
Posted: Tue Aug 05, 2008 10:40 am
by Horizon
Thanks Antonio,
It is working.
I have changed the treview width 200 to 100. treview is ok but the dialogs width did not changed.
Also I have added buttons to dialogs, but I could not find where should i set the new positions of buttons. Because buttons has added dynamicly and Window on resize does not know the variables.
Also I want to put a bevel above of buttons. Is there any class like bevel.
Thanks,
My last source :
Code: Select all
#include "FiveWin.ch"
#include "Splitter.ch"
//----------------------------------------------------------------------------//
function Main()
local oWnd, oDlg, oBar, oTree, oItem1, oItem2, oImageList, oSplit
DEFINE WINDOW oWnd FROM 3, 6 TO 20, 70 ;
TITLE "Welcome to " + FWVERSION COLOR "N/W"
oTree := TTreeView():New( 2, 0, oWnd )
oTree:bChanged := { | oItem | oItem := oTree:GetSelected(), If( ValType( oItem:Cargo ) == "B", Eval( oItem:Cargo ),) }
oTree:Add( "Page - 1", 1 ):Cargo = {|| Test1( oDlg ) }
oTree:Add( "Page - 2", 1 ):Cargo = {|| Test2( oDlg ) }
DEFINE DIALOG oDlg OF oWnd ;
STYLE nOR( WS_CHILD, WS_VISIBLE ) ;
@ 29, 100 SPLITTER oSplit ;
VERTICAL _3DLOOK ;
PREVIOUS CONTROLS oTree ;
HINDS CONTROLS oDlg ;
SIZE 4, 100 PIXEL ;
LEFT MARGIN 20 ;
RIGHT MARGIN 25 ;
OF oWnd
ACTIVATE DIALOG oDlg NOMODAL
ACTIVATE WINDOW oWnd ;
ON INIT Wnd_Init(oWnd, oDlg, oSplit, oTree)
oImageList:End()
return nil
//----------------------------------------------------------------------------//
static function Wnd_Init(oWnd, oDlg, oSplit, oTree)
oDlg:Move( 0, oSplit:nRight, oWnd:nWidth, oWnd:nHeight, .f. )
oWnd:bResized := {|| Wnd_Resize(oWnd, oDlg, oSplit, oTree) }
oDlg:refresh(.t.)
oTree:refresh(.t.) // required so that objects around splitter paint correctly on init
return .t.
//----------------------------------------------------------------------------//
static function Wnd_Resize(oWnd, oDlg, oSplit, oTree)
oSplit:AdjClient()
oDlg:SetSize( oWnd:nWidth - oTree:nWidth - oSplit:nWidth - 8, oSplit:nHeight - 1,.t.)
return .t.
//----------------------------------------------------------------------------//
static function CleanSlate( oDlg )
while Len( oDlg:aControls ) > 0
ATail( oDlg:aControls ):end()
end
return nil
//----------------------------------------------------------------------------//
static function Test1( oDlg )
Local oGet1, oGet2, oBtnOK, oBtnCancel
Local cGet1 := PadR( "Type something!", 50 )
Local cGet2 := PadR( "Type something else!", 50 )
CleanSlate( oDlg )
@ 5,10 Say "Some data:" Of oDlg Pixel
@ 3,70 Get oGet1 Var cGet1 Of oDlg Pixel ;
Size 150,22
@ 30,10 Say "Other data:" Of oDlg Pixel
@ 28,70 Get oGet2 Var cGet2 Of oDlg Pixel ;
Size 150,22
@ 100, 10 BUTTON oBtnOK PROMPT "OK" Of oDlg Pixel Size 100,25
@ 100,120 BUTTON oBtnCancel PROMPT "Cancel" Of oDlg Pixel Size 100,25
Return nil
//----------------------------------------------------------------------------//
static function Test2( oDlg )
Local oCbx1, oChk1
Local cCbx1 := "", lChk1 := .t.
CleanSlate( oDlg )
@ 5,10 Say "Choose:" Of oDlg Pixel
@ 3,70 Combobox oCbx1 Var cCbx1 Of oDlg Pixel ;
Items { "Uno", "Dos", "Tres", "Mambo!" } ;
Size 80,18
@ 28,70 Checkbox oChk1 Var lChk1 Of oDlg Pixel ;
Prompt "Tick tock tick tock" ;
Size 150,22
@ 100, 10 BUTTON oBtnOK PROMPT "OK" Of oDlg Pixel Size 100,25
@ 100,120 BUTTON oBtnCancel PROMPT "Cancel" Of oDlg Pixel Size 100,25
Return nil
//----------------------------------------------------------------------------//
Posted: Tue Aug 05, 2008 1:58 pm
by Horizon
Hi,
I have solved the my first problem. I have added oTree:nWidth := 100.
Code: Select all
oTree := TTreeView():New( 2, 0, oWnd )
-->oTree:nWidth := 100
oTree:bChanged := { | oItem | oItem := oTree:GetSelected(), If( ValType( oItem:Cargo ) == "B", Eval( oItem:Cargo ),) }
Posted: Wed Aug 06, 2008 11:42 am
by Horizon
Hi,
I think I have partly solved the my second problem. I can align all the button in dialog box using ClassName()="TBUTTON". Can I select the my obtnOK and obtnCancel variables.
Also I want to put a line above buttons. any suggestions.
Thanks,
Code: Select all
#include "FiveWin.ch"
#include "Splitter.ch"
//----------------------------------------------------------------------------//
function Main()
local oWnd, oDlg, oBar, oTree, oItem1, oItem2, oImageList, oSplit
DEFINE WINDOW oWnd FROM 3, 6 TO 20, 70 ;
TITLE "Welcome to " + FWVERSION COLOR "N/W"
oTree := TTreeView():New( 2, 0, oWnd )
oTree:nWidth := 100
oTree:bChanged := { | oItem | oItem := oTree:GetSelected(), If( ValType( oItem:Cargo ) == "B", Eval( oItem:Cargo ),) }
oTree:Add( "Page - 1", 1 ):Cargo = {|| Test1( oDlg ) }
oTree:Add( "Page - 2", 1 ):Cargo = {|| Test2( oDlg ) }
DEFINE DIALOG oDlg OF oWnd ;
STYLE nOR( WS_CHILD, WS_VISIBLE ) ;
@ 29, 100 SPLITTER oSplit ;
VERTICAL _3DLOOK ;
PREVIOUS CONTROLS oTree ;
HINDS CONTROLS oDlg ;
SIZE 4, 100 PIXEL ;
LEFT MARGIN 20 ;
RIGHT MARGIN 25 ;
OF oWnd
ACTIVATE DIALOG oDlg NOMODAL
ACTIVATE WINDOW oWnd ;
ON INIT Wnd_Init(oWnd, oDlg, oSplit, oTree)
oImageList:End()
return nil
//----------------------------------------------------------------------------//
static function Wnd_Init(oWnd, oDlg, oSplit, oTree)
oDlg:Move( 0, oSplit:nRight, oWnd:nWidth, oWnd:nHeight, .f. )
oWnd:bResized := {|| Wnd_Resize(oWnd, oDlg, oSplit, oTree) }
oDlg:refresh(.t.)
oTree:refresh(.t.) // required so that objects around splitter paint correctly on init
return .t.
//----------------------------------------------------------------------------//
static function Wnd_Resize(oWnd, oDlg, oSplit, oTree)
oSplit:AdjClient()
oDlg:SetSize( oWnd:nWidth - oTree:nWidth - oSplit:nWidth - 8, oSplit:nHeight - 1,.t.)
Button_Aligment(oDlg)
return .t.
//----------------------------------------------------------------------------//
static function Button_Aligment(oDlg)
local n := 1
local oControl, oRadMenu
while Len( oDlg:aControls ) > 0
//MsgInfo (Len( oDlg:aControls ))
while n <= Len( oDlg:aControls )
//MsgInfo(n)
If Upper( oDlg:aControls[ n ]:ClassName() ) == 'TBUTTON'
oControl := oDlg:aControls[ n ]
oControl:nTop := oDlg:nHeight-30
endif
n++
//MsgInfo(n)
end
exit
end
return .t.
//----------------------------------------------------------------------------//
static function CleanSlate( oDlg )
while Len( oDlg:aControls ) > 0
ATail( oDlg:aControls ):end()
end
return nil
//----------------------------------------------------------------------------//
static function Test1( oDlg )
Local oGet1, oGet2, oBtnOK, oBtnCancel
Local cGet1 := PadR( "Type something!", 50 )
Local cGet2 := PadR( "Type something else!", 50 )
CleanSlate( oDlg )
@ 5,10 Say "Some data:" Of oDlg Pixel
@ 3,70 Get oGet1 Var cGet1 Of oDlg Pixel ;
Size 150,22
@ 30,10 Say "Other data:" Of oDlg Pixel
@ 28,70 Get oGet2 Var cGet2 Of oDlg Pixel ;
Size 150,22
@ 100, 10 BUTTON oBtnOK PROMPT "OK" Of oDlg Pixel Size 100,25
@ 100,120 BUTTON oBtnCancel PROMPT "Cancel" Of oDlg Pixel Size 100,25
Button_Aligment(oDlg)
Return nil
//----------------------------------------------------------------------------//
static function Test2( oDlg )
Local oCbx1, oChk1
Local cCbx1 := "", lChk1 := .t.
CleanSlate( oDlg )
@ 5,10 Say "Choose:" Of oDlg Pixel
@ 3,70 Combobox oCbx1 Var cCbx1 Of oDlg Pixel ;
Items { "Uno", "Dos", "Tres", "Mambo!" } ;
Size 80,18
@ 28,70 Checkbox oChk1 Var lChk1 Of oDlg Pixel ;
Prompt "Tick tock tick tock" ;
Size 150,22
@ 100, 10 BUTTON oBtnOK PROMPT "OK" Of oDlg Pixel Size 100,25
@ 100,120 BUTTON oBtnCancel PROMPT "Cancel" Of oDlg Pixel Size 100,25
Button_Aligment(oDlg)
Return nil
//----------------------------------------------------------------------------//
Posted: Wed Aug 06, 2008 12:45 pm
by Antonio Linares
Hakan,
Nice to see that you are moving forward
You could use a GROUP of height 1 or 2 pixxels, to get that line painted. Please review @ ..., ... GROUP ... syntax
Posted: Wed Aug 06, 2008 1:10 pm
by Horizon
Antonio,
I can align all the button in dialog box using ClassName()="TBUTTON". Can I select the my obtnOK and obtnCancel variables.
Regards,
Posted: Wed Aug 06, 2008 1:13 pm
by Antonio Linares
Hakan,
Yes, it is a good solution. Its the way to do it.
Posted: Thu Aug 07, 2008 10:11 am
by Horizon
Antonio,
Is it possible to check object ids or objects name rather than the class name?. Because I may use more than i used (Ok and Cancel Buttons) buttons in the same dialog.
Posted: Thu Aug 07, 2008 10:17 am
by Antonio Linares
Hakan,
You can check oControl:nId
Posted: Thu Aug 07, 2008 2:35 pm
by Horizon
Antonio,
I used the GROUP command to make BEVEL. But I could not set the one line. It always prints two line. Top and Bottom is the same.
Is there anyting to solve this.
Thanks,
My last code is
Code: Select all
#include "FiveWin.ch"
#include "Splitter.ch"
//----------------------------------------------------------------------------//
STATIC aResize := {}
function Main()
local oWnd, oDlg, oBar, oTree, oItem1, oItem2, oImageList, oSplit
DEFINE WINDOW oWnd FROM 3, 6 TO 20, 70 ;
TITLE "Welcome to " + FWVERSION COLOR "N/W"
oTree := TTreeView():New( 2, 0, oWnd )
oTree:nWidth := 100
oTree:bChanged := { | oItem | oItem := oTree:GetSelected(), If( ValType( oItem:Cargo ) == "B", Eval( oItem:Cargo ),) }
oTree:Add( "Page - 1", 1 ):Cargo = {|| Test1( oDlg ) }
oTree:Add( "Page - 2", 1 ):Cargo = {|| Test2( oDlg ) }
DEFINE DIALOG oDlg OF oWnd ;
STYLE nOR( WS_CHILD, WS_VISIBLE ) ;
@ 29, 100 SPLITTER oSplit ;
VERTICAL _3DLOOK ;
PREVIOUS CONTROLS oTree ;
HINDS CONTROLS oDlg ;
SIZE 4, 100 PIXEL ;
LEFT MARGIN 20 ;
RIGHT MARGIN 25 ;
OF oWnd
ACTIVATE DIALOG oDlg NOMODAL
ACTIVATE WINDOW oWnd ;
ON INIT Wnd_Init(oWnd, oDlg, oSplit, oTree)
oImageList:End()
return nil
//----------------------------------------------------------------------------//
static function Wnd_Init(oWnd, oDlg, oSplit, oTree)
oDlg:Move( 0, oSplit:nRight, oWnd:nWidth, oWnd:nHeight, .f. )
//oDlg:bResized := {|| Dlg_Resize(oDlg) }
oWnd:bResized := {|| Wnd_Resize(oWnd, oDlg, oSplit, oTree) }
oDlg:refresh(.t.)
oTree:refresh(.t.) // required so that objects around splitter paint correctly on init
return .t.
//----------------------------------------------------------------------------//
static function Wnd_Resize(oWnd, oDlg, oSplit, oTree)
oSplit:AdjClient()
oDlg:SetSize( oWnd:nWidth - oTree:nWidth - oSplit:nWidth - 8, oSplit:nHeight - 1,.t.)
Button_Aligment(oDlg)
return .t.
//----------------------------------------------------------------------------//
static function Button_Aligment(oDlg)
local n := 1
local oControl, oRadMenu
local i, lbul:=.f.
if Len( oDlg:aControls ) > 0 .and. Len(Aresize) > 0
//MsgInfo (Len( oDlg:aControls ))
while n <= Len( oDlg:aControls )
oControl := oDlg:aControls[ n ]
// MsgInfo(oDlg:aControls[ n ]:nID)
// MsgInfo(oDlg:aControls[ n ]:cVarName)
// If Upper( oDlg:aControls[ n ]:ClassName() ) == 'TBUTTON'
for i:=1 to len(aResize)
if aResize[i]=oControl:nID
lbul=.t.
exit
endif
next i
if lbul
If Upper( oControl:ClassName() ) == 'TBUTTON'
oControl:nTop := oDlg:nHeight-30
elseIf Upper( oControl:ClassName() ) == 'TGROUP'
oControl:nTop := oDlg:nHeight-40
oControl:nBottom := oDlg:nHeight-40
oControl:nWidth := oDlg:nWidth
endif
oControl:refresh(.t.)
endif
n++
//MsgInfo(n)
end
//MsgInfo("Bitti")
end
return .t.
//----------------------------------------------------------------------------//
static function CleanSlate( oDlg )
while Len( oDlg:aControls ) > 0
ATail( oDlg:aControls ):end()
end
if len(aResize) > 0
aResize := {}
endif
return nil
//----------------------------------------------------------------------------//
static function Test1( oDlg )
Local oGet1, oGet2, oBtnOK, oBtnCancel, oGrp
Local cGet1 := PadR( "Type something!", 50 )
Local cGet2 := PadR( "Type something else!", 50 )
CleanSlate( oDlg )
@ 5,10 Say "Some data:" Of oDlg Pixel
@ 3,70 Get oGet1 Var cGet1 Of oDlg Pixel ;
Size 150,22
@ 30,10 Say "Other data:" Of oDlg Pixel
@ 28,70 Get oGet2 Var cGet2 Of oDlg Pixel ;
Size 150,22
@ 0, 0 GROUP oGrp TO 0,0 PROMPT "" Pixel
oGrp:nClrText := CLR_BLACK
@ 100, 10 BUTTON oBtnOK PROMPT "OK" Of oDlg Pixel Size 100,25
@ 100,120 BUTTON oBtnCancel PROMPT "Cancel" Of oDlg Pixel Size 100,25
add_AResize(oBtnCancel:nId)
add_AResize(oBtnOK:nId)
add_AResize(oGrp:nId)
Button_Aligment(oDlg)
Return nil
//----------------------------------------------------------------------------//
static function Test2( oDlg )
Local oCbx1, oChk1
Local cCbx1 := "", lChk1 := .t.
CleanSlate( oDlg )
@ 5,10 Say "Choose:" Of oDlg Pixel
@ 3,70 Combobox oCbx1 Var cCbx1 Of oDlg Pixel ;
Items { "Uno", "Dos", "Tres", "Mambo!" } ;
Size 80,18
@ 28,70 Checkbox oChk1 Var lChk1 Of oDlg Pixel ;
Prompt "Tick tock tick tock" ;
Size 150,22
@ 0, 0 GROUP oGrp TO 0,0 PROMPT "" Pixel
oGrp:nClrText := CLR_BLACK
@ 100, 10 BUTTON oBtnOK PROMPT "OK" Of oDlg Pixel Size 100,25
@ 100,120 BUTTON oBtnCancel PROMPT "Cancel" Of oDlg Pixel Size 100,25
add_AResize(oBtnCancel:nId)
add_AResize(oBtnOK:nId)
add_AResize(oGrp:nId)
Button_Aligment(oDlg)
Return nil
//----------------------------------------------------------------------------//
procedure add_aresize(xp1)
local i, lbul:=.f.
for i:=1 to len(aResize)
if aResize[i]=xp1
lbul=.t.
exit
endif
next i
if !lbul
aadd(aResize, xp1)
endif
return
Posted: Sat Aug 09, 2008 11:28 am
by Horizon
Anyone?
Posted: Sat Aug 09, 2008 12:15 pm
by Antonio Linares
Hakan,
Try to use a SAY (label) with "_____" as its text
Also check the labels styles, as far as I remember they can be used as lines and boxes too