[Delphi] Criando campos dinâmicos

Dec 06
2010

Bom dia meu povo.

Dia desses precisei criar dinamicamente algumas colunas em um TClientDataset. Normalmente um uso a propriedade FieldDefs por ser mais fácil de manipular e evitar problemas de MemoryLeaks. Mas nesse caso específico eu precisava dos campos como novos objetos, portanto tinham de herdar diretamente de TField. Assim, após algum trabalho, cheguei no resultado abaixo.

procedure CriaField_Integer(cFieldName: String; cDisplayLabel: String; fFieldKind: TFieldKind; nDisplayWidth: Integer; var ds: TClientDataSet; lVisible: Boolean);
begin
    with TIntegerField.Create(Self) do
    begin
        FieldName      := cFieldName;
        Name           := ds.Name + UpperCase(FieldName);
        FieldKind      := fFieldKind;
        Size           := 0;
        DisplayLabel   := cDisplayLabel;
        DisplayWidth   := nDisplayWidth;
        Visible        := lVisible;
        DataSet        := ds;
    end;
end;

procedure CriaField_Boolean(cFieldName: String; cDisplayLabel: String; fFieldKind: TFieldKind; nDisplayWidth: Integer; var ds: TClientDataSet; lVisible: Boolean);
begin
    with TBooleanField.Create(Self) do
    begin
        FieldName      := cFieldName;
        Name           := ds.Name + UpperCase(FieldName);
        FieldKind      := fFieldKind;
        DisplayLabel   := cDisplayLabel;
        DisplayWidth   := nDisplayWidth;
        Visible        := lVisible;
        DataSet        := ds;
    end;
end;

procedure CriaField_DateTime(cFieldName, cDisplayLabel: String; fFieldKind: TFieldKind; nDisplayWidth: Integer; var ds: TClientDataSet; lVisible: Boolean);
begin
    with TDateTimeField.Create(Self) do
    begin
        FieldName     := cFieldName;
        Name          := ds.Name + UpperCase(FieldName);
        FieldKind     := fFieldKind;
        Size          := 0;
        DisplayLabel  := cDisplayLabel;
        DisplayWidth  := nDisplayWidth;
        Visible       := lVisible;
        DataSet       := ds;
    end;
end;

procedure CriaField_Float(cFieldName: String; cDisplayLabel: String; fFieldKind: TFieldKind; nPrecision, nDisplayWidth: Integer; cDisplayFormat: String; var ds: TClientDataSet; lVisible: Boolean);
begin
    with TFloatField.Create(Self) do
    begin
        FieldName     := cFieldName;
        Name          := ds.Name + UpperCase(FieldName);
        FieldKind     := fFieldKind;
        Size          := 0;
        Precision     := nPrecision;
        DisplayLabel  := cDisplayLabel;
        DisplayWidth  := nDisplayWidth;
        DisplayFormat := cDisplayFormat;
        Visible       := lVisible;
        DataSet       := ds;
    end;
end;

Como por aqui não tem muita orientação à objetos, não fiz muita firula, quem sabe eu dou uma melhorada nesse código outro dia, ou vocês mesmos o fazem.

Uma experiência socialista

Dec 01
2010

Um professor de economia na universidade Texas Tech disse que nunca reprovou um só aluno antes, mas tinha, uma vez, reprovado uma classe inteira.

Esta classe em particular tinha insistido que o socialismo realmente funcionava: ninguém seria pobre e ninguém seria rico, tudo seria igualitário e “justo”.

O professor então disse:

- Ok, vamos fazer um experimento socialista nesta classe.. Ao invés de dinheiro, usaremos suas notas nas provas. Todas as notas seriam concedidas com base na média da classe, e portanto seriam “justas”.

Com isso ele quis dizer que todos receberiam as mesmas notas, o que significou que ninguém seria reprovado. Isso também quis dizer, claro, que ninguém receberia um “A”

Depois que a média das primeiras provas foram tiradas, todos receberam “B”. Quem estudou com dedicação ficou indignado, mas os alunos que não se esforçaram ficaram muito felizes com o resultado.

