Lista de Exercícios Resolvidos: Java | Python | VisuAlg | Portugol | C | C# | VB.NET | C++
Você está aqui: C# ::: Windows Forms ::: DataGridView

Usando a classe DataGridViewRowCollection para retornar referências a todas as linhas de um DataGridView

Quantidade 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 datetime

Quantidade 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 Python

Quantidade 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# API

Quantidade 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 Delphi

Quantidade 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

Osmar J. Silva
Programador Freelancer
WhatsApp +55 (062) 98553-6711

Goiânia-GO
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.
José de Angelis
Programador Freelancer
WhatsApp +55 (062) 98243-1195

Goiânia-GO
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
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 13 usuários muito felizes estudando em nosso site.