Vocês conseguem imaginar a complexidade disso ?
Quantas variáveis são necessárias pra vários níveis de tab ?
Não é nada como imaginam.
Pra tudo, variável oTab, coisa simples
BEGIN PAGE ... conteúdo... END PAGE
Código: Selecionar todos
@ 30, 60 TAB oTab ;
ITEMS {} ;
SIZE 700, 480
BEGIN PAGE "sample" ;
OF oTab
DemoDbfData( .F., oTab )
END PAGE OF oTab
BEGIN PAGE "menu" ;
OF oTab
DemoAllTabMenu()
END PAGE OF oTab
BEGIN PAGE "say" ;
OF oTab
DemoSay( .F. )
END PAGE OF oTab
BEGIN PAGE "button" ;
OF oTab
DemoAllTabButton()
END PAGE OF oTab
BEGIN PAGE "browse" ;
OF oTab
DemoAllTabBrowse()
END PAGE OF oTab
BEGIN PAGE "tab" ;
OF oTab
DemoTab( .F., oTab )
END PAGE OF oTab
BEGIN PAGE "combobox" ;
OF oTab
DemoCombobox( .F., oTab )
END PAGE of oTab
BEGIN PAGE "checkbox" ;
OF oTab
DemoCheckBox( .F., oTab )
END PAGE OF oTab
BEGIN PAGE "treebox" ;
OF oTab
DemoAllTabTreebox()
END PAGE OF oTab
BEGIN PAGE "date" ;
OF oTab
DemoAllTabDate()
END PAGE OF oTab
BEGIN PAGE "splitter" ;
OF oTab
DemoAllTabSplitter()
END PAGE OF oTab
E a sub-tab ?
Tem chamada lá encima
Ou é um exemplo pronto, ou por exemplo DemoAllTabButton() dentro da page "button"
E lá vamos nós de novo, mesma coisa, oTab e conteúdo
Como é sub-rotina, oTab daqui não é a oTab de lá.
pode ter conteúdo "escrito" ou conteúdo de outro exemplo.
Código: Selecionar todos
STATIC FUNCTION DemoAllTabButton()
LOCAL oTab
@ 30, 60 TAB oTab ;
ITEMS {} ;
SIZE 700, 480
BEGIN PAGE "Ownerbutton" ;
OF oTab
DemoOwner( .F., oTab )
END PAGE OF oTab
#ifdef __PLATFORM__WINDOWS
BEGIN PAGE "Shadebutton" ;
OF oTab
DemoShadeBtn( .F., oTab )
END PAGE OF oTab
#endif
RETURN Nil
oTab não serve pra nada, só mesmo pras pages saberem aonde elas vão.
A outra parte não precisa saber que esta existe.
É diferente num aplicativo, onde existem variáveis do aplicativo que precisam existir o tempo todo.
DemoAll é isso.
Nada demais.
Qualquer um consegue fazer isso.
É isso mesmo, esse é o fonte do demoall.