QGIS ::: PyQGIS API ::: Shapefiles, Camadas Vetoriais, Dados Vetoriais |
Como exibir todos os atributos das feições de uma camada vetorial no QGIS usando getFeatures() e attributes() da PyQGIS APIQuantidade de visualizações: 849 vezes |
Nesta dica mostrarei como podemos acessar todos os atributos das feições (features) de uma camada vetorial no QGIS usando getFeatures() e attributes() do objeto QgsVectorLayer da PyQGIS API. Depois de carregar o shapefile contendo todos os municípios do Estado de Goiás, usei a getFeatures() para retornar um iterador QgsFeatureIterator que nos permite acessar as features individuais da camada. Então, de posse das feições individuais, nós usamos a função attributes() para retornar o QgsFeature correspondente e exibir seu conteúdo. Veja o código PyQGIS completo para o exemplo: # vamos criar um novo objeto QgsVectorLayer com o local do nosso shapefile camada = QgsVectorLayer("C:\\GO\\GO_Municipios_2022.shp", "Municípios Estado de Goiás", "ogr") # vamos testar se a camada é válida if not camada.isValid(): print("Não foi possível carregar a camada %s" % camada.name()) else: # vamos adicionar a camada à relação de camadas QgsProject.instance().addMapLayer(camada) # vamos obter as feições feicoes = camada.getFeatures() # agora percorremos as feições e obtemos os seus # atributos, todos de uma só vez ou individual, # como mostro em outras dicas for f in feicoes: # vamos obter os atributos desta feição atributos = f.attributes() # e mostramos o resultado print(atributos) Ao rodar esse código PyQGIS no QGIS nós teremos o seguinte resultado: ['5200050', 'Abadia de Goiás', 'GO', 143.357] ['5200100', 'Abadiânia', 'GO', 1044.555] ['5200134', 'Acreúna', 'GO', 1566.742] ['5200159', 'Adelândia', 'GO', 115.385] ['5200175', 'Água Fria de Goiás', 'GO', 2023.636] ['5200209', 'Água Limpa', 'GO', 458.836] ['5200258', 'Águas Lindas de Goiás', 'GO', 191.817] ['5200308', 'Alexânia', 'GO', 846.876] ['5200506', 'Aloândia', 'GO', 102.094] ['5200555', 'Alto Horizonte', 'GO', 500.342] ['5200605', 'Alto Paraíso de Goiás', 'GO', 2594.998] ['5200803', 'Alvorada do Norte', 'GO', 1268.347] ['5200829', 'Amaralina', 'GO', 1343.742] ['5200852', 'Americano do Brasil', 'GO', 133.834] ['5200902', 'Amorinópolis', 'GO', 406.93] ['5201108', 'Anápolis', 'GO', 935.672] ['5201207', 'Anhanguera', 'GO', 55.569] ['5201306', 'Anicuns', 'GO', 976.038] ['5201405', 'Aparecida de Goiânia', 'GO', 279.954] ['5201454', 'Aparecida do Rio Doce', 'GO', 603.254] ['5201504', 'Aporé', 'GO', 2899.237] ['5201603', 'Araçu', 'GO', 149.776] ['5201702', 'Aragarças', 'GO', 661.677] ['5201801', 'Aragoiânia', 'GO', 218.125] ['5202155', 'Araguapaz', 'GO', 2188.1] ['5202353', 'Arenópolis', 'GO', 1075.535] ['5202502', 'Aruanã', 'GO', 3054.773] ['5202601', 'Aurilândia', 'GO', 565.514] ['5202809', 'Avelinópolis', 'GO', 170.228] ['5203104', 'Baliza', 'GO', 1780.173] ['5203203', 'Barro Alto', 'GO', 1080.268] ['5203302', 'Bela Vista de Goiás', 'GO', 1274.034] ['5203401', 'Bom Jardim de Goiás', 'GO', 1901.137] ['5203500', 'Bom Jesus de Goiás', 'GO', 1405.605] ['5203559', 'Bonfinópolis', 'GO', 121.915] ['5203575', 'Bonópolis', 'GO', 1635.319] ['5203609', 'Brazabrantes', 'GO', 125.326] ['5203807', 'Britânia', 'GO', 1458.459] ['5203906', 'Buriti Alegre', 'GO', 901.932] ['5203939', 'Buriti de Goiás', 'GO', 202.576] ['5203962', 'Buritinópolis', 'GO', 246.075] ['5204003', 'Cabeceiras', 'GO', 1126.434] ['5204102', 'Cachoeira Alta', 'GO', 1657.226] ['5204201', 'Cachoeira de Goiás', 'GO', 424.49] ['5204250', 'Cachoeira Dourada', 'GO', 528.281] ['5204300', 'Caçu', 'GO', 2254.34] ['5204409', 'Caiapônia', 'GO', 8627.961] ['5204508', 'Caldas Novas', 'GO', 1608.523] ['5204557', 'Caldazinha', 'GO', 251.72] ['5204607', 'Campestre de Goiás', 'GO', 272.734] ['5204656', 'Campinaçu', 'GO', 1978.386] ['5204706', 'Campinorte', 'GO', 1064.541] ['5204805', 'Campo Alegre de Goiás', 'GO', 2450.111] ['5204854', 'Campo Limpo de Goiás', 'GO', 156.113] ['5204904', 'Campos Belos', 'GO', 735.126] ['5204953', 'Campos Verdes', 'GO', 443.125] ['5205000', 'Carmo do Rio Verde', 'GO', 419.821] ['5205059', 'Castelândia', 'GO', 299.228] ['5205109', 'Catalão', 'GO', 3826.37] ['5205208', 'Caturaí', 'GO', 205.065] ['5205307', 'Cavalcante', 'GO', 6948.78] ['5205406', 'Ceres', 'GO', 213.07] ['5205455', 'Cezarina', 'GO', 417.08] ['5205471', 'Chapadão do Céu', 'GO', 2184.076] ['5205497', 'Cidade Ocidental', 'GO', 389.984] ['5205513', 'Cocalzinho de Goiás', 'GO', 1785.339] ['5205521', 'Colinas do Sul', 'GO', 1707.519] ['5205703', 'Córrego do Ouro', 'GO', 458.077] ['5205802', 'Corumbá de Goiás', 'GO', 1064.833] ['5205901', 'Corumbaíba', 'GO', 1864.277] ['5206206', 'Cristalina', 'GO', 6153.921] ['5206305', 'Cristianópolis', 'GO', 221.624] ['5206404', 'Crixás', 'GO', 4673.039] ['5206503', 'Cromínia', 'GO', 364.918] ['5206602', 'Cumari', 'GO', 568.365] ['5206701', 'Damianópolis', 'GO', 417.625] ['5206800', 'Damolândia', 'GO', 86.057] ['5206909', 'Davinópolis', 'GO', 482.857] ['5207105', 'Diorama', 'GO', 685.382] ['5207253', 'Doverlândia', 'GO', 3227.558] ['5207352', 'Edealina', 'GO', 598.218] ['5207402', 'Edéia', 'GO', 1469.099] ['5207501', 'Estrela do Norte', 'GO', 301.139] ['5207535', 'Faina', 'GO', 1949.685] ['5207600', 'Fazenda Nova', 'GO', 1279.107] ['5207808', 'Firminópolis', 'GO', 422.34] ['5207907', 'Flores de Goiás', 'GO', 3695.106] ['5208004', 'Formosa', 'GO', 5804.292] ['5208103', 'Formoso', 'GO', 843.42] ['5208152', 'Gameleira de Goiás', 'GO', 588.328] ['5208301', 'Divinópolis de Goiás', 'GO', 828.874] ['5208400', 'Goianápolis', 'GO', 166.642] ['5208509', 'Goiandira', 'GO', 569.917] ['5208608', 'Goianésia', 'GO', 1547.319] ['5208707', 'Goiânia', 'GO', 729.296] ['5208806', 'Goianira', 'GO', 213.772] ['5208905', 'Goiás', 'GO', 3108.423] ['5209101', 'Goiatuba', 'GO', 2479.591] ['5209150', 'Gouvelândia', 'GO', 827.373] ['5209200', 'Guapó', 'GO', 514.178] ['5209291', 'Guaraíta', 'GO', 205.533] ['5209408', 'Guarani de Goiás', 'GO', 1221.054] ['5209457', 'Guarinos', 'GO', 593.188] ['5209606', 'Heitoraí', 'GO', 228.615] ['5209705', 'Hidrolândia', 'GO', 952.122] ['5209804', 'Hidrolina', 'GO', 583.756] ['5209903', 'Iaciara', 'GO', 1547.183] ['5209937', 'Inaciolândia', 'GO', 689.201] ['5209952', 'Indiara', 'GO', 955.419] ['5210000', 'Inhumas', 'GO', 614.887] ['5210109', 'Ipameri', 'GO', 4382.863] ['5210158', 'Ipiranga de Goiás', 'GO', 244.209] ['5210208', 'Iporá', 'GO', 1027.249] ['5210307', 'Israelândia', 'GO', 579.19] ['5210406', 'Itaberaí', 'GO', 1461.916] ['5210562', 'Itaguari', 'GO', 142.652] ['5210604', 'Itaguaru', 'GO', 241.029] ['5210802', 'Itajá', 'GO', 2082.736] ['5210901', 'Itapaci', 'GO', 952.998] ['5211008', 'Itapirapuã', 'GO', 2047.874] ['5211206', 'Itapuranga', 'GO', 1281.404] ['5211305', 'Itarumã', 'GO', 3437.367] ['5211404', 'Itauçu', 'GO', 383.066] ['5211503', 'Itumbiara', 'GO', 2447.014] ['5211602', 'Ivolândia', 'GO', 1260.841] ['5211701', 'Jandaia', 'GO', 863.087] ['5211800', 'Jaraguá', 'GO', 1848.947] ['5211909', 'Jataí', 'GO', 7178.792] ['5212006', 'Jaupaci', 'GO', 528.783] ['5212055', 'Jesúpolis', 'GO', 115.211] ['5212105', 'Joviânia', 'GO', 446.258] ['5212204', 'Jussara', 'GO', 4092.34] ['5212253', 'Lagoa Santa', 'GO', 463.289] ['5212303', 'Leopoldo de Bulhões', 'GO', 476.137] ['5212501', 'Luziânia', 'GO', 3962.107] ['5212600', 'Mairipotaba', 'GO', 468.029] ['5212709', 'Mambaí', 'GO', 858.27] ['5212808', 'Mara Rosa', 'GO', 1695.463] ['5212907', 'Marzagão', 'GO', 225.518] ['5212956', 'Matrinchã', 'GO', 1150.503] ['5213004', 'Maurilândia', 'GO', 389.959] ['5213053', 'Mimoso de Goiás', 'GO', 1380.701] ['5213087', 'Minaçu', 'GO', 2854.137] ['5213103', 'Mineiros', 'GO', 9042.844] ['5213400', 'Moiporá', 'GO', 452.314] ['5213509', 'Monte Alegre de Goiás', 'GO', 3119.86] ['5213707', 'Montes Claros de Goiás', 'GO', 2900.397] ['5213756', 'Montividiu', 'GO', 1869.581] ['5213772', 'Montividiu do Norte', 'GO', 1337.232] ['5213806', 'Morrinhos', 'GO', 2846.299] ['5213855', 'Morro Agudo de Goiás', 'GO', 282.333] ['5213905', 'Mossâmedes', 'GO', 684.882] ['5214002', 'Mozarlândia', 'GO', 1738.516] ['5214051', 'Mundo Novo', 'GO', 2141.534] ['5214101', 'Mutunópolis', 'GO', 955.069] ['5214408', 'Nazário', 'GO', 281.147] ['5214507', 'Nerópolis', 'GO', 204.713] ['5214606', 'Niquelândia', 'GO', 9846.293] ['5214705', 'Nova América', 'GO', 209.432] ['5214804', 'Nova Aurora', 'GO', 307.335] ['5214838', 'Nova Crixás', 'GO', 7308.681] ['5214861', 'Nova Glória', 'GO', 411.753] ['5214879', 'Nova Iguaçu de Goiás', 'GO', 625.625] ['5214903', 'Nova Roma', 'GO', 2136.725] ['5215009', 'Nova Veneza', 'GO', 122.354] ['5215207', 'Novo Brasil', 'GO', 649.349] ['5215231', 'Novo Gama', 'GO', 192.285] ['5215256', 'Novo Planalto', 'GO', 1254.491] ['5215306', 'Orizona', 'GO', 1971.265] ['5215405', 'Ouro Verde de Goiás', 'GO', 208.804] ['5215504', 'Ouvidor', 'GO', 411.318] ['5215603', 'Padre Bernardo', 'GO', 3142.615] ['5215652', 'Palestina de Goiás', 'GO', 1318.047] ['5215702', 'Palmeiras de Goiás', 'GO', 1537.196] ['5215801', 'Palmelo', 'GO', 59.809] ['5215900', 'Palminópolis', 'GO', 393.326] ['5216007', 'Panamá', 'GO', 432.204] ['5216304', 'Paranaiguara', 'GO', 1153.415] ['5216403', 'Paraúna', 'GO', 3786.578] ['5216452', 'Perolândia', 'GO', 1033.657] ['5216809', 'Petrolina de Goiás', 'GO', 530.49] ['5216908', 'Pilar de Goiás', 'GO', 906.048] ['5217104', 'Piracanjuba', 'GO', 2374.232] ['5217203', 'Piranhas', 'GO', 2045.088] ['5217302', 'Pirenópolis', 'GO', 2200.369] ['5217401', 'Pires do Rio', 'GO', 1077.641] ['5217609', 'Planaltina', 'GO', 2558.924] ['5217708', 'Pontalina', 'GO', 1434.289] ['5218003', 'Porangatu', 'GO', 4825.287] ['5218052', 'Porteirão', 'GO', 606.262] ['5218102', 'Portelândia', 'GO', 553.411] ['5218300', 'Posse', 'GO', 2076.99] ['5218391', 'Professor Jamil', 'GO', 356.292] ['5218508', 'Quirinópolis', 'GO', 3786.026] ['5218607', 'Rialma', 'GO', 268.291] ['5218706', 'Rianápolis', 'GO', 157.379] ['5218789', 'Rio Quente', 'GO', 244.655] ['5218805', 'Rio Verde', 'GO', 8374.255] ['5218904', 'Rubiataba', 'GO', 750.659] ['5219001', 'Sanclerlândia', 'GO', 509.402] ['5219100', 'Santa Bárbara de Goiás', 'GO', 140.957] ['5219209', 'Santa Cruz de Goiás', 'GO', 1109.007] ['5219258', 'Santa Fé de Goiás', 'GO', 1164.186] ['5219308', 'Santa Helena de Goiás', 'GO', 1142.337] ['5219357', 'Santa Isabel', 'GO', 812.756] ['5219407', 'Santa Rita do Araguaia', 'GO', 1357.197] ['5219456', 'Santa Rita do Novo Destino', 'GO', 970.448] ['5219506', 'Santa Rosa de Goiás', 'GO', 166.44] ['5219605', 'Santa Tereza de Goiás', 'GO', 789.544] ['5219704', 'Santa Terezinha de Goiás', 'GO', 1206.6] ['5219712', 'Santo Antônio da Barra', 'GO', 450.336] ['5219738', 'Santo Antônio de Goiás', 'GO', 135.022] ['5219753', 'Santo Antônio do Descoberto', 'GO', 943.948] ['5219803', 'São Domingos', 'GO', 3335.999] ['5219902', 'São Francisco de Goiás', 'GO', 416.535] ['5220009', "São João d'Aliança", 'GO', 3334.455] ['5220058', 'São João da Paraúna', 'GO', 286.979] ['5220108', 'São Luís de Montes Belos', 'GO', 829.62] ['5220157', 'São Luiz do Norte', 'GO', 583.832] ['5220207', 'São Miguel do Araguaia', 'GO', 6150.179] ['5220264', 'São Miguel do Passa Quatro', 'GO', 537.347] ['5220280', 'São Patrício', 'GO', 172.763] ['5220405', 'São Simão', 'GO', 415.015] ['5220454', 'Senador Canedo', 'GO', 247.005] ['5220504', 'Serranópolis', 'GO', 5521.774] ['5220603', 'Silvânia', 'GO', 2349.924] ['5220686', 'Simolândia', 'GO', 346.811] ['5220702', "Sítio d'Abadia", 'GO', 1611.851] ['5221007', 'Taquaral de Goiás', 'GO', 205.665] ['5221080', 'Teresina de Goiás', 'GO', 784.793] ['5221197', 'Terezópolis de Goiás', 'GO', 107.407] ['5221304', 'Três Ranchos', 'GO', 284.034] ['5221403', 'Trindade', 'GO', 712.69] ['5221452', 'Trombas', 'GO', 802.905] ['5221502', 'Turvânia', 'GO', 482.317] ['5221551', 'Turvelândia', 'GO', 935.659] ['5221577', 'Uirapuru', 'GO', 1154.305] ['5221601', 'Uruaçu', 'GO', 2142.484] ['5221700', 'Uruana', 'GO', 522.904] ['5221809', 'Urutaí', 'GO', 623.821] ['5221858', 'Valparaíso de Goiás', 'GO', 61.488] ['5221908', 'Varjão', 'GO', 517.402] ['5222005', 'Vianópolis', 'GO', 954.115] ['5222054', 'Vicentinópolis', 'GO', 733.794] ['5222203', 'Vila Boa', 'GO', 1052.593] ['5222302', 'Vila Propício', 'GO', 2181.593] Note que mostrei todos os atributos das 246 feições (features) do meu shapefile. E cada feição representa um dos municípios do Estado de Goiás. Veja que os atributos são o código do município, seu nome, a sigla do estado e sua área (em metros quadrados). Deixei a listagem completa para facilitar alguém que queira fazer trabalhos relacionados a isso. |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como converter uma string para letras maiúsculas usando o método toUpperCase() da classe String da linguagem JavaQuantidade de visualizações: 1 vezes |
Nesta dica eu mostro como podemos usar o método toUpperCase() da classe String para transformar em maiúsculas todas as letras de uma palavra, frase ou texto. Veja o exemplo abaixo: package arquivodecodigos; public class Estudos{ public static void main(String[] args){ String frase = "Programar em Java é bom"; System.out.println(frase); // vamos converter para letras maiúsculas frase = frase.toUpperCase(); System.out.println(frase); System.exit(0); } } Ao executarmos este código nós teremos o seguinte resultado: Programar em Java é bom PROGRAMAR EM JAVA É BOM |
Python ::: wxPython ::: Eventos e Tratadores de Eventos |
Como tratar o evento wx.EVT_MOVE em suas aplicações wxPython - Interfaces gráficas no PythonQuantidade de visualizações: 151 vezes |
Em algumas situações nós precisamos reagir ao evento wx.EVT_MOVE em nossas aplicações wxPython. Este evento é gerado todas as vezes que movemos uma janela para uma nova posição. Veja o código completo para uma aplicação wxPython na qual interceptamos e tratamos o evento wx.EVT_MOVE na janela principal do programa. Note o uso da função e.GetPosition() para recuperarmos as coordenadas x e y do evento e mostrarmos o resultado em controles wx.StaticText. # vamos importar o framework wxPython import wx # classe que representará a janela principal da # aplicação wxPython class JanelaPrincipal(wx.Frame): # o método construtor def __init__(self, *args, **kw): # chama o construtor da classe wx.Frame super(JanelaPrincipal, self).__init__(*args, **kw) # chama a função que inicializa a GUI self.InicializarGUI() # método usado para gerenciar o evento Move def OnMove(self, e): # obtemos a posição do evento e guardamos nas variáveis x e y x, y = e.GetPosition() # mostramos os valores nas labels self.st1.SetLabel(str(x)) self.st2.SetLabel(str(y)) # função que inicializa a GUI do programa def InicializarGUI(self): # criamos dois controles StaticText com os labels já definindos wx.StaticText(self, label='x:', pos=(10,10)) wx.StaticText(self, label='y:', pos=(10,30)) # criamos mais dois controles StaticText para escrevermos neles self.st1 = wx.StaticText(self, label='', pos=(30, 10)) self.st2 = wx.StaticText(self, label='', pos=(30, 30)) # fazemos um binding o evento wx.EVT_MOVE para a # função OnMove que criamos self.Bind(wx.EVT_MOVE, self.OnMove) # definimos o tamanho da janela self.SetSize((450, 350)) # define a cor de fundo da janela (Windows 10) self.SetBackgroundColour((150, 250, 100, 255)) # definimos o título da janela self.SetTitle('O evento Move') # e centralizamos a janela self.Centre() # função principal do programa Python def main(): # vamos criar a aplicação wxPython app = wx.App() janela_principal = JanelaPrincipal(None) janela_principal.Show() app.MainLoop() if __name__ == "__main__": main() |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Apostila Java para iniciantes - Como concatenar strings em Java usando o operador "+"Quantidade de visualizações: 47 vezes |
Strings, ou seja, palavras, frases e textos, são concatenadas em Java usando-se o operador de adição "+". Lembre-se: concatenar significa juntar, agrupar, mesclar, etc. Veja um exemplo completo no trecho de código a seguir: public class Estudos{ public static void main(String[] args){ String s1 = "Bom dia, "; String s2 = "meu caro amigo!"; String s3 = s1 + s2; System.out.println(s3); System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: Bom dia, meu caro amigo! |
Ruby ::: Fundamentos da Linguagem ::: Passos Iniciais |
Qual é a diferença entre print e puts em Ruby?Quantidade de visualizações: 12375 vezes |
Tanto a função print quanto a função puts do Ruby nos permite escrever na tela, ou seja, exibir ao usuário o resultado do processamento das operações requisitas. Então, qual a diferença entre elas? A instrução puts é uma abreviação de "put string" e automaticamente move o cursor para a próxima linha. A instrução print é usada quando queremos escrever e manter o cursor na mesma linha. Veja um exemplo completo a seguir: # Este exemplo mostra a diferença entre as funções # print e puts da linguagem Ruby # vamos construir uma frase aqui frase = "Gosto muito de Ruby" # vamos exibir a frase usando duas chamadas print e # depois duas chamadas puts print frase print frase puts frase puts frase Ao executar este código Ruby nós teremos o seguinte resultado: Gosto muito de RubyGosto muito de RubyGosto muito de Ruby Gosto muito de Ruby Note que as duas primeiras chamadas a print escreveram na mesma linha. Porém, a primeira chamada a puts escreveu na mesma linha anterior, mas já colocou uma quebra de linha após a escrita. As duas funções, contudo, permitem o uso do caractere de quebra de linha. Veja: # Este exemplo mostra a diferença entre as funções # print e puts da linguagem Ruby # vamos construir uma frase aqui frase = "Gosto muito de Ruby" # vamos exibir a frase usando duas chamadas print e # depois duas chamadas puts print frase + "\n" print frase + "\n" puts frase + "\n\n" puts frase Ao executar este novo código nós teremos o seguinte resultado: Gosto muito de Ruby Gosto muito de Ruby Gosto muito de Ruby Gosto muito de Ruby |
PHP ::: Fundamentos da Linguagem ::: Tipos de Dados |
Entendendo o tipo de dados NULL do PHP - Aprenda a usar o tipo de dados NULL da linguagem PHP - AtualizadaQuantidade de visualizações: 11004 vezes |
O tipo de dados NULL (nulo) do PHP é semelhante aos tipos undef (Perl) e None (Python). Este tipo de dados possui apenas um valor que é usado para indicar que uma variável não possui nenhum valor (não recebeu nenhuma atribuição ainda). Este tipo de dados pode ser escrito NULL, Null, null, etc. Não há distinção de maiúsculas e minúsculas. Veja um exemplo de seu uso:$nome = "Osmar J. Silva"; $nome = null; // variável é NULL agora $nome = Null; // mesmo resultado $nome = NULL; // mesmo resultado Se quisermos testar se uma variável ainda é NULL, podemos usar a função is_null(). Veja: <? $nome; if(is_null($nome)){ echo 'A variável $nome ainda é NULL.'; } ?> Este código mostrará o seguinte resultado: A variável $nome ainda é NULL. Note que, se as advertências estiverem habilitadas na página PHP, a seguinte mensagem será exibida: Warning: Undefined variable $nome in ...\index.php on line 4 Esta é a forma da linguagem PHP nos advertir de que a variável foi declarada mas não foi inicializada com algum valor. Esta dica foi revisada, atualizada e testada no PHP 8. |
Delphi ::: VCL - Visual Component Library ::: TStringGrid |
Como obter ou definir a quantidade de linhas e colunas fixas em um TStringGrid do DelphiQuantidade de visualizações: 12261 vezes |
Um controle TStringGrid possui a capacidade de exibir linhas e colunas fixas, ou seja, estas linhas e colunas permanecem visíveis na área do componente quando as barras de rolagem são acionadas. Isso é útil na exibição dos títulos das colunas ou numeração das linhas. A quantidade de linhas fixas no controle TStringGrid pode ser definida por meio da propriedade FixedRows, enquanto a quantidade de colunas fixas pode ser definida por meio da propriedade FixedCols. Estas propriedades podem ser manipuladas em tempo de design ou execução. Veja um trecho de código no qual eliminamos as linhas e colunas fixas (definindo o valor 0 para ambas as propriedades): procedure TForm1.Button1Click(Sender: TObject); begin // vamos definir a quantidade de linhas e colunas fixas // no TStringGrid StringGrid1.FixedRows := 0; StringGrid1.FixedCols := 0; end; Em tempo de execução a quantidade de linhas e/ou colunas fixas em um TStringGrid podem ser obtidas com código semelhante ao mostrado abaixo: procedure TForm1.Button1Click(Sender: TObject); begin // vamos obter a quantidade de linhas e colunas fixas // no TStringGrid Memo1.Lines.Add('Quantidade de linhas fixas: ' + IntToStr(StringGrid1.FixedRows)); Memo1.Lines.Add('Quantidade de colunas fixas: ' + IntToStr(StringGrid1.FixedCols)); end; Execute este código e clique no botão. Você terá um resultado parecido com: Quantidade de linhas fixas: 1 Quantidade de colunas fixas: 1 |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como remover quebras de linhas de uma string - Como usar o método replaceAll() da classe String para remover quebras de linha de um texto - RevisadoQuantidade de visualizações: 45 vezes |
Nesta dica eu mostro como podemos usar o método replaceAll() da classe String para remover quebras de linha de uma palavra, frase ou texto. Veja:package arquivodecodigos; public class Estudos{ public static void main(String[] args){ String original = "Programar em Java\n é mais fácil do\n que você pensa."; // vamos exibir a String original System.out.println("Original: " + original); // agora vamos remover as quebras de linha String nova = original.replaceAll("[\\n]", ""); // vamos exibir a String sem as quebras de linha System.out.println("Sem quebras de linha: " + nova); System.exit(0); } } Este código exibirá o seguinte resultado: Original: Programar em Java é mais fácil do que você pensa. Sem quebras de linha: Programar em Java é mais fácil do que você pensa. Esta dica foi revisada e atualizada para o Java 8. |
Java ::: Classes e Componentes ::: JComboBox |
Como retornar a quantidade de itens em um JComboBox do Java SwingQuantidade de visualizações: 8308 vezes |
Nesta dica mostrarei como podemos usar a função getItemCount() da classe JComboBox do Java Swing para obtermos a quantidade de itens no controle. Note que usei um botão JButton no exemplo também. Ao clicarmos no botão, uma mensagem JOptionPane.showMessageDialog será exibida contendo a quantidade de itens no JComboBox. Veja o código Java Swing completo para o exemplo: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Estudos extends JFrame{ JComboBox combo; public Estudos(){ super("A classe JComboBox"); Container c = getContentPane(); c.setLayout(new FlowLayout(FlowLayout.LEFT)); // Cria os itens da lista String nomes[] = {"Carlos", "Marcelo", "Fabiana", "Carolina", "Osmar"}; // Cria o JComboBox combo = new JComboBox(nomes); // Um botão que permite obter a quantidade de itens JButton btn = new JButton("Quantidade de itens"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ int quant = combo.getItemCount(); JOptionPane.showMessageDialog(null, "O JComboBox contém " + quant + " itens"); } } ); // Adiciona o JComboBox à janela c.add(combo); // Adiciona o botão à janela c.add(btn); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
PHP ::: Dicas & Truques ::: Arquivos e Diretórios |
Como obter a extensão de um arquivo em PHP usando a função pathinfo()Quantidade de visualizações: 9990 vezes |
Em algumas situações precisamos obter a extensão de um arquivo. Isso pode ser feito por meio do uso da função pathinfo(), que retorna informações sobre um arquivo, incluindo seu caminho. Para obter a extensão, só precisamos fornecer a constante PATHINFO_EXTENSION para o segundo parâmetro da função. Veja o código: <?php // caminho e nome do arquivo que queremos obter a extensão $arquivo = "/home/xxxx/xxxx/foto.jpg"; // obtém a extensão $ext = pathinfo($arquivo, PATHINFO_EXTENSION); // exibe o resultado echo "A extensão do arquivo é: " . $ext; ?> Ao executarmos este código teremos o seguinte resultado: A extensão do arquivo é: jpg |
Nossas 20 dicas & truques de programação mais populares |
JavaScript - Como testar se uma string termina com uma determinada substring em JavaScript usando a função endsWith() JavaScript - Como somar dias a uma data em JavaScript usando uma função personalizada adicionar_dias() que retorna um objeto Date |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |