duvida com loop
22/02/2006
0
var
Hora, Minuto : String;
begin
Hora := Valor;
Minuto := Valor;
if Hora = ´ : ´ then
begin
TestaHora := False;
Exit;
end;
Delete(Hora,3,6);
Delete(Minuto,1,3);
if (StrToInt(Hora) > 24) or (StrToInt(Hora) < 1) or
(StrToInt(Minuto) > 60) or (StrToInt(Minuto) < 1) then
TestaHora := False;
end;
Validando 12 campos.
var
Mkedt: String;
// Valida os campos
for I := 1 to 12 do
begin
MkEdt := Concat(´MaskEdit´+IntToStr(I)+´.Text´);
if TestaHora(MkEdt) = False then
begin
Application.MessageBox(´Atenção horário invalido ou vaziu, tente novamente.´,´Atenção!´,MB_OK +MB_ICONINFORMATION);
end;
end;
//fim
Como faço para rodar este Loop???
Desta forma que está ai compila, o problema é que ao inves de mandar
para a função TestaHora o valor do MaskEdit1.text, ele manda uma
string ´MaskEdit1.text´. Alguem tem alguma idéia?
Ullrich
Posts
22/02/2006
Michael
No Delphi vc não pode avaliar expressões string como se fossem códigos da linguagem, como o Clipper permitia atráves do operador de macro-substituição.
Porém, para acessar componentes pelo nome, existe o método [b:a0f3dcb640]FindComponent[/b:a0f3dcb640], da classe [b:a0f3dcb640]TComponent[/b:a0f3dcb640]. Faça a alteração no seu código como mostrado a seguir:
var MaskEdit: TComponent // Valida os campos for I := 1 to 12 do begin MaskEdit := FindComponent(´MaskEdit´ + IntToStr(I)); if Assigned(MaskEdit) and not TestaHora(TMaskEdit(MaskEdit).Text) then begin Application.MessageBox(´Atenção horário invalido ou vaziu, tente novamente.´,´Atenção!´,MB_OK +MB_ICONINFORMATION); end; end;
[]´s
22/02/2006
Ullrich
MaskEdit: TComponent
// Valida os campos
for I := 1 to 12 do
begin
MaskEdit := FindComponent(´MaskEdit´ + IntToStr(I));
MaskEdit <-- Recebe ([csInheritable])
if Assigned(MaskEdit) and not TestaHora(TMaskEdit(MaskEdit).Text) then
begin
Application.MessageBox(´Atenção horário invalido ou vaziu, tente novamente.´,´Atenção!´,MB_OK +MB_ICONINFORMATION);
end;
end;
Fiz desta forma, porem quando a variavel MaskEdit deveria receber MaskEdit1 ela recebe este valor ([csInheritable]).
Continuando o Loop ele sempre entra no If, não inportando o valor do MaskEdit.
Como faço para fazer este loop funcionar???
Obrigado pela atenção.
22/02/2006
Marco Salles
procedure TForm1.Button2Click(Sender: TObject); var Mkedt: String; i:integer; begin for I := 1 to 12 do begin if Assigned( FindComponent(´MaskEdit´ + IntToStr(I))) then begin MKedt := TmaskEdit(FindComponent(´MaskEdit´ + IntToStr(I))).Text; if TestaHora(MkEdt) = False then begin Application.MessageBox(´Atenção horário invalido ou vaziu, tente novamente.´,´Atenção!´,MB_OK +MB_ICONINFORMATION); end; end; end; end;
22/02/2006
Ullrich
Obrigado a todos pala dedicação as perguntas, não sei o que faria sem vocês para ajudar... Valeu mesmo a todos...
Clique aqui para fazer login e interagir na Comunidade :)