Class 有没有办法减少Delphi代码/以某种方式将其他对象放入变量中?
我有 如果我将代码中的Class 有没有办法减少Delphi代码/以某种方式将其他对象放入变量中?,class,variables,delphi,tobject,Class,Variables,Delphi,Tobject,我有 如果我将代码中的更改为TDateEdit: var objeto:TDateEdit; ... 并使用以下命令: if UpperCase(CAMPOSnoBANCO[ii]) = UpperCase((FORMULARIO.Components[i] as TDateEdit).name ) 代码工作。。。。但我需要改变 if UpperCase(CAMPOSnoBANCO[ii]) = UpperCase((FORMULARIO.Components[i] as objeto).n
更改为TDateEdit
:
var objeto:TDateEdit; ...
并使用以下命令:
if UpperCase(CAMPOSnoBANCO[ii]) = UpperCase((FORMULARIO.Components[i] as TDateEdit).name )
代码工作。。。。但我需要改变
if UpperCase(CAMPOSnoBANCO[ii]) = UpperCase((FORMULARIO.Components[i] as objeto).name)
我需要一种方法来更改此变量类型以减少代码
我会用
objeto := TDBEdit;
但变量是
If (FORMULARIO.Components[i] is TDateEdit) then objeto := TDateEdit
If (FORMULARIO.Components[i] is TDBLookupComboBox) then objeto := TDBLookupComboBox
如何在不重复每个对象类型的代码的情况下执行此操作
var objeto: TDateEdit;
函数validacampoobrigatio():布尔值;
变量i、PrimeiroCampo、ii、indexOfItem:整数;
变量MSGaglutinada,TIPO:string;
诺梅坎波变种;
var objeto:TDateEdit;
var VALIDOU:布尔值;
开始
CorERRO:=RGB(255218185);
CorCertO:=12582911//$FF000005;
结果:=假;
MSGaglutinada:='';
PrimeiroCampo:=-1;
tipo:='';
诺梅坎波:='';
对于i:=0到FORMULARIO.ComponentCount-1 do
开始
如果(FORMULARIO.Components[i]为TDateEdit),则
开始
指数fitem:=-1;
ii:=0;
对于ii:=低(CAMPOSnoBANCO)到高(CAMPOSnoBANCO)do
//德特罗·达马特里兹酒店
如果大写(CAMPOSnoBANCO[ii])=大写((FORMULARIO.Components[i]作为TDateEdit.name),那么
开始
打破
结束;
VALIDOU:=真;
如果EhRequerido[ansiindexstr((FORMULARIO.Components[i]as TDateEdit).name,CAMPOSnoBANCO)]=true,则
开始
如果((FORMULARIO.Components[i]作为TDateEdit).text='')那么
开始
如果PrimeiroCampo,则可以在运行时将类类型存储在变量中。但是,不能使用该变量执行类型转换。强制转换在编译时进行计算,并且必须使用具体类型进行强制转换
此外,在这种情况下,您根本不需要这些类型转换。对于初学者来说,大多数as
强制转换都在执行冗余类型检查,而您已经使用is
执行了这些检查。但更重要的是,Name
是TComponent
的公共属性,因此您根本不需要类型转换来访问它,例如:
如果SameText(CAMPOSnoBANCO[ii],FORMULARIO.Components[i].Name)那么
对于未公开/已发布但在基类中受保护的其他属性,如Text
和Color
are,可以使用访问器类访问它们,也可以使用RTTI
显示的代码是不必要的重复和冗长,其中有许多内容可以简化
尝试类似以下内容:
类型
TControlAccess=class(TControl)
结束;
函数validacampoobrigatio():布尔值;
变量
i、 ii:整数;
MSGaglutinada:字符串;
VALIDOU:布尔;
组件:t组件;
Ctrl,PrimeiroCampo:TWinControl;
函数GetControlText(ACtrl:TControl):字符串;
开始
结果:=TControlAccess(ACtrl).Text;
//或者:
//结果:=TypInfo.GetStrProp(ACtrl,'Text');
结束;
程序SetControlColor(ACtrl:T控制;AValue:T颜色);
开始
TControlAccess(ACtrl).颜色:=AValue;
//或者:
//TypeInfo.SetOrdProp(ACtrl,“颜色”,AValue);
结束;
开始
CorERRO:=RGB(255、218、185);
CorCertO:=12582911//$FF000005;
结果:=假;
MSGaglutinada:='';
PrimeiroCampo:=零;
对于i:=0到FORMULARIO.ComponentCount-1 do
开始
成分:=公式化成分[i];
如果不是(Comp为TWinControl),则继续;
Ctrl:=TWinControl(Comp);
//德特罗·达马特里兹酒店
ii:=AnsiIndexText(Ctrl.Name,CAMPOSnoBANCO);
VALIDOU:=真;
如果Ehrequeriedo[ii]那么
开始
如果(GetControlText(Ctrl)='',则
开始
MSGaglutinada:=大写字母(Ctrl.Name)+'não pode ser NULO'+#13#10+Trim(MSGaglutinada);
VALIDOU:=假;
结束;
结束;
如果电子邮箱[ii]那么
开始
如果没有有效的电子邮件(GetControlText(Ctrl)),则
开始
MSGaglutinada:=大写(Ctrl.Name)+“deveser válido”+#13#10+Trim(MSGaglutinada);
VALIDOU:=假;
结束;
结束;
如果EhData[ii]那么
开始
如果不是DataValida(GetControlText(Ctrl)),则
开始
MSGaglutinada:=大写(Ctrl.Name)+“DEVE-uma-data-Válida”+#13#10+Trim(MSGaglutinada);
VALIDOU:=假;
结束
其他的
开始
如果(或[ii]“”),则
开始
如果StrToDate(OperadorDatamenor[ii])=StrToDate(GetControlText(Ctrl)),则
开始
MSGaglutinada:=大写字母(Ctrl.Name)+'não pode menor ou igualá'+OperadorDatamenor[ii]+#13#10+Trim(MSGaglutinada);
VALIDOU:=假;
结束;
结束;
结束;
结束;
如果不是VALIDOU那么
开始
如果PrimeiroCampo=nil,则PrimeiroCampo:=Ctrl;
SetControlColor(Ctrl、CorError);
结束
其他的
设置控件颜色(Ctrl、CorCertO);
结束;
///////////////////////////////////////////////////////////
如果MSGaglutinada“”则
开始
MSGaglutinada:=ReplaceAll(MSGaglutinada,CAMPOSnoBANCO,CAMPOSexibirCOMO,True);
MessageDlg('O(s)campo(s):'+#13#10+MSGaglutinada,mtWarning,[mbok],0);
PrimeiroCampo.SetFocus;
中止
结束;
结果:=真;
结束;
欢迎来到StackOverflow!你能用一个最小的可重复的例子重新表述你的问题吗?这样我们才能正确理解你想做什么?尝试用简单的代码解释你的问题,使用基于英语的变量和函数标识符,这样我们都能理解;过程GetControlText(ACtrl:TControl):字符串;开始结果:=TControlAccess(ACtrl).Text;//或者://Result:=TypInfo.GetStrProp(ACtrl,'Text');结束;程序SetControlColor(ACtrl:T控制;AValue:T颜色);开始TControlAccess(ACtrl)。颜色:=AValue;//或者://TypInfo.SetOrdProp(ACtrl,'C
Function ValidaCampoObrigatorio(): boolean;
var i,PrimeiroCampo,ii,indexOfItem:Integer;
var MSGaglutinada,TIPO:string;
var NOMEcampo : variant ;
var objeto:TDateEdit ;
var VALIDOU:boolean;
begin
CorERRO:=RGB(255,218,185);
CorCertO:= 12582911;//$FF000005;
Result := false;
MSGaglutinada:='';
PrimeiroCampo:=-1;
tipo:='';
NOMEcampo:='';
for i := 0 to FORMULARIO.ComponentCount -1 do
begin
if (FORMULARIO.Components[i] is TDateEdit) then
begin
indexOfItem := -1;
ii:=0;
for ii := Low(CAMPOSnoBANCO) to High(CAMPOSnoBANCO) do
//LOCALIZANDO DENTRO da matriz
if UpperCase(CAMPOSnoBANCO[ii]) = UpperCase((FORMULARIO.Components[i] as TDateEdit).name ) then
begin
BREAK;
end;
VALIDOU:=True;
if EhRequerido[ansiindexstr((FORMULARIO.Components[i] as TDateEdit).name , CAMPOSnoBANCO)]=true then
begin
if((FORMULARIO.Components[i] as TDateEdit).text = '')then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDateEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDateEdit).Name)+' não pode ser NULO'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDateEdit).Color:=corERRO; VALIDOU:=false ;
end;
end;
if EhEMAIL[ansiindexstr((FORMULARIO.Components[i] as TDateEdit).name , CAMPOSnoBANCO)]=true then
begin
if ValidEmail((FORMULARIO.Components[i] as TDateEdit).text) = False then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDateEdit).Name)+' DEVE ser válido'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDateEdit).Color:=corERRO; VALIDOU:=false ;
end;
end ;
if EhData[ansiindexstr((FORMULARIO.Components[i] as TDateEdit).name , CAMPOSnoBANCO)]=true then
begin
if DataValida((FORMULARIO.Components[i] as TDateEdit).text)=false then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDateEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDateEdit).Name)+' DEVE uma data Válida'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDateEdit).Color:=corERRO; VALIDOU:=false ;
end
else
begin
if (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDateEdit).name , CAMPOSnoBANCO)] <> '') then
begin
if StrToDate(OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDateEdit).name , CAMPOSnoBANCO)])<=StrToDate((FORMULARIO.Components[i] as TDateEdit).text)then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDateEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDateEdit).Name)+' não pode maior ou igual à '+ (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDateEdit).name , CAMPOSnoBANCO)])+#13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDateEdit).Color:=corERRO; VALIDOU:=false ;
end;
end;
if (OperadorDataMaior[ansiindexstr((FORMULARIO.Components[i] as TDateEdit).name , CAMPOSnoBANCO)] <> '') then
begin
if StrToDate(OperadorDatamaior[ansiindexstr((FORMULARIO.Components[i] as TDateEdit).name , CAMPOSnoBANCO)])>=StrToDate((FORMULARIO.Components[i] as TDateEdit).text)then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDateEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDateEdit).Name)+' não pode menor ou igual à '+ (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDateEdit).name , CAMPOSnoBANCO)])+#13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDateEdit).Color:=corERRO; VALIDOU:=false ;
end;
end;
end;
end ;
if VALIDOU=true then
begin
(FORMULARIO.Components[i] as TDateEdit).Color:= CorCertO;
end;
end;
if (FORMULARIO.Components[i] is TDBEdit) then
begin
indexOfItem := -1;
ii:=0;
for ii := Low(CAMPOSnoBANCO) to High(CAMPOSnoBANCO) do
//LOCALIZANDO DENTRO da matriz
if UpperCase(CAMPOSnoBANCO[ii]) = UpperCase((FORMULARIO.Components[i] as TDBEdit).name ) then
begin
BREAK;
end;
VALIDOU:=True;
if EhRequerido[ansiindexstr((FORMULARIO.Components[i] as TDBEdit).name , CAMPOSnoBANCO)]=true then
begin
if((FORMULARIO.Components[i] as TDBEdit).field.AsString = '')then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBEdit).Name)+' não pode ser NULO'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBEdit).Color:=corERRO; VALIDOU:=false ;
end;
end;
if EhEMAIL[ansiindexstr((FORMULARIO.Components[i] as TDBEdit).name , CAMPOSnoBANCO)]=true then
begin
if ValidEmail((FORMULARIO.Components[i] as TDBEdit).text) = False then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBEdit).Name)+' DEVE ser válido'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBEdit).Color:=corERRO; VALIDOU:=false ;
end;
end ;
if EhData[ansiindexstr((FORMULARIO.Components[i] as TDBEdit).name , CAMPOSnoBANCO)]=true then
begin
if DataValida((FORMULARIO.Components[i] as TDBEdit).text)=false then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBEdit).Name)+' DEVE uma data Válida'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBEdit).Color:=corERRO; VALIDOU:=false ;
end
else
begin
if (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDBEdit).name , CAMPOSnoBANCO)] <> '') then
begin
if StrToDate(OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDBEdit).name , CAMPOSnoBANCO)])<=StrToDate((FORMULARIO.Components[i] as TDBEdit).text)then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBEdit).Name)+' não pode maior ou igual à '+ (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDBEdit).name , CAMPOSnoBANCO)])+#13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBEdit).Color:=corERRO; VALIDOU:=false ;
end;
end;
if (OperadorDataMaior[ansiindexstr((FORMULARIO.Components[i] as TDBEdit).name , CAMPOSnoBANCO)] <> '') then
begin
if StrToDate(OperadorDatamaior[ansiindexstr((FORMULARIO.Components[i] as TDBEdit).name , CAMPOSnoBANCO)])>=StrToDate((FORMULARIO.Components[i] as TDBEdit).text)then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBEdit).Name)+' não pode menor ou igual à '+ (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDBEdit).name , CAMPOSnoBANCO)])+#13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBEdit).Color:=corERRO; VALIDOU:=false ;
end;
end;
end;
end ;
if VALIDOU=true then
begin
(FORMULARIO.Components[i] as TDBEdit).Color:= CorCertO;
end;
end;
if (FORMULARIO.Components[i] is TDBLookupComboBox) then
begin
indexOfItem := -1;
ii:=0;
for ii := Low(CAMPOSnoBANCO) to High(CAMPOSnoBANCO) do
//LOCALIZANDO DENTRO da matriz
if UpperCase(CAMPOSnoBANCO[ii]) = UpperCase((FORMULARIO.Components[i] as TDBLookupComboBox).name ) then
begin
BREAK;
end;
VALIDOU:=True;
if EhRequerido[ansiindexstr((FORMULARIO.Components[i] as TDBLookupComboBox).name , CAMPOSnoBANCO)]=true then
begin
if((FORMULARIO.Components[i] as TDBLookupComboBox).field.AsString = '')then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBLookupComboBox' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBLookupComboBox).Name)+' não pode ser NULO'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBLookupComboBox).Color:=corERRO; VALIDOU:=false ;
end;
end;
if EhEMAIL[ansiindexstr((FORMULARIO.Components[i] as TDBLookupComboBox).name , CAMPOSnoBANCO)]=true then
begin
if ValidEmail((FORMULARIO.Components[i] as TDBLookupComboBox).text) = False then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBLookupComboBox' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBLookupComboBox).Name)+' DEVE ser válido'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBLookupComboBox).Color:=corERRO; VALIDOU:=false ;
end;
end ;
if EhData[ansiindexstr((FORMULARIO.Components[i] as TDBLookupComboBox).name , CAMPOSnoBANCO)]=true then
begin
if DataValida((FORMULARIO.Components[i] as TDBLookupComboBox).text)=false then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBLookupComboBox' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBLookupComboBox).Name)+' DEVE uma data Válida'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBLookupComboBox).Color:=corERRO; VALIDOU:=false ;
end
else
begin
if (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDBLookupComboBox).name , CAMPOSnoBANCO)] <> '') then
begin
if StrToDate(OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDBLookupComboBox).name , CAMPOSnoBANCO)])<=StrToDate((FORMULARIO.Components[i] as TDBLookupComboBox).text)then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBLookupComboBox' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBLookupComboBox).Name)+' não pode maior ou igual à '+ (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDBLookupComboBox).name , CAMPOSnoBANCO)])+#13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBLookupComboBox).Color:=corERRO; VALIDOU:=false ;
end;
end;
if (OperadorDataMaior[ansiindexstr((FORMULARIO.Components[i] as TDBLookupComboBox).name , CAMPOSnoBANCO)] <> '') then
begin
if StrToDate(OperadorDatamaior[ansiindexstr((FORMULARIO.Components[i] as TDBLookupComboBox).name , CAMPOSnoBANCO)])>=StrToDate((FORMULARIO.Components[i] as TDBLookupComboBox).text)then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBLookupComboBox' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBLookupComboBox).Name)+' não pode menor ou igual à '+ (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDBLookupComboBox).name , CAMPOSnoBANCO)])+#13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBLookupComboBox).Color:=corERRO; VALIDOU:=false ;
end;
end;
end;
end ;
if VALIDOU=true then
begin
(FORMULARIO.Components[i] as TDBLookupComboBox).Color:= CorCertO;
end;
end;
if (FORMULARIO.Components[i] is TDBDateEdit) then
begin
indexOfItem := -1;
ii:=0;
for ii := Low(CAMPOSnoBANCO) to High(CAMPOSnoBANCO) do
//LOCALIZANDO DENTRO da matriz
if UpperCase(CAMPOSnoBANCO[ii]) = UpperCase((FORMULARIO.Components[i] as TDBDateEdit).name ) then
begin
BREAK;
end;
VALIDOU:=True;
if EhRequerido[ansiindexstr((FORMULARIO.Components[i] as TDBDateEdit).name , CAMPOSnoBANCO)]=true then
begin
if((FORMULARIO.Components[i] as TDBDateEdit).text = '')then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBDateEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBDateEdit).Name)+' não pode ser NULO'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBDateEdit).Color:=corERRO; VALIDOU:=false ;
end;
end;
if EhEMAIL[ansiindexstr((FORMULARIO.Components[i] as TDBDateEdit).name , CAMPOSnoBANCO)]=true then
begin
if ValidEmail((FORMULARIO.Components[i] as TDBDateEdit).text) = False then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBDateEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBDateEdit).Name)+' DEVE ser válido'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBDateEdit).Color:=corERRO; VALIDOU:=false ;
end;
end ;
if EhData[ansiindexstr((FORMULARIO.Components[i] as TDBDateEdit).name , CAMPOSnoBANCO)]=true then
begin
if DataValida((FORMULARIO.Components[i] as TDBDateEdit).text)=false then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBDateEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBDateEdit).Name)+' DEVE uma data Válida'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBDateEdit).Color:=corERRO; VALIDOU:=false ;
end
else
begin
if (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDBDateEdit).name , CAMPOSnoBANCO)] <> '') then
begin
if StrToDate(OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDBDateEdit).name , CAMPOSnoBANCO)])<=StrToDate((FORMULARIO.Components[i] as TDBDateEdit).text)then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBDateEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBDateEdit).Name)+' não pode maior ou igual à '+ (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDBDateEdit).name , CAMPOSnoBANCO)])+#13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBDateEdit).Color:=corERRO; VALIDOU:=false ;
end;
end;
if (OperadorDataMaior[ansiindexstr((FORMULARIO.Components[i] as TDBDateEdit).name , CAMPOSnoBANCO)] <> '') then
begin
if StrToDate(OperadorDatamaior[ansiindexstr((FORMULARIO.Components[i] as TDBDateEdit).name , CAMPOSnoBANCO)])>=StrToDate((FORMULARIO.Components[i] as TDBDateEdit).text)then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBDateEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TDBDateEdit).Name)+' não pode menor ou igual à '+ (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TDBDateEdit).name , CAMPOSnoBANCO)])+#13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TDBDateEdit).Color:=corERRO; VALIDOU:=false ;
end;
end;
end;
end ;
if VALIDOU=true then
begin
(FORMULARIO.Components[i] as TDBDateEdit).Color:= CorCertO;
end;
end;
//////////////////////////////////////////////////////////////
//TMaskEdit
if (FORMULARIO.Components[i] is TMaskEdit) then
begin
indexOfItem := -1;
ii:=0;
for ii := Low(CAMPOSnoBANCO) to High(CAMPOSnoBANCO) do
//LOCALIZANDO DENTRO da matriz
if UpperCase(CAMPOSnoBANCO[ii]) = UpperCase((FORMULARIO.Components[i] as TMaskEdit).name ) then
begin
BREAK;
end;
VALIDOU:=True;
if EhRequerido[ansiindexstr((FORMULARIO.Components[i] as TMaskEdit).name , CAMPOSnoBANCO)]=true then
begin
if((FORMULARIO.Components[i] as TMaskEdit).text = '')then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TDBDateEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TMaskEdit).Name)+' não pode ser NULO'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TMaskEdit).Color:=corERRO; VALIDOU:=false ;
end;
end;
if EhEMAIL[ansiindexstr((FORMULARIO.Components[i] as TMaskEdit).name , CAMPOSnoBANCO)]=true then
begin
if ValidEmail((FORMULARIO.Components[i] as TMaskEdit).text) = False then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TMaskEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TMaskEdit).Name)+' DEVE ser válido'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TMaskEdit).Color:=corERRO; VALIDOU:=false ;
end;
end ;
if EhData[ansiindexstr((FORMULARIO.Components[i] as TMaskEdit).name , CAMPOSnoBANCO)]=true then
begin
if DataValida((FORMULARIO.Components[i] as TMaskEdit).text)=false then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TMaskEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TMaskEdit).Name)+' DEVE uma data Válida'+ #13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TMaskEdit).Color:=corERRO; VALIDOU:=false ;
end
else
begin
if (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TMaskEdit).name , CAMPOSnoBANCO)] <> '') then
begin
if StrToDate(OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TMaskEdit).name , CAMPOSnoBANCO)])<=StrToDate((FORMULARIO.Components[i] as TMaskEdit).text)then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TMaskEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TMaskEdit).Name)+' não pode maior ou igual à '+ (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TMaskEdit).name , CAMPOSnoBANCO)])+#13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TMaskEdit).Color:=corERRO; VALIDOU:=false ;
end;
end;
if (OperadorDataMaior[ansiindexstr((FORMULARIO.Components[i] as TMaskEdit).name , CAMPOSnoBANCO)] <> '') then
begin
if StrToDate(OperadorDatamaior[ansiindexstr((FORMULARIO.Components[i] as TMaskEdit).name , CAMPOSnoBANCO)])>=StrToDate((FORMULARIO.Components[i] as TMaskEdit).text)then
begin
if PrimeiroCampo<0 then begin PrimeiroCampo:=i;TIPO:='TMaskEdit' end;
MSGaglutinada := UpperCase((FORMULARIO.Components[i] as TMaskEdit).Name)+' não pode menor ou igual à '+ (OperadorDatamenor[ansiindexstr((FORMULARIO.Components[i] as TMaskEdit).name , CAMPOSnoBANCO)])+#13#10+Trim(MSGaglutinada) ;
(FORMULARIO.Components[i] as TMaskEdit).Color:=corERRO; VALIDOU:=false ;
end;
end;
end;
end ;
if VALIDOU=true then
begin
(FORMULARIO.Components[i] as TMaskEdit).Color:= CorCertO;
end;
end;
end;
///////////////////////////////////////////////////////////
if MSGaglutinada <>'' then
begin
MSGaglutinada:=ReplaceAll(MSGaglutinada,CAMPOSnoBANCO,CAMPOSexibirCOMO,True) ;
MessageDlg('O(s) campo(s): '+#13#10+MSGaglutinada , mtWarning, [mbok],0 ) ;
if TIPO='TDBEdit' then
begin
(FORMULARIO.Components[PrimeiroCampo] as TDBEdit).SetFocus;
end
else if TIPO='TDBLookupComboBox' then
begin
(FORMULARIO.Components[PrimeiroCampo] as TDBLookupComboBox).SetFocus
end
else if TIPO='TMaskEdit' then begin
(FORMULARIO.Components[PrimeiroCampo] as TMaskEdit).SetFocus
end
else if TIPO='TDBDateEdit' then begin
(FORMULARIO.Components[PrimeiroCampo] as TDBDateEdit).SetFocus
end
else if TIPO='TDateEdit' then begin
(FORMULARIO.Components[PrimeiroCampo] as TDateEdit).SetFocus
end;
Abort;
end;
result := true;
end;
function ReplaceAll(const Subject: String;
const OldPatterns, NewPatterns: array of String;
IgnoreCase: Boolean): String;
var
ReplaceFlags: TReplaceFlags;
NewPattern: String;
I: Integer;
begin
ReplaceFlags := [rfReplaceAll];
if IgnoreCase then
Include(ReplaceFlags, rfIgnoreCase);
Result := Subject;
for I := Low(OldPatterns) to High(OldPatterns) do
begin
if I <= High(NewPatterns) then
NewPattern := NewPatterns[I]
else
NewPattern := '';
Result := StringReplace(Result, OldPatterns[I], NewPattern, ReplaceFlags);
end;
end;
function ValidEmail(email: string): boolean;
var
RegEx: TRegEx;
begin
RegEx := TRegex.Create('^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]*[a-zA-Z0-9]+$');
Result := RegEx.Match(email).Success;
end;
function DataValida(StrD: string): Boolean;
var
DataDigitadaNoEdit:TDateTime;
{Testa se uma data é valida}
begin
Result := true;
try
//ShowMessage((StrD));
if (StrD<>' / / ') and (StrD <> ' / / ') and (StrD <> null) and (StrD<>'')then
begin
TryStrToDate(StrD,DataDigitadaNoEdit) ;
end
else
Begin
Result:=False;
// Abort;
end;
except
on EConvertError do Result:=False;
end;
end;
function NumeroValido(StrD: string): Boolean;
{Testa se uma data é valida}
begin
Result := true;
try
StrToDate(StrD);
except
on EConvertError do Result:=False;
end;
end;