Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Você está aqui: Delphi ::: Dicas & Truques ::: Imagens e Processamento de Imagens |
|
Como capturar um screenshot da área de trabalho e salvá-lo como um Bitmap usando DelphiQuantidade de visualizações: 13393 vezes |
|
Em algumas situações precisamos capturar um screenshot da área de trabalho (Windows Desktop) e salvá-lo como um Bitmap. Esta dica mostra como isso pode ser feito. Note que aqui estamos salvando o bitmap gerado no mesmo diretório do executável. Caso queira salvar o resultado em outra pasta ou diretório, consulte minhas dicas sobre a manipulação de arquivos e diretórios usando Delphi. Veja o código (coloquei no evento OnClick de um botão: procedure TForm2.Button1Click(Sender: TObject); var DCDesk: HDC; bmp: TBitmap; begin // vamos criar o Bitmap bmp := TBitmap.Create; // vamos definir o tamanho do bitmap bmp.Height := Screen.Height; bmp.Width := Screen.Width; // aqui nós obtemos um handle para o contexto de dispositivo // de exibição do Desktop DCDesk := GetWindowDC(GetDesktopWindow); // vamos copiar a imagem do desktop para o bitmap criado // anteriormente BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DCDesk, 0, 0, SRCCOPY); // salvamos o bitmap bmp.SaveToFile('screenshot.bmp'); // liberamos o handle do desktop ReleaseDC(GetDesktopWindow, DCDesk); // e finalmente liberamos o bitmap bmp.Free; ShowMessage('Screenshot criado com sucesso.'); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
|
Link para compartilhar na Internet ou com seus amigos: | |
C++ ::: Fundamentos da Linguagem ::: Tipos de Dados |
Como usar o tipo de dados int da linguagem C++Quantidade de visualizações: 10399 vezes |
O tipo de dados int da linguagem C++ é usado quando queremos representar números inteiros, ou seja, sem partes fracionárias. Veja um trecho de código demonstrando seu uso (note que estes estudos foram feitos no Windows XP - 32 bits - usando Dev-C++):#include <iostream> using namespace std; int main(int argc, char *argv[]){ // declara uma variável do tipo int int idade = 45; cout << "A idade é: " << idade << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } A capacidade de armazenamento do tipo int depende da arquitetura na qual o programa está sendo executado. Uma forma muito comum de descobrir esta capacidade é usar os símbolos INT_MIN e INT_MAX, definidos no header climits (limits.h). Veja: #include <iostream> using namespace std; int main(int argc, char *argv[]){ cout << "Valor mínimo: " << INT_MIN << "\n"; cout << "Valor máximo: " << INT_MAX << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este programa você terá um resultado parecido com: Valor mínimo: -2147483648 Valor máximo: 2147483647 Veja que o tipo inteiro aceita valores positivos e negativos. Tudo que você tem a fazer é tomar todo o cuidado para que os valores atribuidos a variáveis deste tipo não ultrapassem a faixa permitida. Veja um trecho de código que provoca o que chamamos de transbordamento (overflow): #include <iostream> using namespace std; int main(int argc, char *argv[]){ int soma = INT_MAX + 2; cout << "Resultado: " << soma << "\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Este programa exibirá o seguinte resultado: Resultado: -2147483647 Note que este não é o resultado esperado, visto que INT_MAX + 2 deveria retornar: 2147483647 + 2 = 2147483649 Porém, como o valor máximo que pode ser armazenado em um int é 2147483647, o procedimento adotado pelo compilador foi tornar o número negativo e subtrair 1. É claro que, se você testar este código em arquiteturas diferentes o resultado poderá ser diferente do exemplificado aqui. Em termos de bytes, é comum o tipo int ser armazenado em 4 bytes, o que resulta em 32 bits (um byte é formado por 8 bits, lembra?). Veja um trecho de código que mostra como usar o operador sizeof() para determinar a quantidade de bytes necessários para armazenar um variável do tipo int: #include <iostream> using namespace std; int main(int argc, char *argv[]){ cout << "Tamanho de um int: " << sizeof(int) << "\n\n"; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } O resultado da execução deste código será algo como: Tamanho de um int: 4 bytes |
React ::: Elementos de Formulários HTML ::: input type text Element/Object |
Como obter o texto digitado em uma caixa de texto em React usando useState()Quantidade de visualizações: 329 vezes |
Nesta dica mostrarei como podemos retornar o texto digitado em um elemento HTML <input type="text"> ao clicarmos em um botão. Para isso nós faremos uso do gerencimento de estado proporcionado pelo objeto useState do React. Note que teremos dois estados: nome e nomeAtualizado, que estarão conectados às funções setNome() e setNomeAtualizado(). No momento que o texto é digitado na caixa de texto, automaticamente o estado nome é atualizado para corresponder ao contéudo exato do elemento HTML <input type="text">. Somente quando o botão é clicado é que transferimos o valor do estado nome para o estado nomeAtualizado, por meio de uma chamada à função setNomeAtualizado. Veja o código completo para o App.js: // vamos importar o useState import {useState} from 'react'; // função App() que será exportada export default function App() { // vamos criar dois states e suas funções // correspondentes const [nome, setNome] = useState(''); const [nomeAtualizado, setNomeAtualizado] = useState(nome); // aqui nós gerenciamos o evento onChange da caixa // de texto const tratarEventoChange = (event) => { // e chamamos a função que atualiza o estado nome setNome(event.target.value); }; // aqui nós gerenciamos o evento onClick do botão const tratarEventoClick = () => { // aqui nós transferimos o valor do estado // nome para o estado nomeAtualizado setNomeAtualizado(nome); }; // e retornamos para renderização return ( <div> <input type="text" id="nome" name="nome" onChange={tratarEventoChange} value={nome}/> <h2>Nome Informado: {nome}</h2> <h2>Nome Atualizado: {nomeAtualizado}</h2> <button onClick={tratarEventoClick}> Atualizar Estado</button> </div> ); } E aqui está o código para o index.js: // vamos fazer os imports necessários import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import App from './App'; // definimos a raiz da aplicação React const root = ReactDOM.createRoot( document.getElementById('root')); // e renderizamos a aplicação no navegador root.render( <React.StrictMode> <App /> </React.StrictMode> ); Execute o exemplo e você verá uma caixa de texto <input type="text">, um botão <button> e dois elementos <h2>. Quando digitamos na caixa de texto, automaticamente o estado nome é atualizado. Ao clicarmos no botão, o estado nome é transferido para o estado nomeAtualizado, tudo isso é refletido de imediato na página. |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como retornar a posição da última ocorrência de uma substring em uma string Java usando a função lastIndexOf() da classe StringQuantidade de visualizações: 8640 vezes |
Em algumas situações nós precisamos pesquisar uma substring em uma string Java e retornar o índice da última ocorrência encontrada. Para isso nós podemos usar o método lastIndexOf() da classe String. Veja um exemplo completo de seu uso: package estudos; public class Estudos { public static void main(String[] args) { // Este exemplo mostra como pesquisar a última ocorrência // de uma substring em uma string String frase = "As pessoas costumam entender tudo sobre pessoas"; // verifica se a frase contém a palavra "pessoas" e // retorna a posição de sua última ocorrência int res = frase.lastIndexOf("pessoas"); if(res > 0){ System.out.println("A ultima ocorrencia foi encontrada na posicao: " + res); } else{ System.out.println("A substring nao foi encontrada"); } } } Ao executar este código Java nós teremos o seguinte resultado: A ultima ocorrencia foi encontrada na posicao: 40 |
HTML5 ::: Canvas Element ::: Linhas |
Computação gráfica usando HTML 5 - Como usar o método lineTo() do objeto Canvas do HTML5 para desenhar retasQuantidade de visualizações: 2435 vezes |
O método lineTo() do objeto Canvas do HTML5 nos permite desenhar linhas retas entre um ponto x e um ponto y. Para isso, usamos o método moveTo() para mover a caneta (ou pena) de desenho para um coordenada x, y e a partir deste ponto nós especificamos as coordenadas x, y para a outra extremidade da linha. O trecho de código a seguir desenha uma linha saindo das coordenadas x = 20, y = 20 e chegando até x = 300, y = 150. Veja: contexto.moveTo(20, 20); // move a caneta para x, y contexto.lineTo(300, 150); // coordenadas x, y E aqui estão os códigos HTML e JavaScript para o exemplo completo: <!doctype html> <html> <head> <title>O objeto Canvas do HTML5</title> </head> <body> <Canvas id="canvas1" width="500" height="350"></Canvas> <script type="text/javascript"> // obtemos uma referência ao elemento Canvas var canvas = document.getElementById("canvas1"); // obtemos o contexto de desenho var contexto = canvas.getContext("2d"); contexto.beginPath(); // inicia ou reseta o caminho anterior contexto.moveTo(20, 20); // move a caneta para x, y contexto.lineTo(300, 150); // coordenadas x, y contexto.stroke(); // finaliza o desenho </script> </body> </html> Ao abrir esta página HTML nós teremos o seguinte resultado: |
Python ::: Pandas Python Library (Biblioteca Python Pandas) ::: DataFrame |
Como acessar uma linha específica em um DataFrame do Pandas da linguagem Python usando o método iloc()Quantidade de visualizações: 10458 vezes |
Em várias situações nós precisamos investigar o conteúdo de uma determinada linha, ou seja, um registro específico contido em um DataFrame do Pandas. Para isso podemos usar o método iloc() do objeto DataFrame. Este método recebe um valor inteiro representando o índice da linha a ser retornada. É possível também fornecer uma list contendo vários índices, e até mesmo intervalos, mas isso é assunto para outras dicas. O retorno do método é uma Series ou um DataFrame, dependendo dos parâmetros usados. Vamos ver um exemplo? Analise o código a seguir: # importamos a biblioteca Pandas import pandas as pd def main(): # vamos carregar os dados do arquivo .csv dados = pd.read_csv("emprestimos.csv", delimiter=";") # vamos mostrar o DataFrame resultante print(dados) # agora vamos mostrar o conteúdo da terceira linha linha = dados.iloc[2] # mostramos o conteúdo da terceira linha print("\nConteúdo da terceira linha:\n") print(linha) if __name__== "__main__": main() Ao executarmos este código nós teremos o seguinte resultado: id nome idade sexo renda valor parc pont ap 0 1 HELENA508 39 F 6500 8000 6 87 S 1 2 JESSICA631 65 F 3000 500 48 2 N 2 3 FELIPE768 39 M 10200 20000 24 40 S 3 4 AMANDA515 90 F 800 1500 30 87 N 4 5 LAURA312 61 F 1800 15000 50 8 N 5 6 CARLOS291 84 M 970 11000 6 59 N 6 7 CARLOS859 64 F 970 500 12 1 N Conteúdo da terceira linha: id 3 nome FELIPE768 idade 39 sexo M renda 10200 valor 20000 parc 24 pont 40 ap S Name: 2, dtype: object Veja que o conteúdo da linha é exibido na vertical. Se quisermos exibí-lo na horizontal, basta passarmos o índice da linha como uma list. Veja: # agora vamos mostrar o conteúdo da terceira linha linha = dados.iloc[[2]] Agora o resultado será: Conteúdo da terceira linha: id nome idade sexo renda valor parc pont ap 2 3 FELIPE768 39 M 10200 20000 24 40 S Para testarmos se o retorno do método iloc() foi mesmo uma Series, basta usarmos a função type() do Python: # vamos checar o retorno do método iloc() linha = dados.iloc[[2]] print("Tipo do retorno:", type(linha)) Este código exibirá um resultado parecido com: Tipo do retorno: <class 'pandas.core.frame.DataFrame'> |
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |