Tedit receber valor do Dbedit
05/02/2013
0
Olá amigos !
Criei um sorce para fazer a conferência de dados expostos em dois panels em edits.
Uso delphi 7, bando de dados firebird, componentes sqldataset, DatasetProvider, clientdataset e datasource
Vejam a imagem
[url][/url][URL=http://imageshack.us/photo/my-images/805/semttulohdk.jpg/][IMG]http://img805.imageshack.us/img805/1715/semttulohdk.jpg[/IMG][/URL]
Uploaded with [URL=http://imageshack.us]ImageShack.us[/URL]
No Panel Notas são os edits
No Panel resultado são Dbedits
No Panel destacado em preto faz a contagem e a soma de quantos são iguais no panel Resultado e panel notas.
Abaixo o código utilizado:
procedure TForm1.FormCreate(Sender: TObject);
//==============================================================================
// Executar ao Iniciar
//==============================================================================
begin
resultado := TStringList.Create;
notas := TStringList.Create;
end;
procedure TForm1.LimparEdit;
//==============================================================================
// Limpa cores de todos os Tedits menos o da pontuação.
//==============================================================================
Var
i : Integer;
begin
for i := 0 to ComponentCount -1 do
if (Components[i] is TEdit) and (TEdit(Components[i]) <> edtpontuacao) then
begin
TEdit(Components[i]).Color := clWindow;
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
//==============================================================================
// Executa ao clicar no botão "CHECAR"
//==============================================================================
var
i, k, eq: integer;
valor: integer;
begin
// ############# Limpa tudo
valor := 0;
resultado.Clear;
notas.Clear;
LimparEdit;
// ############# Pega todos os Edits do Painel 01
for i := 0 to pnl1.ControlCount -1 do
begin
if pnl1.Controls[i] is TEdit then
resultado.Add(TEdit(pnl1.Controls[i]).Text);
end;
// ############# Pega todos os Edits do Painel 02
for i := 0 to pnl2.ControlCount -1 do
begin
if pnl2.Controls[i] is TEdit then
notas.Add(TEdit(pnl2.Controls[i]).Text);
end;
// ############# Verifica quais são iguais
for I := 0 to resultado.Count -1 do
for K := 0 to notas.Count -1 do
if (resultado[I] = notas[K]) and (resultado[I] <> '') then
begin
Inc(valor); // Soma Pontos na varável Valor.
// Destaca componentes com valores iguais utilizando cores.
for eq := 0 to Form1.ComponentCount -1 do
begin
if (Form1.Components[eq] is TEdit)
and (TEdit(Form1.Components[eq]).Text = notas[K])
and (TEdit(Form1.Components[eq]) <> edtpontuacao) then
TEdit(Form1.Components[eq]).Color := clSkyBlue;
end;
end;
// ############# Exibe Pontuação
edtpontuacao.Text := 'Pontuação: ' + IntToStr(valor);
end;
end.
Desde já agradeço !
Criei um sorce para fazer a conferência de dados expostos em dois panels em edits.
Uso delphi 7, bando de dados firebird, componentes sqldataset, DatasetProvider, clientdataset e datasource
Vejam a imagem
[url][/url][URL=http://imageshack.us/photo/my-images/805/semttulohdk.jpg/][IMG]http://img805.imageshack.us/img805/1715/semttulohdk.jpg[/IMG][/URL]
Uploaded with [URL=http://imageshack.us]ImageShack.us[/URL]
No Panel Notas são os edits
No Panel resultado são Dbedits
No Panel destacado em preto faz a contagem e a soma de quantos são iguais no panel Resultado e panel notas.
Abaixo o código utilizado:
procedure TForm1.FormCreate(Sender: TObject);
//==============================================================================
// Executar ao Iniciar
//==============================================================================
begin
resultado := TStringList.Create;
notas := TStringList.Create;
end;
procedure TForm1.LimparEdit;
//==============================================================================
// Limpa cores de todos os Tedits menos o da pontuação.
//==============================================================================
Var
i : Integer;
begin
for i := 0 to ComponentCount -1 do
if (Components[i] is TEdit) and (TEdit(Components[i]) <> edtpontuacao) then
begin
TEdit(Components[i]).Color := clWindow;
end;
end;
procedure TForm1.btn1Click(Sender: TObject);
//==============================================================================
// Executa ao clicar no botão "CHECAR"
//==============================================================================
var
i, k, eq: integer;
valor: integer;
begin
// ############# Limpa tudo
valor := 0;
resultado.Clear;
notas.Clear;
LimparEdit;
// ############# Pega todos os Edits do Painel 01
for i := 0 to pnl1.ControlCount -1 do
begin
if pnl1.Controls[i] is TEdit then
resultado.Add(TEdit(pnl1.Controls[i]).Text);
end;
// ############# Pega todos os Edits do Painel 02
for i := 0 to pnl2.ControlCount -1 do
begin
if pnl2.Controls[i] is TEdit then
notas.Add(TEdit(pnl2.Controls[i]).Text);
end;
// ############# Verifica quais são iguais
for I := 0 to resultado.Count -1 do
for K := 0 to notas.Count -1 do
if (resultado[I] = notas[K]) and (resultado[I] <> '') then
begin
Inc(valor); // Soma Pontos na varável Valor.
// Destaca componentes com valores iguais utilizando cores.
for eq := 0 to Form1.ComponentCount -1 do
begin
if (Form1.Components[eq] is TEdit)
and (TEdit(Form1.Components[eq]).Text = notas[K])
and (TEdit(Form1.Components[eq]) <> edtpontuacao) then
TEdit(Form1.Components[eq]).Color := clSkyBlue;
end;
end;
// ############# Exibe Pontuação
edtpontuacao.Text := 'Pontuação: ' + IntToStr(valor);
end;
end.
Desde já agradeço !
Lao
Curtir tópico
+ 0
Responder
Posts
05/02/2013
Lao
Não ficou claro oque preciso.
Nos edits resultado, eles precisam receber valor de uns dbedits, pois somente é possível setar os fieds nos Dbedits.
Estou certo ?
Nos edits resultado, eles precisam receber valor de uns dbedits, pois somente é possível setar os fieds nos Dbedits.
Estou certo ?
Responder
07/02/2013
Lao
Não ficou claro oque preciso.
Nos edits resultado, eles precisam receber valor de uns dbedits, pois somente é possível setar os fieds nos Dbedits.
Estou certo ?
Nos edits resultado, eles precisam receber valor de uns dbedits, pois somente é possível setar os fieds nos Dbedits.
Estou certo ?
tópico resolvido.
Responder
Clique aqui para fazer login e interagir na Comunidade :)