Form里面有兩個Page,Form打開,page1會show,page2會hide,點新增時,page1會Hide,page2會show出來,點保存時,會做資料校驗,提示后應該留再page2的,結果page2就hide了,page1就show出來了
下面是界面
page1

page2

然后是驗證代碼
第一段
// 保存處理
procedure SysMethodFromKeep(Sender: TObject);
begin
// 校驗處理
SysFormevent.SysFormeventCheck(Sender);
// 新增狀態
if Man.InUp = 'IN' then
begin
// 基礎資料型別
if Copy(TForm(Sender).UnitName, 1, 1) = 'U' then
begin
SysMethodFromUIn(Sender)
end;
// 單據型別
if Copy(TForm(Sender).UnitName, 1, 1) = 'Z' then
begin
SysMethodFromZIn(Sender)
end;
end
// 更新狀態
else if Man.InUp = 'UP' then
begin
// 基礎資料型別
if Copy(TForm(Sender).UnitName, 1, 1) = 'U' then
begin
SysMethodFromUUp(Sender)
end;
// 單據型別
if Copy(TForm(Sender).UnitName, 1, 1) = 'Z' then
begin
// SysMethodFromZUp(Sender)
end;
end;
end;
第二段提示段
else if TForm(Sender).Components[i] is TDBLookupComboboxEh then
begin
if TDBLookupComboboxEh(TForm(Sender).Components[i]).Name = TableID then
begin
if Man.FDQuery1.FieldByName('CheckType').AsString = '非空' then
begin
if TDBLookupComboboxEh(TForm(Sender).Components[i]).Text = '' then
begin
Error := Man.FDQuery1.FieldByName('TableName').AsString + '不能為空';
MessageBox(0, PWCHAR(Error), '警告', MB_OKCANCEL);
exit;
end
end
end
end
提示框型別試了幾種都不行,一個確定一個取消的,都試了還是不性格,再點確定和取消都會跳到page1
uj5u.com熱心網友回復:
procedure TSysFormevent.SysFormeventCheck(Sender: TObject);
var
i: Integer;
j: Integer;
FDQuery: TFDQuery;
FDQueryItem: TFDQuery;
DBGridEh: TDBGridEh;
DBGridEhItem: TDBGridEh;
TableID: String;
TableItemID: String;
MemTableEh: TMemTableEh;
FDMemTable: TFDMemTable;
Error: String;
RepeatName: String;
begin
// 控制元件初始化
FDQuery := nil;
FDQueryItem := nil;
MemTableEh := nil;
FDMemTable := nil;
RepeatName := '';
Man.FDQuery1.Close;
Man.FDQuery1.SQL.Clear;
Man.FDQuery1.SQL.Add('select * from t_Formcheck where ModID=''' +
Man.ChilFormTable + ''' or ModID=''' + Man.ChilFormTable + 'Item''');
Man.FDQuery1.Open;
while not Man.FDQuery1.Eof do
begin
for i := 0 to TForm(Sender).ComponentCount - 1 do
begin
TableID:=Man.FDQuery1.FieldByName('TableID').AsString;
if TForm(Sender).Components[i] is TEdit then
begin
if TEdit(TForm(Sender).Components[i]).Name = TableID then
begin
if Man.FDQuery1.FieldByName('CheckType').AsString = '非空' then
begin
if TEdit(TForm(Sender).Components[i]).Text = '' then
begin
Error := Man.FDQuery1.FieldByName('TableName').AsString + '不能為空';
// MessageDlg( '這是MessageDlg訊息框', mtCustom, [mbOK], 0);
MessageBox(0, PWCHAR(Error), '警告',MB_ABORTRETRYIGNORE);
exit;
end
end
end
end
else if TForm(Sender).Components[i] is TComboBox then
begin
if TComboBox(TForm(Sender).Components[i]).Name = TableID then
begin
if Man.FDQuery1.FieldByName('CheckType').AsString = '非空' then
begin
if TComboBox(TForm(Sender).Components[i]).Text = '' then
begin
Error := Man.FDQuery1.FieldByName('TableName').AsString + '不能為空';
MessageBox(0, PWCHAR(Error), '警告', MB_ICONEXCLAMATION);
exit;
end
end
end
end
else if TForm(Sender).Components[i] is TDBLookupComboboxEh then
begin
if TDBLookupComboboxEh(TForm(Sender).Components[i]).Name = TableID then
begin
if Man.FDQuery1.FieldByName('CheckType').AsString = '非空' then
begin
if TDBLookupComboboxEh(TForm(Sender).Components[i]).Text = '' then
begin
Error := Man.FDQuery1.FieldByName('TableName').AsString + '不能為空';
MessageBox(0, PWCHAR(Error), '警告', MB_OKCANCEL);
exit;
end
end
end
end
else if (TForm(Sender).Components[i] is TDBGridEh) then
begin
if TDBGridEh(TForm(Sender).Components[i]).Name = 'DBGridEhBJ' then
begin
TDBGridEh(TForm(Sender).Components[i]).DataSource.DataSet.First;
while not TDBGridEh(TForm(Sender).Components[i]).DataSource.DataSet.Eof do
begin
for j := 0 to TDBGridEh(TForm(Sender).Components[i]).FieldCount-1 do
begin
if TDBGridEh(TForm(Sender).Components[i]).Fields[j].FullName=TableID then
begin
if Man.FDQuery1.FieldByName('CheckType').AsString = '非空' then
begin
if TDBGridEh(TForm(Sender).Components[i]).DataSource.DataSet.FieldByName(TableID).AsString = '' then
begin
Error := Man.FDQuery1.FieldByName('TableName').AsString+ '不能為空';
MessageBox(0, PWCHAR(Error), '警告', MB_ICONEXCLAMATION);
exit;
end
end
ELSE if Man.FDQuery1.FieldByName('CheckType').AsString = '重復' then
begin
RepeatName := RepeatName + TableID + '-' + TDBGridEh(TForm(Sender).Components[i]).DataSource.DataSet.FieldByName(TableID).AsString;
if Pos(TableID + '-' + TDBGridEh(TForm(Sender).Components[i]).DataSource.DataSet.FieldByName(TableID).AsString,RepeatName)>0 then
begin
Error := Man.FDQuery1.FieldByName('TableName').AsString+ '有重復資料';
MessageBox(0, PWCHAR(Error), '警告', MB_ICONEXCLAMATION);
exit;
end;
end;
end;
end;
TDBGridEh(TForm(Sender).Components[i]).DataSource.DataSet.Next;
end
end
end
end;
Man.FDQuery1.Next;
end;
end;
uj5u.com熱心網友回復:
整段校驗代碼太長了 我就把提示框部分 截取出來了,這是整段代碼uj5u.com熱心網友回復:
https://www.cnblogs.com/michellexiaoqi/p/7568794.htmlhttps://www.cnblogs.com/michellexiaoqi/p/7568794.html給你一個文章,你可以自己學習一下。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/278271.html
標籤:VCL組件開發及應用
上一篇:用 RzPageControl1 標簽頁創建的視窗,如何關閉
下一篇:java中jdk的配置
