提示框提示后,点确定后怎么让代码不再运行

daigua1987 2021-04-20 09:29:39
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
...全文
229 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
daigua1987 2021-04-21
  • 打赏
  • 举报
回复
测试了,提示后做了exit就只是退出当前过程,本来想做一个统一的数据校验的,后面想想 还是弄再事件里面,这样可以实时提醒
BlueStorm 2021-04-21
  • 打赏
  • 举报
回复
你应该写一个能重现你的问题的最简单的程序(你可以在现有程序的基础上一步步裁剪出来),如果到时你还搞不清楚原因,再把此代码发上来
tanqth 2021-04-20
  • 打赏
  • 举报
回复
https://www.cnblogs.com/michellexiaoqi/p/7568794.htmlhttps://www.cnblogs.com/michellexiaoqi/p/7568794.html 给你一个文章,你可以自己学习一下。
daigua1987 2021-04-20
  • 打赏
  • 举报
回复
整段校验代码太长了 我就把提示框部分 截取出来了,这是整段代码
daigua1987 2021-04-20
  • 打赏
  • 举报
回复
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;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