Quando a segunda prova foi aplicada, os preguiçosos estudaram ainda menos – eles esperavam tirar notas boas de qualquer forma. Aqueles que tinham estudado bastante no início resolveram que eles também se aproveitariam do trem da alegria das notas. Portanto, agindo contra suas tendências, eles copiaram os hábitos dos preguiçosos.. Como um resultado, a segunda média das provas foi “D”. Ninguém gostou.

Depois da terceira prova, a média geral foi um “F”. As notas não voltaram a patamares mais altos, mas as desavenças entre os alunos, buscas por culpados e palavrões passaram a fazer parte da atmosfera das aulas daquela classe. A busca por “justiça” dos alunos tinha sido a principal causa das reclamações, inimizades e senso de injustiça que passaram a fazer parte daquela turma. No final das contas, ninguém queria mais estudar para beneficiar o resto da sala.
Portanto, todos os alunos repetiram o ano… Para total surpresa!!!

O professor explicou que o experimento socialista tinha falhado porque foi baseado no menor esforço possível da parte de seus participantes. Preguiça e mágoas foi seu resultado. Sempre haveria fracasso na situação a partir da qual o experimento tinha começado.

“Quando a recompensa é grande”, ele disse, “o esforço pelo sucesso é grande, pelo menos para alguns de nós. Mas quando o governo elimina todas as recompensas ao tirar coisas dos outros sem seu consentimento para dar a outros que não batalharam por elas, então o fracasso é inevitável.”

“É impossível levar o pobre à prosperidade através de legislações que punem os ricos pela prosperidade.
Para cada pessoa que recebe sem trabalhar, outra pessoa deve trabalhar sem receber.
O governo não pode dar para alguém aquilo que não tira de outro alguém.
Quando metade da população entende a idéia de que não precisa trabalhar, pois a outra metade da população irá sustentá-la, e quando esta outra metade entende que não vale mais a pena trabalhar para sustentar a primeira metade, então chegamos ao começo do fim de uma nação.
É impossível multiplicar riqueza dividindo-a.”

atribuído à Adrian Roger, 1931.

Esse foi mais um texto muito bom enviado pelo meu irmão, Jefferson.

Padrão Builder com Delphi

Oct 06
2010

Voltando a falar de programação, hoje vamos continuar a falar da orientação à objetos dentro do Delphi. Apesar de estar estudando Java já tem algum tempo, eu trabalho com Delphi desde de sua versão 2.0, então fica bem difícil não querer aplicar tudo o que aprendi sobre o assunto na linguagem que tenho mais afinidade.
Read the rest of this entry »

O verdadeiro desenvolvimento

Sep 27
2010

Não é segredo que recentemente nasceu meu pequeno herdeiro, José Miguel. Isso enche o meu peito de felicidade, todos os dias um pouco mais.

Mas nessa última semana, para a tristeza geral, faleceu uma amiga. Ela foi vítima da depressão, a doença que nos mata um pouco a cada dia, no órgão mais importante de nosso corpo, a alma.

E é claro, acompanhei um pouco da agonia dos pais, diante da impotência do acontecido. Um pai jamais deveria ter que enterrar os seus filhos, seja qual for o contexto. Isso é contra a natureza das coisas. Como era de se esperar, me coloquei em seu lugar. Afinal, tenho uma vida sob minha responsabilidade, que posso eu fazer para evitar esse tipo de fim?

Eu posso quem sabe dar uma excelente educação, nos melhores colégios que a região possa oferecer. Claro, vou ter que trabalhar dobrado, triplicado. Deixar de estar presente em vários momentos importantes para o meu filho. Não, talvez seja melhor pagar um colégio médio, mas de boa qualidade, mantendo o pouco tempo livre que tenho para me dedicar a ele.

Eu sei lá, poderia pensar num milhão de coisas interessantes para se fazer, mas para cada uma delas eu ia lembrar de um ponto negativo, que me impediria ou no mínimo me faria pensar se era tão interessante assim. Pois como dizia aquela música, cada escolha é uma renúncia. Algo tem que ser deixado de lado para um novo caminho seja trilhado e isso sempre é complicado.

