⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frame_usingleedit.~pas

📁 企业信息管理系统程序框架
💻 ~PAS
字号:
unit frame_uSingleEdit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, db, frame_uTradeBase, ImgList, ComCtrls, Grids, DBGridEh,
  PDBGridEh, StdCtrls, Buttons,frame_utilfunc, ExtCtrls, dcfdes, dcddes,ADOXQuery,
  ADODB;

type
  Tframe_frmsingleedit = class(Tframe_frmTradeBase)
    btnsave: TBitBtn;
    btncancel: TBitBtn;
    tmpqry: TADOXQuery;
    procedure FormShow(Sender: TObject);
    procedure btnsaveClick(Sender: TObject);
    procedure btncancelClick(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  private
    { Private declarations }
    miniTabcomp:TwinControl;
  public
    { Public declarations }
    addstate:boolean;
    mydg: Tdbgrideh;
    procedure showdata;
   function datachange():boolean;
   function validate:boolean;virtual;
   procedure beforepost;virtual;
    procedure showcaption;
  end;

var
  frame_frmsingleedit: Tframe_frmsingleedit;

implementation

uses frame_uDM;

{$R *.dfm}

procedure Tframe_frmsingleedit.FormShow(Sender: TObject);
var
  i, j: integer;
begin
  inherited;
  showcaption;
  showdata;
  if (dsinsert= mydg.DataSource.DataSet.State) then addstate:=true
  else addstate:=false;
  // mydg.DataSource.DataSet.Cancel;
end;


procedure Tframe_frmsingleedit.showcaption;
var
  i, j: integer;
begin
  for i := 0 to (Componentcount - 1) do
  begin
    if (Components[i] is TLabel) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('lbl' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          (Components[i] as TLabel).caption := mydg.Columns[j].Title.Caption;
        end;
      end;
    end;

    if (Components[i] is TLabeledEdit) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('edt' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          (Components[i] as TLabeledEdit).EditLabel.Caption := mydg.Columns[j].Title.Caption;
        end;
      end;
    end;

  end;
end;
procedure Tframe_frmsingleedit.showdata;
var
  i, j: integer;
begin
  for i := 0 to (Componentcount - 1) do
  begin
    if (Components[i] is TEdit) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('edt' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          (Components[i] as TEdit).Text := mydg.Columns[j].Field.AsString;
        end;
      end;
    end;
    if (Components[i] is Tmemo) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('mmo' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          (Components[i] as Tmemo).Text := mydg.Columns[j].Field.AsString;
        end;
      end;
    end;
    if (Components[i] is TComboBox) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('cbb' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          (Components[i] as TComboBox).itemindex := (Components[i] as TComboBox).items.indexof(mydg.Columns[j].Field.AsString);
        end;
      end;
    end;

    if (Components[i] is TLabeledEdit) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('edt' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          (Components[i] as TLabeledEdit).Text := mydg.Columns[j].Field.AsString;
        end;
      end;
    end;
  end;
end;
function Tframe_frmsingleedit.datachange():boolean;
var
  i, j: integer;
begin
  result:=false;
  for i := 0 to (Componentcount - 1) do
  begin
    if (Components[i] is TEdit) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('edt' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          if (Components[i] as TEdit).Text <> mydg.Columns[j].Field.AsString then
          begin
            result:=true;
            break;
          end;
        end;
      end;
    end;
    if (Components[i] is Tmemo) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('mmo' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          if (Components[i] as Tmemo).Text <> mydg.Columns[j].Field.AsString then
          begin
            result:=true;
            break;
          end;
        end;
      end;
    end;
    if (Components[i] is Tcombobox) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('cbb' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          if (Components[i] as Tcombobox).Text <> mydg.Columns[j].Field.AsString then
          begin
            result:=true;
            break;
          end;
        end;
      end;
    end;

    if (Components[i] is TLabeledEdit) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('edt' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          if (Components[i] as TLabeledEdit).Text <> mydg.Columns[j].Field.AsString then
          begin
            result:=true;
            break;
          end;
        end;
      end;
    end;

  end;
end;

procedure Tframe_frmsingleedit.btnsaveClick(Sender: TObject);
var
  i,j:integer;
  mainqry:TADOXQuery;
begin
  if not validate then exit;
  inherited;
  // 取得access表的seqn
  if addstate and (SysParam.dbType='access') then
  begin
    mainqry:=(mydg.DataSource.DataSet) as (tAdoxquery);
    tmpqry.Connection:=frame_dm.con as TADOConnection;
    opensql(tmpqry,'select max('+mainqry.SqlKeyField+') from '+mainqry.SqlUpdateTable,[]);
    if (FindComponent('edt'+mainqry.SqlKeyField)<>nil) then
    begin
       (FindComponent('edt'+mainqry.SqlKeyField) as TEdit).Text:=inttostr(tmpqry.Fields[0].Asinteger+1);
    end;

  end;
  // 保存前处理。
  beforepost;
  //初始化控件
  for i := 0 to (Componentcount - 1) do
  begin
    if (Components[i] is TEdit) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('edt' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          mydg.Columns[j].Field.AsString := (Components[i] as TEdit).Text;
          if addstate then (Components[i] as TEdit).Text:='';
          if (minitabcomp=nil) then
          begin
            minitabcomp:=components[i] as Twincontrol;
          end
          else
          if (minitabcomp.taborder>(components[i] as Twincontrol).TabOrder) then begin
            minitabcomp:=components[i] as Twincontrol;
          end;

        end;
      end;
    end;
    if (Components[i] is Tcombobox) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('cbb' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          mydg.Columns[j].Field.AsString := (Components[i] as Tcombobox).Text;
          if addstate then (Components[i] as Tcombobox).itemindex:=-1;
          if (minitabcomp=nil) then
          begin
            minitabcomp:=components[i] as Twincontrol;
          end
          else
          if (minitabcomp.taborder>(components[i] as Twincontrol).TabOrder) then begin
            minitabcomp:=components[i] as Twincontrol;
          end;

        end;
      end;
    end;

    if (Components[i] is Tmemo) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('mmo' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          mydg.Columns[j].Field.AsString := (Components[i] as Tmemo).Text;
          if addstate then (Components[i] as Tmemo).Text:='';
          if (minitabcomp=nil) then
          begin
            minitabcomp:=components[i] as Twincontrol;
          end
          else
          if (minitabcomp.taborder>(components[i] as Twincontrol).TabOrder) then begin
            minitabcomp:=components[i] as Twincontrol;
          end;

        end;
      end;
    end;

    if (Components[i] is TLabeledEdit) then
    begin
      for j := 0 to (mydg.Columns.Count - 1) do
      begin
        if Uppercase('edt' + mydg.Fields[j].FieldName) = uppercase(Components[i].Name) then
        begin
          mydg.Columns[j].Field.AsString := (Components[i] as TLabeledEdit).Text;
          if addstate then (Components[i] as TLabeledEdit).Text:='';
          if (minitabcomp=nil) then
          begin
            minitabcomp:=components[i] as Twincontrol;
          end
          else
          if (minitabcomp.taborder>(components[i] as Twincontrol).TabOrder) then begin
            minitabcomp:=components[i] as Twincontrol;
          end;

        end;
      end;
    end;
  end;
  mydg.DataSource.DataSet.Post;
  if addstate then
  begin
    if QueryDlg('继续增加?',False) then
    begin
    minitabcomp.SetFocus;
    mydg.DataSource.DataSet.append
    end
    else
    begin
      Close;
    end;
  end
  else
  begin
//   mydg.DataSource.DataSet.edit;
   InfoOk('修改成功!');
   close;
  end;
end;


procedure Tframe_frmsingleedit.btncancelClick(Sender: TObject);
begin
  inherited;
  close;
end;

procedure Tframe_frmsingleedit.FormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
     if (mydg.datasource.DataSet.State in [dsedit,dsinsert]) then
     begin
       if datachange then
       begin
         canclose:= querydlg('数据已经修改,确定要退出吗?',True);
       end;
     end;
       if canclose then mydg.datasource.DataSet.Cancel;     

end;


function Tframe_frmsingleedit.validate: boolean;
begin
  result:=true;
end;

procedure Tframe_frmsingleedit.beforepost;
begin
  Application.ProcessMessages;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -