![]() |
|||||
|
Delphi ::: VCL - Visual Component Library ::: TStringGrid |
Como usar o controle TStringGrid em suas aplicações Delphi - O componente TStringGrid do DelphiQuantidade de visualizações: 19568 vezes |
Um objeto da classe TStringGrid representa um controle de grid que pode ser usado em suas aplicações Delphi para simplificar o processo de se lidar com strings e objetos associados a esta. Veja a posição desta classe na hierarquia de classes do Delphi:System.TObject Classes.TPersistent Classes.TComponent Controls.TControl Controls.TWinControl Controls.TCustomControl Grids.TCustomGrid Grids.TCustomDrawGrid Grids.TDrawGrid Grids.TStringGrid Esta classe implementa também as interfaces IInterfaceComponentReference e IInterface. O uso mais frequente de um controle TStringGrid é quando queremos apresentar um conteúdo texto em um formato tabular. Este controle fornece muitas propriedades para controlar a aparência da grid, assim como eventos e métodos que tiram vantagem da organização tabular da grid ao responder às ações do usuário. Para adicionar um controle TStringGrid ao seu formulário você só precisa acessar a aba Additional no Tool Palette, clicar no controle e arrastá-lo para a posição desejada no formulário. Por padrão, um controle TStringGrid contém 5 linhas e 5 colunas. Novas linhas e novas colunas podem ser adicionadas por meio das propriedades RowCount e ColCount da classe TCustomGrid. Cada célula da grid pode ter seu valor definido ou acessado usando-se a propriedade Cells. Veja um trecho de código no qual definimos o conteúdo da célula situada na segunda linha da primeira coluna do TStringGrid: procedure TForm1.Button1Click(Sender: TObject); begin // vamos definir o conteúdo da célula na segunda linha // da primeira coluna da grid StringGrid1.Cells[0, 1] := 'Osmar J. Silva'; end; Um controle TStringGrid introduz a possibilidade de associar um objeto com cada string na grid. Estes objetos podem encapsular quaisquer informações ou comportamento representado pelas strings apresentadas ao usuário. Se as strings a serem apresentadas na grid representarem valores de campos dos registros de um conjunto de dados (dataset), devemos usar um TDBGrid em vez de um TStringGrid. |
Python ::: Dicas & Truques ::: Data e Hora |
Como formatar a data e hora atual em Python usando a função strftime() da classe datetimeQuantidade de visualizações: 10253 vezes |
Nesta dica eu vou mostrar como é possível usar o método strftime() da classe datetime para formatar e mostrar a data e hora atual no Python. Veja o código completo para o exemplo: from datetime import datetime import locale def main(): # Configurações do usuário locale.setlocale(locale.LC_ALL, '') # Obtém um datetime da data e hora atual hoje = datetime.today() # Exibe a data atual formatada data = hoje.strftime("Hoje é %A, %d de %B de %Y") print(data) if __name__== "__main__": main() Ao executar este código nós teremos o seguinte resultado: Hoje é segunda-feira, 08 de março de 2019 |
Python ::: Python para Engenharia ::: Engenharia Civil - Concreto, Concreto Armado e Concretos Especiais |
Como calcular o Momento Mínimo de uma viga de concreto armado usando Python - Python para Engenharia Civil e Cálculo EstruturalQuantidade de visualizações: 179 vezes |
A ABNT NBR 6118 (Projeto de estruturas de concreto armado) define que todas as vigas, independente de suas dimensões e momentos solicitantes, precisam apresentar uma taxa mínima de armadura de tração. O concreto possui excelente resistência à compressão, porém, sua resistência à tração é muito baixa, ficando em torno de 10% do valor de sua resistência à compressão. A NBR 6118 lista, como primeira exigência, uma taxa mínima absoluta de 0,15% de armadura longitudinal para as vigas de concreto armado. A segunda exigência é calcular a área de armadura mínima a partir do Mdmin, que é o momento mínimo (de projeto) a ser considerado no dimensionamento. Dessa forma, após calcularmos o momento mínimo Mdmin, só precisamos calcular a área de aço correspondente a este momento. A fórmula do momento mínimo para as vigas de concreto armado é: \[M_\text{dmin} = 0,8 \cdot W_\text{0} \cdot f_\text{ctk,sup}\] Onde: Mdmin é o momento mínimo de projeto a ser considerado, em kN.m (ou kN.cm dependendo da necessidade); fctk,sup é o limite superior da resistência à tração média do concreto, em kN.cm2. Em outra dica desta seção eu mostrei como o fctk,sup é calculado; W0 é o módulo de resistência da seção transversal da viga, em m3. Já o Módulo de Resistência da Seção (para seções retangulares), é calculado pela seguinte fórmula: \[W_\text{0} = \frac{b \cdot h^2}{6}\] Onde: W0 é o módulo de resistência da seção transversal da viga, em cm3; b é a largura da viga em centímetros; h é a altura da viga em centímetros. Veja agora o código Python que pede para o usuário informar o FCK do concreto e as dimensões da viga e calcula o fctk,sup, o W0 e finalmente o Mdmin solicitante para o cálculo da armadura longitudinal mínima da viga: # vamos importar o módulo Math import math # função principal do programa def main(): # vamos pedir para o usuário informar o FCK do concreto fck = float(input("Informe o FCK do concreto em Mpa: ")) # vamos ler a largura da viga bw = float(input("Informe a largura bw da viga em cm: ")) # vamos ler a altura da viga h = float(input("Informe a altura h da viga em cm: ")) # agora vamos calcular a resistência à tração média # do concreto fctk_m = 0.3 * math.pow(fck, 2.0 / 3.0) # vamos calcular o limite superior fctk_sup = 1.3 * fctk_m # vamos calcular o módulo de resistência da seção w0 = (bw * math.pow(h, 2) / 6.0) # agora já podemos calcular o momento mínimo mdmin = 0.8 * w0 * (fctk_sup / 10.0) # e mostramos os resultados print("\nO fctk,sup é: {0} Mpa ({1} kN/cm2)".format(round(fctk_sup, 5), round(fctk_sup / 10.0, 5))) print("O módulo de resistência da seção W0 é: {0} cm3 ({1} m3)".format( round(w0, 5), round(w0 / 1000000.0, 5))) print("O momento mínimo Mdmin é: {0} kN.cm ({1} kN.m)".format( round(mdmin, 5), round(mdmin / 100.0, 5))) if __name__ == "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Informe o FCK do concreto em Mpa: 30 Informe a largura bw da viga em cm: 20 Informe a altura h da viga em cm: 50 O fctk,sup é: 3.76541 Mpa (0.37654 kN/cm2) O módulo de resistência da seção W0 é: 8333.33333 cm3 (0.00833 m3) O momento mínimo Mdmin é: 2510.2724 kN.cm (25.10272 kN.m) |
jQuery ::: Dicas & Truques ::: AJAX |
Quais os parâmetros que podem ser usados com o método ajax() da biblioteca jQueryQuantidade de visualizações: 13329 vezes |
O método ajax() do jQuery aceita um mapa de opções para a requisição HTTP a ser realizada. Boa parte destas opções possuem valores padrões e, portanto, não precisam ser especificadas. A lista a seguir mostra os parâmetros disponíveis para o método ajax() na versão 1.2.3: url: Uma string contendo a URL para a qual a requisição HTTP será feita. type (opcional): Uma string definindo o método HTTP a ser usado na requisição (GET ou POST). O valor padrão é GET. dataType (opcional): Uma string definindo o tipo de dados aguardados como resposta do servidor (xml, html, json ou script). ifModified (opcional): Um valor Boolean indicando se o servidor deverá verificar se a página foi modificada antes de responder à requisição. timeout (opcional): O número de milisegundos após o qual a requisição sofrerá timeout e apresentará uma falha. global (opcional): Um valor Boolean indicando se gerenciadores de eventos AJAX globais serão disparados por esta requisição. O valor padrão é true. beforeSend (opcional): Uma função de callback que será executada antes da requisição HTTP ser feita. error (opcional): Uma função de callback que é executada se a requisição falhar. success (opcional): Uma função de callback que será executada se a requisição for feita com sucesso. complete (opcional): Uma função de callback que é executada quando a requisição finalizar. data (opcional): Um mapa ou string que será enviado ao servidor junto com a requisição. processData (opcional): Um valor boolean indicando se a conversão dos dados enviados em um formato objeto para o formato query-string deverá ser feita. O valor padrão é true. contentType (opcional): Uma string contendo o tipo de conteúdo MIME a ser definindo para a requisição. O valor padrão é application/x-www-form-urlencoded. async (opcional): Um valor Boolean indicando se a requisição deverá ser feita de forma assíncrona. O valor padrão é true. Nesta seção você encontra vários exemplos de uso da função ajax() do jQuery. |
JavaScript ::: Dicas & Truques ::: Set (Conjunto) |
Como retornar elementos presentes no primeiro vetor e não presentes no segundo vetor em JavaScript usando o objeto SetQuantidade de visualizações: 1457 vezes |
Este é um código muito interessante de ser feito em JavaScript. Dados dois arrays a e b, temos que retornar os números que estão presentes no primeiro array, mas que não estão presentes no segundo array. Este código pode ser escrito usando diversas abordagens. Nesta dica mostrarei como resolvê-lo usando um objeto Set, adicionado à linguagem JavaScript na revisão ECMAScript 2015, também chamada de ES6 e ECMAScript 6. Vamos ao código então: <html> <head> <title>O objeto Set do JavaScript</title> </head> <body> <script type="text/javascript"> // primeiro vetor var a = [4, 8, 1, 23, 65]; // segundo vetor var b = [23, 8, 90, 3, 7]; // vetor resultante var c = []; // criamos um objeto Set e guardamos nele os // elementos do segundo vetor var set = new Set(); for (var i = 0; i < b.length; i++){ set.add(b[i]); } // agora varremos o primeiro vetor e usamos // o método has() do objeto Set para verificar se // o valor não está contido nele for (var i = 0; i < a.length; i++){ if(!set.has(a[i])){ c.push(a[i]); } } document.writeln("Primeiro vetor: " + a); document.writeln("<br>Segundo vetor: " + b); document.writeln("<br>Resultado: " + c); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: Primeiro vetor: 4, 8, 1, 23, 65 Segundo vetor: 23, 8, 90, 3, 7 Resultado: 4, 1, 65 Note que os valores 4, 1 e 65 estão presentes no primeiro array mas não estão presentes no segundo. |
Java ::: Dicas & Truques ::: Expressões Regulares |
Como remover todos os espaços de uma string em Java usando expressões regularesQuantidade de visualizações: 8192 vezes |
Nesta dica mostrarei como usar o método replaceAll() da classe Matcher da linguagem Java para remover todos os espaços de um texto ou frase. Esta classe faz parte do pacote java.util.regex e é usada em quase todos os códigos Java envolvendo expressões regulares. Veja o código completo para o exemplo: package arquivodecodigos; import java.util.regex.*; public class Estudos{ public static void main(String args[]){ String padrao = "\\s"; Pattern regPat = Pattern.compile(padrao); String frase = "Esta frase contém alguns espaços"; System.out.println(frase); Matcher matcher = regPat.matcher(frase); String res = matcher.replaceAll(""); System.out.println("Sem espaços: " + res); } } Ao executar este código Java nós teremos o seguinte resultado: Esta frase contém alguns espaços Sem espaços: Estafrasecontémalgunsespaços |
Delphi ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como obter o índice inicial e final de um vetor usando as funções Low() e High() da unit System do DelphiQuantidade de visualizações: 11975 vezes |
Como os índices dos vetores em Delphi, diferente de outras linguagens, nem sempre começam em 0, não podemos deduzir que Length() - 1 retornará o índice final do vetor. Desta forma, podemos usar as funções Low() e High(), ambas presentes na unit System. A função Low() retorna o índice inicial do vetor, enquanto High() retorna o índice final. Veja: procedure TForm3.Button1Click(Sender: TObject); var valores: array[11..20] of Integer; inicio, fim: Integer; begin // vamos obter o índice inicial do vetor inicio := Low(valores); // vamos obter o índice final da vetor fim := High(valores); // vamos exibir o resultado ShowMessage('O índice inicial do vetor é: ' + IntToStr(inicio)); ShowMessage('O índice final do vetor é: ' + IntToStr(fim)); ShowMessage('O tamanho do vetor é: ' + IntToStr((fim - inicio) + 1)); end; Lembre-se desta dica quando precisar percorrer os elementos de um vetor ou uma matriz usando o laço For da linguagem Delphi. |
Delphi ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI |
Como retornar uma lista dos dispositivos de entrada MIDI no sistema usando DelphiQuantidade de visualizações: 11259 vezes |
Em algumas ocasiões nós precisamos obter uma lista dos dispositivos de entrada MIDI no sistema, talvez com o propósito de selecionar um determinado dispositivo em uma ListBox ou ComboBox. O trecho de código abaixo mostra como isso pode ser feito. O primeiro passo é declarar uma variável do tipo TMidiInCaps. Este registro está declarado na unit MMSystem.pas e é uma tradução da estrutura MIDIINCAPS da API do Windows. Entre outros tipos de dados, esta estrutura possui um membro szPname que retorna o nome do dispositivo. Na unit MMSystem.pas este membro está declarado como array[0..MAXPNAMELEN-1] of AnsiChar, ou seja, uma matriz de AnsiChar que será preenchida pela API do Windows e terá seu final marcado com o caractere null (NULL terminated string). Note a conversão deste valor para o tipo String no momento de inserí-lo no ComboBox. Em versões anteriores do Delphi (estou escrevendo este código no Delphi 2009) podíamos usar a função StrPas() para esta finalidade. O passo seguinte é obter a quantidade de dispositivos de entrada MIDI. Isso é feito com uma chamada à função midiInGetNumDevs da API do Windows. Uma vez obtida a quantidade de dispositivos nós usamos um laço for e, no corpo deste laço, usamos o valor da variável de controle i para efetuar uma chamada à função midiInGetDevCaps(), também da API do Windows: midiInGetDevCaps(i, @MidiInCaps, sizeof(TMidiInCaps)); Esta função recebe o identificador do dispositivo (um valor inteiro começando em 0 e indo até a quantidade de dispositivos - 1), um ponteiro para um registro MidiInCaps e o tamanho em bytes do registro. Se a função for executada com sucesso, o registro MidiInCaps será preenchido com várias informações úteis, tais como o nome do dispositivo, o ID do fabricante, o ID do produto, versão do driver, etc. Para finalizar, nós acessamos o campo szPname do registro MidiInCaps e o adicionamos no ComboBox. Veja o código completo a seguir: procedure TForm1.Button1Click(Sender: TObject); var i: Integer; MidiInCaps: TMidiInCaps; // este record está definido em MMSystem.pas erro: Word; begin // uses MMSystem ComboBox1.Clear; // midiInGetNumDevs retorna a quantidade de dispositivos de entrada // MIDI no sistema for i := 0 to midiInGetNumDevs - 1 do begin // vamos obter o dispositivo identificado pela variável i (uDeviceID) erro := midiInGetDevCaps(i, @MidiInCaps, sizeof(TMidiInCaps)); if erro <> MMSYSERR_NOERROR then raise Exception.Create('Não foi possível obter a lista de dispositivos ' + 'de entrada MIDI'); // vamos adicionar o nome do dispositivo no ComboBox ComboBox1.Items.Add(String(MidiInCaps.szPname)); end; end; Ao executar este código o ComboBox será preenchido no mínimo com o valor: MPU-401 Este é o MPU 401-compatible MIDI input port, um dos dispositivos de entrada MIDI mais comuns nos PCs, embora já não esteja tão presente nos computadores mais atuais. Para fins de compatibilidade esta dica ou anotação foi escrita usando Delphi 2009. |
Python ::: Dicas & Truques ::: Data e Hora |
Datas e horas em Python - Como obter a hora como um decimal no intervalo 00-12 (formato 12 horas)Quantidade de visualizações: 7539 vezes |
Este exemplo mostra como obter a hora como um decimal no intervalo 00-12 (formato 12 horas) usando o método strftime() da classe datetime com o sinalizador "%I". Veja o código completo para a dica: from datetime import datetime def main(): # Obtém um datetime da data e hora atual hoje = datetime.today() # Exibe a hora atual como um decimal print(hoje.strftime("A hora é: %I")) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: A hora é: 10 |
Ruby ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercício Resolvido de Ruby - Como percorrer os elementos de um array em Ruby usando a função eachQuantidade de visualizações: 618 vezes |
Pergunta/Tarefa: Dado o seguinte array de int: # vamos criar um array com 5 elementos valores = [8, 3, 10, 4, 7] Sua saída deverá ser parecida com: 8 3 10 4 7 Veja a resolução comentada deste exercício usando Ruby: # vamos criar um array com 5 elementos valores = [8, 3, 10, 4, 7] # vamos usar a função each para percorrer # os itens do array e exibir seus valores valores.each { | valor | print valor.to_s + " " } Veja agora essa mesma resolução usando uma pequena variação, dessa vez usando each...do: # vamos criar um array com 5 elementos valores = [8, 3, 10, 4, 7] # vamos usar a função each para percorrer # os itens do array e exibir seus valores valores.each do | valor | print valor.to_s + " " end |
Nossas 20 dicas & truques de programação mais populares |
C - Como calcular a massa de um corpo dada sua energia cinética e sua velocidade usando a linguagem C JavaScript - Como testar se uma string contém uma determinada substring em JavaScript usando a função includes() |
Você também poderá gostar das dicas e truques de programação abaixo |
VB.NET - Como comparar strings em VB.NET usando o método Equals() da classe String do .NET Framework JavaScript - Como retornar o tamanho de uma string em JavaScript usando a propriedade length do objeto String |
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 |