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.