Árvore de páginas

Classe: TWindowDock

Componente que pode ser acoplado a um TMainDock.

Atenção!

Este componente não é suportado pelo TOTVS | SmartClient HTML.

 

TSrvObject -> TControl -> TWindowDock

New

Método construtor da classe.

Sintaxe

TWindowDock(): New ( [ nRow], [ nCol], [ nWidth], [ nHeight], < cText>, < oWnd>, [ lFloat], [ nPosition], [ lClosable], [ lMovable], [ lFoatable] ) --> oObjeto

 

NomeTipoDescriçãoObrigatórioReferência
nRowNuméricoIndica a coordenada vertical em pixels.  
nColNuméricoIndica a coordenada horizontal em pixels.  
nWidthNuméricoIndica a largura em pixels do objeto.  
nHeightNuméricoIndica a altura em pixels do objeto.  
cTextCaractereDefine o título que será utilizado como cabeçalho do componente.X 
oWndObjetoIndica a janela ou controle visual onde o objeto será criado.X 
lFloatLógico Indica se o componente será flutuante e não acoplado.  
nPosition NuméricoCódigo da posição de alinhamento do componente.  
lClosableLógico Indica se o componente poderá ser fechado.  
lMovableLógico Indica se o componente poderá se mover para ser acoplado em outras posições.   
lFoatableLógicoIndica se o componente poderá ser mudado de flutuante para acoplado e vice-versa.  

Retorno

oObjeto()
  • Retorna o objeto criado.
 
O código de posição onde o componente será acoplado se de acordo com:
1 = Abrangendo todo o componente pai;
2 = Alinhado a esquerda;
3 = Alinhado a direita;
4 = Alinhado ao topo;
5 = Alinhado abaixo.
 
oWindowDock := TWindowDock():New( 0, 0, 120, 90, "Título", oMainDock, .F. 1, .T., .T., .T. )

AddWidget

Adiciona um componente para dentro deste.

TWindowDock(): AddWidget ( < oComponente> ) -->

 

NomeTipoDescriçãoObrigatórioReferência
oComponenteObjetoComponente que será adicionado dentro deste.X 

Observações

Exemplo

oMultiGet := TMultiGet():New(...)
oWindowDock:AddWidget( oMultiGet ) 

SetFeatures

Redefine algumas propriedades deste componente.

TWindowDock(): SetFeatures ( [ lClosable], [ lMovable], [ lFoatable] ) -->

 

NomeTipoDescriçãoObrigatórioReferência
lClosableLógicoRedefine se este componente poderá ser fechado.X 
lMovableLógicoRedefine se o componente poderá ser movido e acoplado em outras posições.X 
lFoatableLógicoRedefine se o componente será flutuante.X 

Exemplos

oWindowDock():SetFeatures( .T., .F., .T. )

 

Exemplo completo do componente
#Include "TOTVS.CH"
// Propriedades de alinhamento do TWindowDock
#Define AllAlign  1
#Define LeftAlign 2
#Define RightAlign 3
#Define TopAlign 4
#Define BottomAlign 5
// --------------------------------------------
// Exemplo de janelas do tipo destacavel (Dock)
// --------------------------------------------
Function u_TstDock()
Private oMainDock
Private DockDlg1
Private DockDlg2
Private DockDlg3
Private cTGet1 := "Teste TGet 01"
Private cTGet2 := "Teste TGet 02"
Private nJanela := 0  
   DEFINE DIALOG oDlgMain FROM 10,10 TO 800,800 TITLE "Exemplo TMainDock/TWindowDock" PIXEL COLOR CLR_BLACK,RGB(212,208,200)
    oPanelLeft := tPanel():New(0,0,"",oDlgMain,,,,,RGB(132,172,196),06,06)
    oPanelLeft:align := CONTROL_ALIGN_LEFT
    
    oDlg := tPanel():New(0,0,"",oDlgMain,,,,,RGB(132,172,196),100,100)
    oDlg:align := CONTROL_ALIGN_ALLCLIENT
    // Splitter para montagem da tela
    oSplitter := tSplitter():New( 0,0,oDlg,260,184 )
    oSplitter:align := CONTROL_ALIGN_ALLCLIENT
                             
    // o TMainDock é uma Classe do tipo Painel que pode receber 
    // janelas destacaveis da Classe TWindowDock
    oMainDock := TMainDock():New(0,0,300,100,oSplitter)
    oMainDock:align := CONTROL_ALIGN_LEFT
    style := " QMainWindow{margin-right: 5px}"
    style += " QMainWindow::separator {background: rgb(132,172,196); width: 10px; height: 10px; } "
    oMainDock:SetCss(style)
                            
    // Define o objeto central da TMainDock, que pode ser qualquer
    // objeto visual, no exemplo foi usado um TMultiget
    cTMultiget1 := "TMultiget inserido pelo método setCentralWidget()"
    oTMultiget1 := TMultiget():New(00,00,{|u|if(Pcount()>0,cTMultiget1:=u,cTMultiget1)},;
                           oMainDock,400,400,,,,,,.T.)
    oMainDock:setCentralWidget( oTMultiget1 )
    // Painel lateral para os botões auxiliares
    oPaneAux := TPanel():New(0,0,"",oSplitter,,.F.,.F.,,,200,200,.T.,.F.)
    oPaneAux:align := CONTROL_ALIGN_ALLCLIENT                                                          
                                         
    // Botões para auxiliar na criação dos Docks                                                        
    TButton():New(02,02," Cria TWindowDock à Esquerda ",oPaneAux,{|| NewDock(LeftAlign, .F.) },96,010,,,.F.,.T.,.F.,,.F.,,,.F. )
    TButton():New(12,02," Cria TWindowDock a Direita ",oPaneAux,{|| NewDock(RightAlign, .F.) },96,010,,,.F.,.T.,.F.,,.F.,,,.F. )
    TButton():New(22,02," Cria TWindowDock ao Topo ",oPaneAux,{|| NewDock(TopAlign, .F.) },96,010,,,.F.,.T.,.F.,,.F.,,,.F. )
    TButton():New(32,02," Cria TWindowDock ao Rodapé ",oPaneAux,{|| NewDock(BottomAlign, .F.) },96,010,,,.F.,.T.,.F.,,.F.,,,.F. )
    TButton():New(52,02," Cria TWindowDock Destacado ",oPaneAux,{|| NewDock(AllAlign, .T.) },96,010,,,.F.,.T.,.F.,,.F.,,,.F. )
    TButton():New(62,02," A Direita sem restrição",oPaneAux,{|| ;
      dockAux:=NewDock(AllAlign,.F.),oMainDock:addDockWidget(dockAux,RightAlign) };
      ,96,010,,,.F.,.T.,.F.,,.F.,,,.F. )
    TButton():New(72,02," Conout ",oPaneAux,{|| conout("") },96,010,,,.F.,.T.,.F.,,.F.,,,.F. )
      
  ACTIVATE DIALOG oDlgMain CENTERED ON INIT ( NewDock(LeftAlign,.F.) )
