Você está aqui: C# ::: Windows Forms ::: DataGridView |
|
Usando a classe DataGridViewRowCollection para retornar referências a todas as linhas de um DataGridViewQuantidade de visualizações: 7096 vezes |
|
A classe DataGridViewRowCollection é usada para obter referências a todas as linhas de um DataGridView. Esta coleção é obtida por meio da propriedade Rows do DataGridView. Veja:private void button3_Click(object sender, EventArgs e){ // obtém a coleção DataGridViewRowCollection, que // representa todas as linhas do DataGridView DataGridViewRowCollection linhas = dataGridView1.Rows;...... Aqui nós usamos a propriedade Count da classe DataGridViewRowCollection para obter a quantidade de objetos DataGridViewRow na coleção. |
|
Link para compartilhar na Internet ou com seus amigos: | |
Python ::: Dicas & Truques ::: Data e Hora |
Como adicionar dias à uma data em Python usando a função timedelta() da classe datetimeQuantidade de visualizações: 8580 vezes |
Nesta dica mostrarei como é possível usar o método timedelta() da classe datetime do Python para adicionar um determinado número de dias a uma data. O truque aqui é fornecer apenas o dia para o método timedelta(), obter o resultado e somá-lo com a data que já temos. Veja o código completo para o exemplo: import datetime # função principal do programa def main(): # dias a serem adicionados quant_dias = 2 # Obtém a data de hoje hoje = datetime.date.today() print("Hoje é:", hoje) # Adiciona dias à data ...... Ao executarmos este código Python nós teremos o seguinte resultado: Hoje é: 2021-03-11 Daqui à 2 dias será 2021-03-13 |
Python ::: Pandas Python Library (Biblioteca Python Pandas) ::: DataFrame |
Como usar o objeto DataFrame da biblioteca Pandas do PythonQuantidade de visualizações: 1599 vezes |
A biblioteca Pandas do Python é uma das preferidas para o estudo e desenvolvimento de soluções envolvendo Big Data, Data Science, Data Mining, Machine Learning, Inteligência Artificial, etc. E o objeto DataFrame é uma das partes mais importantes dessa biblioteca. Um objeto DataFrame é uma estrutura de dados bidimensional, ou seja, uma tabela contendo linhas e colunas. Nesse formato tabular, que pode ter seu tamanho redimensionado, as informações contidas no objeto DataFrame podem ser atualizadas de acordo com as necessidades do nosso código. Além disso, linhas e colunas podem ser adicionadas ou excluídas em tempo de execução. A forma mais comum de criarmos um DataFrame é usando o seu construtor. Veja: # importamos a biblioteca Pandas import pandas as pd def main(): # conteúdo do DataFrame produtos = [['Notebook AB43', 43], ['Tela LED', 87], ['Bateria 16 Volts', 120]] # vamos construir o DataFrame ...... Ao executarmos este código nós teremos o seguinte resultado: Produto Estoque 0 Notebook AB43 43 1 Tela LED 87 2 Bateria 16 Volts 120 Aqui nós usamos uma list contendo três lists, ou seja, uma matrix de três linhas e duas colunas. Veja como obter o mesmo resultado usando um dicionário: # importamos a biblioteca Pandas import pandas as pd def main(): # conteúdo do DataFrame produtos = {'Produto':['Notebook AB43', 'Tela LED', 'Bateria 16 Volts'], 'Estoque':[43, 87, 120]} ...... Execute este código e verá que o DataFrame resultante é o mesmo do código anterior. |
C++ ::: Dicas & Truques ::: Strings e Caracteres |
Como adicionar caracteres ao final de uma string C++ usando a função push_back()Quantidade de visualizações: 8856 vezes |
A função push_back() do C++ é útil quando precisamos adicionar caracteres individuais ao final de uma string. Veja um exemplo: #include <string> #include <iostream> using namespace std; int main(int argc, char *argv[]){ string str = "Gosto muito de PHP"; string temp; // vamos percorrer os caracteres da primeira string // e adicioná-los na segunda um de cada vez ...... Ao executar este código C++ nós teremos o seguinte resultado: Gosto muito de PHP Note que usamos um laço for para percorrer individualmente todos os caracteres da primeira string e adicioná-los um de cada vez na segunda string. Veja uma variação deste código, no qual exibimos o conteúdo da primeira string invertido: #include <string> #include <iostream> using namespace std; int main(int argc, char *argv[]) { string str = "Gosto muito de PHP"; string temp; // vamos percorrer os caracteres da primeira string // e adicioná-los na segunda um de cada vez. // desta vez vamos obter o resultado invertido ...... Ao executar este novo código C++ nós teremos o seguinte resultado: String original: Gosto muito de PHP String invertida: PHP ed otium otsoG |
Revit C# ::: Dicas & Truques ::: Eixos - Grids |
Como criar eixos no Revit via programação usando a função Create() da classe Grid da Revit C# APIQuantidade de visualizações: 82 vezes |
Os eixos, ou grids, são linhas que auxiliam na construção de um projeto, ou seja, uma espécie de malha de linhas. Eles são mais utilizados quando se trabalha com elementos estruturais, para a locação de colunas e pilares. No Revit, os eixos podem ser verticais, horizontais, inclinados e até em forma de arcos. Para criá-los, vá na aba Arquitetura, seção Dados e localize o item Eixo (ou digite GR). Via programação nós podemos criar um eixo no Revit usando a função Create() da classe Grid da Revit C# API. Neste exemplo mostrarei, em detalhes, como isso pode ser feito. O primeiro passo é obter uma referência ao documento UI atual usando this.ActiveUIDocument. Após isso acessar o documento usando uidoc.Document. As coordenadas geométricas de início e fim do eixo são criadas como objetos da classe XYZ. Então, de posse das coordenadas, nós criamos um objeto Line usando a função Line.CreateBound(). Para finalizar nós usamos a função Grid.Create() para desenhar o eixo na área de desenho do Revit. Note como passamos o objeto Line e uma referência ao documento atual para esta função. Veja ainda o uso de uma Transaction para abrir uma transação do Revit, criar o elemento e fechá-la em seguida. Este exemplo criará um eixo com o LevelId -1, ou seja, no primeiro nível do documento. Em outras dicas dessa seção eu mostro como definir o nível para o grid recém-criado. Veja o código Revit C# API completo para o exemplo: using System; using System.Collections.Generic; using System.IO; using System.Linq; using Autodesk.Revit.DB; using Autodesk.Revit.DB.Architecture; using Autodesk.Revit.DB.Structure; using Autodesk.Revit.UI; using Autodesk.Revit.UI.Selection; namespace Estudos { [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes. TransactionMode.Manual)] [Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")] public partial class ThisApplication { private void Module_Startup(object sender, EventArgs e) { // primeiro obtemos uma referência ao documento atual UIDocument uidoc = this.ActiveUIDocument; Document doc = uidoc.Document; // criamos a linha geométrica para posicionar o eixo // não se esqueça de converter metros para pés XYZ inicio = new XYZ(0, -100, 0); XYZ final = new XYZ(0, 100, 0); ...... Ao executar este código Revit C# API teremos o seguinte resultado: O novo eixo foi criado com o ID: 49827 |
Delphi ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI |
Como retornar uma lista dos dispositivos de saída MIDI no sistema usando DelphiQuantidade de visualizações: 10997 vezes |
Em algumas ocasiões nós precisamos obter uma lista dos dispositivos de saída 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 TMidiOutCaps. Este registro está declarado na unit MMSystem.pas e é uma tradução da estrutura MIDIOUTCAPS 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 saída MIDI. Isso é feito com uma chamada à função midiOutGetNumDevs 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 midiOutGetDevCaps(), também da API do Windows: midiOutGetDevCaps(i, @MidiOutCaps, sizeof(TMidiOutCaps)); 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 MidiOutCaps e o tamanho em bytes do registro. Se a função for executada com sucesso, o registro MidiOutCaps 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, tipo do dispositivo MIDI, número de vozes suportadas, número máximo de notas que podem ser tocadas simultaneamente, etc. Para finalizar, nós acessamos o campo szPname do registro MidiOutCaps e o adicionamos no ComboBox. Veja o código completo a seguir: procedure TForm1.Button2Click(Sender: TObject); var i: Integer; MidiOutCaps: TMidiOutCaps; // este registro (record) está definido em MMSystem.pas erro: Word; begin // uses MMSystem ComboBox2.Clear; // midiOutGetNumDevs retorna a quantidade de dispositivos de saída MIDI no sistema for i := 0 to midiOutGetNumDevs - 1 do begin // vamos obter o dispositivo identificado pela variável i (uDeviceID) ...... Ao executar este código o ComboBox será preenchido com valores semelhantes à: Microsoft GS Wavetable SW Synth MPU-401 Nas demais dicas relacionadas a este assunto você deverá sempre indicar o dispositivo de saída MIDI. Geralmente você poderá fornecer os valores 0 ou 1 para as funções MIDI que pedem o ID do dispositivo de saída. Para fins de compatibilidade esta dica ou anotação foi escrita usando Delphi 2009. |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
Quem Somos |
Programador Freelancer - Full Stack Developer, Professional Java Developer, PHP, C/C++, Python Programmer, wxWidgets Professional C++ Programmer, Freelance Programmer. Formado em Ciência da Computação pela UNIP (Universidade Paulista Campus Goiânia) e cursando Engenharia Civil pela PUC-Goiás. Possuo conhecimentos avançados de Java, Python, JavaScript, C, C++, PHP, C#, VB.NET, Delphi, Android, Perl, e várias tecnologias que envolvem o desenvolvimento web, desktop, front-end e back-end. Atuo há mais de 20 anos como programador freelancer, atendendo clientes no Brasil, Portugal, Argentina e vários outros paises.
Entre em contato comigo para, juntos, vermos em que posso contribuir para resolver ou agilizar o desenvolvimento de seus códigos.
|
Programador Freelancer - Formado em Sistemas de Informação pela Faculdade Delta, Pós graduado em Engenharia de Software (PUC MINAS), Pós graduado Marketing Digital (IGTI) com ênfase em Growth Hacking. Mais de 15 anos de experiência em programação Web. Marketing Digital focado em desempenho, desenvolvimento de estratégia competitiva, analise de concorrência, SEO, webvitals, e Adwords, Métricas de retorno. Especialista Google Certificado desde 2011 Possui domínio nas linguagens PHP, C#, JavaScript, MySQL e frameworks Laravel, jQuery, flutter. Atualmente aluno de mestrado em Ciência da Computação (UFG)
Não basta ter um site. É necessário ter um site que é localizado e converte usuários em clientes. Se sua página não faz isso, Fale comigo e vamos fazer uma analise e conseguir resultados mais satisfatórios..
|
Linguagens Mais Populares |
1º lugar: Java |