Portanto não é a escola, a alimentação, os irmãozinhos que eu posso lhe dar, ou qualquer outra coisa que possa ser comprada ou tocada. O que não pode faltar é o amor. Todos os dias eu me sento com meu pequeno filho no colo, de frente para mim e conversamos sobre qualquer bobagem que me venha a mente. Ele, como ainda não sabe falar, me responde com um sorriso tão perfeito, que em alguns momentos se torna uma gargalhada. Esse sorriso é puro, sem malícia, sem segundas intenções, somente demonstra o quanto está feliz em ter o pai dele por ali, conversando com ele. E acho que assim que eu vou fazer. Levando com muito amor e carinho a minha vida, sem deixar que isso falte, para que se desenvolva um ser humano pleno, em todas as suas habilidades, para que ele possa ser o que ele quiser ser na vida.

Pérolas da Propaganda

Sep 20
2010

Se preferir, clique para ampliar.
Como não lembro aonde peguei, não tenho como dar os créditos. Se alguém quiser reivindicar a autoria do atentado, coloca nos comments.

Palestra Noções de Programação

Sep 16
2010

Como prometido, estou publicando a palestra que realizei ontem com a turma de Administração do CESUMAR.
Uma turma bastante atenta e participativa, diga-se de passagem.

Dúvidas, podem colocar nos comentários ou mandar um e-mail para mim.

Para refletir

Sep 06
2010

- Mestre, como faço para me tornar um sábio?
- Boas escolhas.
- Mas como fazer boas escolhas?
- Experiência.
- E como adquirir experiência, mestre?
- Más escolhas…

Criando listas com PHP/MySQL

Aug 30
2010

Hoje resolvi variar um pouco. Como estou ajudando um amigo no seu TCC, escrevi para ele uma função bem legal, pelo menos eu achei, depois me falem o que acharam. Eu vou colocar ela aqui em duas etapas. Nessa primeira, vamos criar uma lista, somente passando uma tabela do banco. A assinatura da função vai ficar mais ou menos assim:

<?php
	include_once('conexao.php');
	include('funcoes.php');

	CriarLista('Estado');
?>

A conexão é bem simples, faça como quiser.
Já a função, baseia-se na instrução SQL: SHOW FULL COLUMNS FROM TB_CLIENTE. Essa instrução retorna uma lista com os campos: Field, Type, Collation, Null, Key, Default, Extra Privileges e Comment. Para nós, nesse momento só interessam Field e Comment. Explico. Pegaremos os campos que retornam nessa SQL e com eles, comporemos a nova SQL com os campos que a primeira retornou, ficou claro?
Nos comments da tabela em questão, eu coloquei a descrição dos campos, tipo o campo EST_CODIGO tem o comentário “Código”.
Read the rest of this entry »

Números…

Aug 27
2010

Foco na solução?

Jul 27
2010

Um paciente vai num consultório psicológico e diz pro doutor:
- Toda vez que estou na cama, acho que tem alguém embaixo.
Aí eu vou embaixo da cama e acho que tem alguém em cima. Pra baixo, pra  cima, pra baixo, pra cima.
Estou ficando maluco!
- Deixe-me tratar de você durante dois anos. -diz o psicólogo.
- Venha três vezes por semana, e eu curo este problema.
- E quanto o senhor cobra? – pergunta o paciente.
- R$ 120,00 por sessão – responde o psicólogo.
- Bem, eu vou pensar – conclui o sujeito. Passados seis meses, eles se encontram na rua.
- Por que você não me procurou mais? – pergunta o psicólogo.
- A 120 paus a consulta, três vezes por semana, dois anos, ia ficar caro  demais, ai um sujeito num bar me curou por 10 reais.
- Ah é? Como? – pergunta o psicólogo.
O sujeito responde:
- Por R$ 10,00 ele cortou os pés da cama…
Muitas vezes o problema é sério, mas a solução pode ser muito simples!

HÁ GRANDE DIFERENÇA ENTRE FOCO NO PROBLEMA E FOCO NA SOLUÇÃO!!!

Arquivo

Categorias