Return              
// --------------------------------------------
// Função para criar janelas do tipo Dock
// --------------------------------------------
Static Function NewDock(nType, isFloat) 
   nJanela++
   cTexto := "Caption Janela: " + strZero(nJanela,2)
   // Cria janela do tipo Dock
   DockDlg  := TWindowDock():New( 0,0,200,300,cTexto,oMainDock,isFloat,nType )   
   style += " QDockWidget{ margin: 50px; color: #0052AF; titlebar-close-icon: url(rpo:fwocn_lyr_close.png); titlebar-normal-icon: url(rpo:fwocn_lyr_restore.png); }"
   style += " QDockWidget::title{ background-color: rgb(132,172,196); border-style: solid; "+;
     "    border-image: url(rpo:fwstd_lyr_title.png) 10 10 10 10 stretch; "+;
     "    border-top-width: 06px; "+;
     "    border-left-width: 10px; "+;
     "    border-right-width: 10px; "+;
     "    border-bottom-width: 0px; }"
   DockDlg:SetCss(style)
    
   // CodeBlocks de troca de "Dock" da janela e fechamento da janela
   DockDlg:bChange := {|x| conout('TWindowDock - bChange: ' + iif(x,"Destacada(True)","Ancorada(False)")) }
   DockDlg:bValid  := {| | conout('TWindowDock - bValid') }
   
   // Insere painel na  TWindowDock
   // OBS: Painel deve ser adicionado a janela atravez do método addWidget()
   //      e os objetos visuais da janela devem ser inseridos neste painel
   oPanelTop := tPanel():New(0,0,"",DockDlg,,,,,RGB(132,172,196),100,100)
   oPanelTop:SetCss("QLabel{border: 1px solid #7B92A0;}")
   DockDlg:addWidget(oPanelTop) 
   
   //*******************************************************
   // IMPORTANTE: O método addDockWidget() deve ser chamado
   // após a criação do Painel, para que haja ajuste do 
   // tamanho da janela TWindowDock
   //*******************************************************
   //*******************************************************
   // Se a janela TWindowDock for criada Ancorada
   // ela deve obrigatoriamente ser inserida na TMainDock 
   // atraves do metodo addDockWidget()
   //*******************************************************
   if !isFloat
      oMainDock:addDockWidget( DockDlg, nType )
   endif
   //-------------------------------------------------------
   // Cria objetos no Painel que foi inserido no TWindowDock
   oTGet1 := TGet():New( 02,02,{||cTGet1},oPanelTop,096,009,;
              "",,0,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,,cTGet1,,,, )
   oTGet1:bValid := {|| conout("Valid do oTGet1") }            
   oTGet2 := TGet():New( 14,02,{||cTGet2},oPanelTop,096,009,;
              "",,0,,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F.,,cTGet2,,,, )
   oTGet2:bValid := {|| conout("Valid do oTGet2") }
  
   oBtnDock := TButton():New(28,02,"Botão: "+strZero(nJanela,2),oPanelTop,;
               {|| conout("Botão Precionado") },;
               50,14,,,.F.,.T.,.F.,,.F.,,,.F. )   
   //-------------------------------------------------------
               
Return( DockDlg )

 

  • Sem rótulos