![]() |
|
|
Planilha de Dimensionamento de Tubulações
Hidráulicas Água Fria e Água Quente CompletaNossa planilha automática de dimensionamento de tubulações de água fria e quente é uma ferramenta desenvolvida para auxiliar engenheiros e projetistas no cálculo rápido e preciso das redes hidráulicas de edificaçoes. Por meio da inserçao de dados como vazao, diâmetro da tubulaçao, comprimento da rede, material do tubo e coeficientes hidráulicos, a planilha realiza automaticamente os cálculos necessários para verificar velocidade da água, perda de carga e dimensionamento adequado das tubulaçoes. |
||
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como usar a propriedade Active da classe TClientDataSet do DelphiQuantidade de visualizações: 12855 vezes |
|
A propriedade Active de um controle TClientDataSet pode ser definida em tempo de design (pelo Object Inspector) ou em tempo de execução. Se o valor for True os dados armazenados no TClientDataSet podem ser lidos e manipulados. Se o valor for False, o client dataset está fechado (closed) e não podemos acessar nem manipular os dados contidos nele. Veja no trecho de código abaixo como definir o valor da propriedade Active em tempo de execução:
procedure TForm3.Button3Click(Sender: TObject);
begin
// vamos ativar o client dataset
ClientDataSet1.Active := True;
// vamos testar se o client dataset foi mesmo ativado
if ClientDataSet1.Active then
ShowMessage('O ClientDataSet está ativo')
else
ShowMessage('O ClientDataSet NÃO está ativo')
end;
Ao clicar no botão nós "ativamos" o client dataset e em seguida testamos o valor da propriedade Active para informar se o controle foi realmente ativado. É preciso ter muito cuidado. Tentar manipular os dados de um client dataset fechado pode resultar em uma exceção do tipo EDatabaseError com mensagens parecidas com: Project Projeto.exe raised exception class EDatabaseError with message 'ClientDataSet1: Cannot perform this operation on a closed dataset'. Ao definirmos o valor True para a propriedade Active as seguintes ações ocorrem: 1) O client dataset é preenchido com dados. Dependendo das propriedades do controle, estes dados podem vir de três formas diferentes: a) Do arquivo especificado na propriedade FileName; b) Do provider especificado na propriedade ProviderName ou por meio do método SetProvider. (algumas classes derivadas de TCustomClientDataSet possuem um componente interno que faz o papel do provider); c) Os dados que estavam ativos quando o client dataset foi desativado (somente se a aplicação foi executada durante um certo período depois que o dataset foi desativado). 2) O evento BeforeOpen é disparado. 3) O valor dsBrowse é atribuído à propriedade State do dataset. 4) Abre e posiciona um cursor no primeiro registro do conjunto de dados. 5) Dispara o evento AfterOpen. Se o client dataset nunca foi ativado, atribuir o valor True para a propriedade Active faz com que a estrutura (metadata) do client dataset seja definida. Esta estrutura é obtida juntamente com o pacote de dados a partir do provider ou armazenado em disco. Se não houver pacote de dados, tal estrutura é construída usando o valor atual da propriedade FieldDefs ou a partir dos componentes de campos persistentes listados na propriedade Fields. Se um erro ocorrer durante a abertura do dataset, seu estado (State) é definido como dsInactive e o cursor de navegação é fechado. Ao definirmos o valor False para a propriedade Active as seguintes ações ocorrem: 1) O evento BeforeClose é disparado. 2) O valor para a propriedade State é definido como dsInactive. 3) O cursor de navegação é fechado, salvando os dados atuais em disco se a propriedade FileName estiver definida e salvando o pacote de dados atual em cache de forma que o mesmo possa ser restaurado mais tarde quando o dataset for reaberto. 4) O evento AfterClose é disparado. Importante: Uma chamada ao método Open do TClientDataSet define a propriedade Active como True, enquanto uma chamada ao método Close a define como False. Esta dica foi escrita e testada no Delphi 2009. |
Delphi ::: Imagens, Gráficos e Cores ::: TBitmap (A classe TBitmap) |
Computação gráfica em Delphi - Como usar a classe TBitmap do DelphiQuantidade de visualizações: 17254 vezes |
|
A classe TBitmap encapsula um bitmap Windows (HBITMAP, um handle para um bitmap), incluindo sua paleta (HPALETTE, um handle para uma paleta de cores). Esta classe herda de TGraphic e é usada para criar, manipular (redimensionar, rolar, rotacionar, pintar, etc) e armazenar imagens na memória e como arquivos em disco. A classe TBitmap contém muitas propriedades e métodos úteis. Entre seus métodos podemos citar LoadFromFile(), usado para carregar uma imagem bitmap a partir do disco e guardá-la em memória como um objeto TBitmap. Veja o trecho de código abaixo:
procedure TForm2.Button1Click(Sender: TObject);
var
bmp: TBitmap;
begin
// vamos criar o bitmap
bmp := TBitmap.Create;
// vamos carregar a imagem e guardá-la no bitmap
bmp.LoadFromFile('foto.bmp');
// vamos desenhar o bitmap no formulário
// começando nas coordenadas x = 0; y = 0 a partir
// do canto superior esquerdo da área cliente do formulário
Form2.Canvas.Draw(0, 0, bmp);
// vamos liberar o bitmap
bmp.Free;
end;
Aqui nós carregamos o bitmap foto.bmp e o desenhamos na superfície do formulário usando o método Draw() do Canvas do formulário. É possível também redimensionar o bitmap ao desenhá-lo no formulário. Veja este novo trecho de código:
procedure TForm2.Button1Click(Sender: TObject);
var
bmp: TBitmap;
retang: TRect; // um objeto TRect
begin
// vamos criar o bitmap
bmp := TBitmap.Create;
// vamos carregar a imagem e guardá-la no bitmap
bmp.LoadFromFile('foto.bmp');
// vamos redimensionar o bitmap na memória de
// acordo com o retângulo abaixo
retang.Top := 0;
retang.Left := 0;
retang.Right := 200;
retang.Bottom := 150;
// vamos desenhar o bitmap usando o método
// StretchDraw da classe TCanvas
Form2.Canvas.StretchDraw(retang, bmp);
// vamos liberar o bitmap
bmp.Free;
end;
Aqui nós usamos um objeto do registro (record) TRect para criar um retângulo especificando o tamanho do bitmap e fornecemos tal retângulo, juntamente com o bitmap, para o método StretchDraw() da classe TCanvas. Este método redimensiona a imagem antes de desenhá-la na superfície do formulário. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Dart ::: Dicas de Estudo e Anotações ::: Estruturas de Controle |
Como usar if...else em Dart - Como usar a estrutura condicional if... else if... else da linguagem DartQuantidade de visualizações: 3765 vezes |
|
Na maioria das linguagens de programação, a estrutura condicional if... else if... else é usada para testar condições e, baseado no resultado dos testes, desviar o fluxo de execução do algorítmo. Veja um exemplo no qual pedimos para o usuário digitar um valor inteiro e efetuamos um teste para saber se o valor é maior que 10:
// Vamos importar a biblioteca dart:io
import 'dart:io';
void main() {
// vamos pedir para o usuário digitar um valor inteiro
stdout.write("Digite um número inteiro: ");
// vamos converter a entrada do usuário para um inteiro e
// e guardar na variavel valor
int valor = int.parse(stdin.readLineSync());
// vamos verificar se o valor lido é maior que 10
if (valor > 10) {
print("O valor é maior que 10.");
} else {
// não é maior que 10
print("O valor não é maior que 10.");
}
}
Este código produz as seguintes saídas: c:\estudos_dart>dart condicional_if_else.dart Digite um número inteiro: 4 O valor não é maior que 10. c:\estudos_dart>dart condicional_if_else.dart Digite um número inteiro: 10 O valor não é maior que 10. c:\estudos_dart>dart condicional_if_else.dart Digite um número inteiro: 15 O valor é maior que 10. Note que testamos apenas um condição e já desviamos para o else caso ela não seja satisfeita. A linguagem Dart nos permite usar if...else aninhados. Veja:
// Vamos importar a biblioteca dart:io
import 'dart:io';
void main() {
// vamos pedir para o usuário digitar um valor inteiro
stdout.write("Digite um número inteiro: ");
// vamos converter a entrada do usuário para um inteiro e
// e guardar na variavel valor
int valor = int.parse(stdin.readLineSync());
// vamos verificar se o valor lido é maior que 10
if (valor > 10) {
print("O valor é maior que 10.");
} else if (valor == 10) {
// é igual a 10
print("O valor é igual a 10.");
} else {
// é menor que 10
print("O valor é menor que 10.");
}
}
Execute este código, digite um valor inteiro e observe seu comportamento. |
Java ::: Classes e Componentes ::: JTextArea |
Java Swing - Como obter o texto selecionado em um controle JTextArea do Java SwingQuantidade de visualizações: 2 vezes |
|
Em algumas situações nós precisamos obter o texto selecionado pelo usuário em um componente JTextArea de nossas aplicações Java Swing. Isso pode ser feito com uma chamada ao seu método getSelectedText(). Veja um trecho de código no qual obtemos o texto selecionado em um JTextArea chamado textArea: textArea = new JTextArea(10, 20); String selecionado = textArea.getSelectedText(); |
Nossas 20 dicas & truques de programação mais populares |
|
Firebird - Como usar o tipo de dados BLOB do Firebird para a gravação de imagens, vídeos e arquivos de música Java - Como testar se um ponto está dentro de um círculo em Java - Desenvolvimento de Games com Java Java - Como quebrar (separar) uma string em palavras usando um objeto da classe StringTokenizer do Java |
Você também poderá gostar das dicas e truques de programação abaixo |
|
Fórmulas da Física - Fórmula da Velocidade - Como calcular a velocidade quando temos a distância percorrida e o tempo gasto |
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 |





