![]() |
|
||||
|
|||||
Você está aqui: Cards de Engenharia Civil - Estruturas de Aço e Madeira |
||
|
||
|
|
||
Delphi ::: VCL - Visual Component Library ::: TListBox |
Como usar a propriedade Items da classe TListBox do DelphiQuantidade de visualizações: 11602 vezes |
|
A propriedade Items da classe TListBox representa um objeto da classe TStrings, a classe base para objetos que representam uma lista de strings. Isso quer dizer que podemos acessar a propriedade Items e usar todos os métodos e propriedades da classe TStrings, tais como Add(), Clear(), Delete(), Exchange(), etc. Veja, por exemplo, como usar o método Add() para adicionar um novo item na ListBox:
procedure TForm1.Button1Click(Sender: TObject);
begin
// vamos adicionar um novo item na ListBox
listBox1.Items.Add('Arquivo de Códigos');
end;
É possível obter um referência à propriedade Items para manipular os itens da ListBox indiretamente. Veja:
procedure TForm1.Button1Click(Sender: TObject);
var
lista: TStrings;
begin
// vamos obter a lista de itens da ListBox
lista := listBox1.Items;
// vamos adicionar um novo item à lista
lista.Add('Arquivo de Códigos');
end;
Esta técnica é útil quando queremos inserir itens em uma TListBox a partir de uma função ou procedure. Veja:
// procedure personalizada para inserir itens em uma TListBox
procedure inserirItensListBox(lista: TStrings);
begin
lista.Add('Arquivo de Códigos');
lista.Add('Osmar J. Silva');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// vamos chamar a procedure que adiciona os itens na ListBox
inserirItensListBox(listBox1.Items);
end;
Para finalizar, veja como escrever uma função personalizada que constrói e retorna uma lista de strings. Note como usamos o objeto TStrings retornado para preencher a ListBox:
// função personalizada que constrói e retorna uma lista
// de strings
function obterLista: TStrings;
var
lista: TStringList;
begin
lista := TStringList.Create;
lista.Add('Arquivo de Códigos');
lista.Add('Osmar J. Silva');
Result := lista;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
// vamos obter a lista de strings
ListBox1.Items := obterLista;
end;
Observe que, embora o retorno seja TStrings, no corpo da função nós construímos um objeto da classe TStringList. Isso acontece porque TStrings é uma classe abstrata e, portanto, não podemos chamar seu construtor. Como TStringList herda de TStrings e é uma classe concreta, esta é a escolha mais óbvia. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: VCL - Visual Component Library ::: TEdit |
Como habilitar ou desabilitar um TEdit do Delphi usando a função EnableWindow() da API do WindowsQuantidade de visualizações: 11976 vezes |
|
Embora o Delphi já nos forneça as ferramentas necessárias para habilitar ou desabilitar um TEdit em tempo de execução, é importante saber como realizar esta tarefa usando a API do Windows. Para isso, podemos usar a função EnableWindow() com os valores true ou false. A função EnableWindow() possui a seguinte assinatura em C/C++: BOOL EnableWindow( HWND hWnd, BOOL bEnable ); No arquivo Windows.pas podemos encontrar o protótipo e corpo desta função convertidos para Object Pascal:
// Protótipo
{$EXTERNALSYM EnableWindow}
function EnableWindow(hWnd: HWND; bEnable: BOOL): BOOL; stdcall;
// Implementação
function EnableWindow; external user32 name 'EnableWindow';
Note que precisamos informar o HWND (parâmetro hWnd) para a caixa de texto e um valor BOOL. Se fornecermos false, a caixa de texto será desabilitada. Veja:
procedure TForm1.Button1Click(Sender: TObject);
begin
// vamos desabilitar o TEdit usando a função EnableWindow()
// com o valor false
if EnableWindow(Edit1.Handle, False) = True then
begin
ShowMessage('A caixa de texto foi desabilitada com sucesso.');
end;
end;
Para habilitar a caixa de texto novamente, só precisamos fornecer o valor true para o parâmetro bEnable:
procedure TForm1.Button1Click(Sender: TObject);
begin
// vamos habilitar o TEdit usando a função EnableWindow()
// com o valor true
if EnableWindow(Edit1.Handle, True) = True then
begin
ShowMessage('A caixa de texto foi habilitada com sucesso.');
end;
end;
É importante observar que o retorno da função EnableWindow será False se tentarmos habilitar uma caixa de texto que já está habilitada ou tentarmos desabilitar uma caixa de texto que já está desabilitada. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Como inverter a ordem dos elementos de um array usando apenas uma variável temporáriaQuantidade de visualizações: 9850 vezes |
|
Pergunta/Tarefa: Considere o seguinte trecho de código:
// declara, constrói e inicializa um array de 10 inteiros
int valores[] = {6, 3, 90, 1, 54, 7, 12, 32, 9, 4};
int temp;
Ordem inicial: 6 3 90 1 54 7 12 32 9 4 Ordem invertida: 4 9 32 12 7 54 1 90 3 6 Veja a resolução comentada deste exercício usando Java console:
package estudos;
public class Estudos {
public static void main(String[] args) {
// declara, constrói e inicializa um array de 10 inteiros
int valores[] = {6, 3, 90, 1, 54, 7, 12, 32, 9, 4};
int temp;
// vamos mostar a ordem inicial dos elementos no vetor
System.out.print("Ordem inicial: ");
for(int i = 0; i < valores.length; i++){
System.out.print(valores[i] + " ");
}
// vamos inverter a ordem dos elementos no array
int inicio = 0, fim = valores.length - 1;
while(inicio < fim){
temp = valores[inicio];
valores[inicio] = valores[fim];
valores[fim] = temp;
// incrementa e decrementa as variáveis de controle
inicio++;
fim--;
}
// vamos mostar a ordem invertida dos elementos do vetor
System.out.print("\nOrdem invertida: ");
for(int i = 0; i < valores.length; i++){
System.out.print(valores[i] + " ");
}
System.out.println();
}
}
|
HTML5 ::: HTML5 + JavaScript ::: Canvas |
Programação gráfica para iniciantes - Como desenhar círculos com ou sem preenchimento usando o método arc() do objeto Canvas do HTML5Quantidade de visualizações: 7199 vezes |
Podemos usar o método arc() do objeto Canvas do HTML5 para desenhar círculos com ou sem prenchimento. Veja nos exemplos abaixo como isso pode ser feito. Primeiro um círculo sem preenchimento:
<!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");
// vamos desenhar um círculo sem preenchimento com raio de 80
contexto.beginPath(); // início um novo caminho
// o círculo começa no x = 100, y = 100, começa no ângulo 0
// e vai até o ângulo 360 (as medidas são em radianos, não em graus)
contexto.arc(100, 100, 80, 0, 2 * Math.PI, false);
contexto.lineWidth = 2; // largura da linha
contexto.strokeStyle = '#990000'; // cor da linha
contexto.stroke(); // realiza o desenho
</script>
</body>
</html>
Ao abrir esta página HTML nós teremos o seguinte resultado: ![]() E agora um círculo preenchido:
<!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");
// vamos desenhar um círculo sem preenchimento com raio de 80
contexto.beginPath(); // início um novo caminho
// o círculo começa no x = 100, y = 100, começa no ângulo 0
// e vai até o ângulo 360 (as medidas são em radianos, não em graus)
contexto.arc(100, 100, 80, 0, 2 * Math.PI, false);
// vamos preencher o círculo
contexto.fillStyle = "#CCCCCC"; // cor do preenchimento
contexto.fill(); // preenche de fato
contexto.lineWidth = 2; // largura da linha
contexto.strokeStyle = '#990000'; // cor da linha
contexto.stroke(); // realiza o desenho
</script>
</body>
</html>
Ao abrir esta página HTML nós teremos o seguinte resultado: ![]() |
Python ::: Dicas & Truques ::: Matemática e Estatística |
Como corrigir o problema da divisão com inteiros em Python (versões anteriores a 3.0)Quantidade de visualizações: 11080 vezes |
A divisão em Python (na versão 2.5), quando feita com operandos do tipo inteiro, resultará em um número inteiro, ou seja, o resultado será arredondado para o menor inteiro mais próximo. Veja:v1 = 5 v2 = 2 res = v1 / v2 print res Aqui fica claro que o resultado deveria ser 2,5. Porém, ao exibirmos o valor da variável res, vemos que ela armazena 2. Veja agora este novo exemplo: v1 = 5.0 v2 = 2 res = v1 / v2 print res Agora o resultado é o que esperamos: 2,5. Isso aconteceu porque um dos operandos é um valor do tipo ponto-flutuante. Dessa forma, o interpretador fará a promoção do outro operando (de inteiro para ponto-flutuante) e o comportamento do operador de divisão será o correto. Então lembre-se: divisão por inteiros, resultado também em inteiro. Se não é isso que deseja, faça com que pelo menos um dos operandos seja do tipo ponto-flutuante. Existe uma forma de forçar o interpretador a se comportar de forma correta também com inteiros. Veja: # força o novo comportamento do operador # de divisão from __future__ import division v1 = 5 v2 = 2 res = v1 / v2 print res Agora o resultado será 2,5. A chave para isso está na linha: from __future__ import division Esta linha importa a nova forma de divisão para seus programas Python anteriores à versão 3.0. |
Desafios, Exercícios e Algoritmos Resolvidos de Python |
Veja mais Dicas e truques de Python |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |








