Página 1 de 1

E que tal as telas em TAB ?

Enviado: 23 Abr 2025 19:05
por JoséQuintas
sample.png
Como eu disse antes, fazendo os exemplos funcionarem nas tabs.

Sem querer, querendo, tá aí, o cadastro em uma tab.

Esse deu trabalho.

Entrou a questão de variáveis e de dbf

E que tal as telas em TAB ?

Enviado: 23 Abr 2025 19:09
por JoséQuintas
Como eu fiz isso ?
Ué... normal, igual aos outros.

Código: Selecionar todos

   @ 30, 60 TAB oTab[ TAB_MAIN ] ;
      ITEMS {} ;
      SIZE  700, 480

   BEGIN PAGE "sample" ;
      OF oTab[ TAB_MAIN ]

      DemoDbfData( .F., oTab[ TAB_MAIN ] )

   END PAGE OF oTab[ TAB_MAIN ]
A mesma coisa de sempre, só que numa tab.
A prova é que é o mesmo fonte.

E que tal as telas em TAB ?

Enviado: 23 Abr 2025 19:12
por JoséQuintas
osdois.png
Mesmo fonte nas duas janelas.

Na primeira janela dentro da tab.

Na segunda janela em dialog isolada.

A janela isolada eu abro clicando naquele primeiro button.
O segundo é pra mostrar fonte.

E tem a terceira opção, que é compilar esse fonte sozinho, e rodar como EXE separado do resto.

Nenhuma novidade na terceira opção, é a mesma execução que acontece aí como dialog, não precisa nada diferente, apenas ela vira a MAIN.

E que tal as telas em TAB ?

Enviado: 24 Abr 2025 14:46
por JoséQuintas
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.