[ruby-gnome2-doc-cvs] [Hiki] create - tut-gtk2-packing-tables

Zurück zum Archiv-Index

ruby-gnome2-hiki-pt_BR****@sourc***** ruby-gnome2-hiki-pt_BR****@sourc*****
2004年 4月 9日 (金) 23:34:44 JST


-------------------------
REMOTE_ADDR = 200.216.146.35
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/pt_BR/?tut-gtk2-packing-tables
-------------------------
= Posicionamento Usando Tabelas
{{link "tut-gtk2-packing-demo", "tut-gtk2-packing-intro", "tut-gtk", "tut-gtk2-packing-tables-demo"}}

Vamos dar uma olhada em outra maneira de posicionamento: Tabelas. Elas podem ser extremamente $B(Beis em certas situa$Bnw(Bes.

Ao usar tabelas, a gente cria um grid no qual podem ser posicionados componentes. Os componentes podem ter quanto de espa$BmP(B a gente especificar.

A primeira coisa para olhar, claro, o construtor Gtk::Table.new:

  Gtk::Table.new(linhas, colunas, homog$BsO(Beo) 

O primeiro argumento o n$B(Bero de linhas ("rows") para fazer na tabela, enquanto o seguindo, obviamente, o n$B(Bero de colunas.

O argumento homog$BsO(Beo ("homogeneous") tem a ver com como as caixas da tabela s$BeP(B dimensionadas. Se "homog$BsO(Beo" for verdadeiro ("true"), as caixas da tabela s$BeP(B redimensionadas para o tamanho do mais largo componente da tabela. Se "homog$BsO(Beo" for falso, o tamanho das caixas da tabela ditado pelo componente mais alto na mesma linha, e pelo componente mais lago na sua coluna.

As linhas e colunas s$BeP(B dispostas de 0 a "n", onde "n" foi o n$B(Bero especificado em Gtk::Table.new. Assim, se vocespecificar linhas = 2 e colunas = 2, o "layout" pareceria algo como isto:

  .0          1          2
  0+----------+----------+
   |          |          |
  1+----------+----------+
   |          |          |
  2+----------+----------+

Note que o sistema de coordenadas inicia no canto esquerdo superior. Para colocar um componente em uma caixa, use o m$BqU(Bodo a seguir:

  Gtk::Table#attach(filho, 
                    anexado_a_esquerda, anexado_a_direita, anexado_acima, anexado_abaixo, 
                    op$Bnw(Bes_x, op$Bnw(Bes_y, 
                    espa$BmP(B_externo_x, espa$BmP(B_externo_y)

O primeiro argumento "filho" ("child") o componente que vocgostaria de colocar na tabela.

Os argumentos de anexar a esquerda e direita especificam onde colocar o componente, e quantas caixas usar. Se vocquer um bot$BeP(B na entrada do canto direito inferior da nossa tabela 2x2, e quer que ele preencha aquela entrada apenas, anexar_a_esquerda deve ser igual a 1, anexar_a_direita deve ser igual a 2, anexar_acima deve ser igual a 1 e anexar_abaixo deve ser igual a 2.

Agora, se vocquisesse que um componente tomasse a linha de cima inteira da nossa tabela 2x2, vocusaria anexar_a_esquerda igual a 0, anexar_a_direita igual a 2, anexar_acima igual a 0 e anexar_abaixo igual a 1.

As op$Bnw(Bes_x e op$Bnw(Bes_y s$BeP(B usadas para especificar as op$Bnw(Bes de posicionamento e podem ser "bitwise OR'ed" juntas ((-Em Ruby, o operador OR representado pelo caractere | ("pipe").-)) para permitir op$Bnw(Bes multiplas.

As op$Bnw(Bes s$BeP(B:

:Gtk::FILL
 Se a caixa da tabela mais larga que o componente, ent$BeP(B este componente irexpandir para usar todo o espa$BmP(B dispon$ByW(Bel.

:Gtk::SHRINK
 Se o componente da tabela foi alocado com menos espa$BmP(B que foi pedido ("requested" - comumente ao usu$BaS(Bio redimensionar a janela), ent$BeP(B os componentes iriam normalmente ser empurrados para baixo da janela e desaparecer. Se Gtk::SHRINK for especificado, os componentes ser$BeP(B encolhidos com a tabela.

:Gtk::EXPAND
 Isso causara tabela a expandir para usar qualquer espa$BmP(B restante na janela.

Espa$BmP(B_externo como na caixa Gtk::Box, criando uma $BaS(Bea clara em pixels ao redor do componente especificado.

Gtk::Table#attach tem muitas op$Bnw(Bes. Ent$BeP(B, existe um atalho:

  Gtk::Table#attach_defaults(componente, anexar_a_esquerda, anexar_a_direita, anexar_acima, anexar_abaixo)

As op$Bnw(Bes X e Y s$BeP(B padronizadas para Gtk::FILL | Gtk::EXPAND, e espa$BmP(B_externo X e Y s$BeP(B configurados para 0. O resto dos argumentos s$BeP(B id$BsO(Bticos aos do m$BqU(Bodo m$BqU(Bodo anterior.

N$B(B tamb$BqN(B temos Gtk::Table#set_row_spacing e Gtk::Table#set_col_spacing. Eles colocam espa$BmB(Bmentos entre as linhas na linha e coluna espeficiadas.

  Gtk::Table#set_row_spacing(linha, espa$BmB(Bmento)
  Gtk::Table#set_col_spacing(coluna, espa$BmB(Bmento) 

Note que para colunas, o espa$BmP(B vai a direita da coluna, e para linhas, o espa$BmP(B vai abaixo da linha.

Vocpode tamb$BqN(B configurar um espa$BmB(Bmento consistente para todas as linhas e/ou colunas com:

  Gtk::Table#set_row_spacings(espa$BmB(Bmento)
  Gtk::Table#set_col_spacings(espa$BmB(Bmento) 

Note que com essas chamadas, a $B(Btima linha e a $B(Btima coluna n$BeP(B pegam espa$BmP(B algum.





ruby-gnome2-cvs メーリングリストの案内
Zurück zum Archiv-Index