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

📄 unit_setupindititle.pas

📁 delphi开发的中国移动大客户管理系统,后台数据库为oracle
💻 PAS
字号:
unit Unit_Setupindititle;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Unit_Config, Db, DBTables, StdCtrls, TFlatEditUnit, TFlatButtonUnit,
  ExtCtrls, Grids, DBGrids, TFlatComboBoxUnit;

type
  TDataCode = class
    Code:string;

  end;
  TFrm_Setupindititle = class(TFrm_Config)
    Label1: TLabel;
    Label2: TLabel;
    FlatEdit2: TFlatEdit;
    FlatEdit3: TFlatEdit;
    UpdateSQL1: TUpdateSQL;
    ComboBox: TFlatComboBox;
    Query_top: TQuery;
    procedure BitBtnAddClick(Sender: TObject);
    procedure BitBtnAlterClick(Sender: TObject);
    procedure BitBtnDelClick(Sender: TObject);
    procedure BitBtnSaveClick(Sender: TObject);
    procedure Query_PUBAfterScroll(DataSet: TDataSet);
    procedure BitBtnCancelClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure sqlcommit;
    procedure FlatEdit2KeyPress(Sender: TObject; var Key: Char);
    procedure FlatEdit3KeyPress(Sender: TObject; var Key: Char);
    procedure FormDestroy(Sender: TObject);
    procedure ComboBoxChange(Sender: TObject);
    procedure ComboBoxKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
    //当前的节日编码
    P_CurrentCode :string;
    //判断是否为插入状态
    P_Insert :boolean;
    //记录当前的
    FCode:string;
    // 创建拉框 pSpace 为真预先加入的一个值,其code为空
    Procedure CreateComboBox(Combobox:TFlatComboBox;pQuery:TDataSet;pCode,pLabel:string;pSpace:string);
    //释放内存
    Procedure FreeNode(Combobox:TFlatComboBox);
    //根据Code 得到索引号
    Function GetCodeIndex(Combobox:TFlatComboBox;pCode:string):integer;
  public
    { Public declarations }
  end;

var
  Frm_Setupindititle: TFrm_Setupindititle;

implementation

uses dmmain,unit_public,main;

{$R *.DFM}
procedure TFrm_Setupindititle.CreateComboBox(Combobox: TFlatComboBox;
  pQuery: TDataSet; pCode,pLabel: string; pSpace: string);
var Ldata:TDataCode;
begin
  FreeNode(Combobox);
  ComboBox.Clear;
  if pSpace<>'' then
  begin
    //先加一个空值
    Ldata:=TdataCode.Create;
    Ldata.Code:='';
    ComboBox.Items.AddObject(pSpace,Ldata);
  end;
  if not pQuery.Active then exit;
  //从数据库里取数据
  pQuery.First;
  while not pQuery.Eof do
  begin
    Ldata:=TdataCode.Create;
    Ldata.Code:=trim(pQuery.FieldByName(pCode).AsString);
    ComboBox.Items.AddObject(trim(pQuery.FieldByName(pLabel).AsString),Ldata);
    pQuery.Next;
  end;
end;

procedure TFrm_Setupindititle.FreeNode(Combobox: TFlatComboBox);
var
  i:integer;
  Ldata:TDataCode;
begin
  for i:=0 to ComboBox.Items.Count - 1 do
  begin
    Ldata:=TdataCode(ComboBox.Items.Objects[i]);
    if Ldata <> nil then Ldata.Free;
  end;
end;
function TFrm_Setupindititle.GetCodeIndex(Combobox: TFlatComboBox;
  pCode: string): integer;
var
  i:integer;
begin
  result:=0;
  for i:=0 to ComboBox.Items.Count - 1 do
  begin
    if (ComboBox.Items.Objects[i]<>nil) and (pCode = TDataCode(ComboBox.Items.Objects[i]).Code) then
    begin
       result:=i;
       break;
    end;
  end;
end;
procedure TFrm_Setupindititle.BitBtnAddClick(Sender: TObject);
begin
  inherited;
  kk:=1;
  //FlatEdit1.Text:='';
  ComboBox.ItemIndex :=0;
  FlatEdit2.Text:='';
  FlatEdit3.Text:='';
  ComboBox.Enabled :=true;
  //FlatEdit1.Enabled :=true;
  FlatEdit2.Enabled :=true;
  FlatEdit3.Enabled :=true;
  ComboBox.SetFocus;
  //ShowMessage(' 请输入等级内容! ');
  SetBitBtn(false);
  //with Query_PUB do
  //begin
  //  if Not Active then
   //    Active:=true;
  //end;
  SetBitBtn(false);
end;

procedure TFrm_Setupindititle.BitBtnAlterClick(Sender: TObject);
begin
  inherited;
  kk := 2;
  ComboBox.Enabled :=true;
  FlatEdit2.Enabled :=true;
  FlatEdit3.Enabled :=true;
  ComboBox.SetFocus;
  SetBitBtn(false);
end;

procedure TFrm_Setupindititle.BitBtnDelClick(Sender: TObject);
var
  sql:string;
begin
  inherited;
  //if (Application.MessageBox('是否要删除该记录?',
   //              '提示',MB_OKCANCEL)=IDCANCEL)  then exit;
  if MessageDlg('是否要删除该记录?',mtConfirmation, [mbYes,mbNo], 0)=mrNo then  exit;
  //Dm_Main.Databasedh.StartTransaction;
  Sql :='Delete t_d_indititle where INDICODE='+#39+
     Query_PUB.FieldByName('INDICODE').AsString+#39;
  if AnalyzeSql(SQL)=1 then exit;
  //FlatEdit1.text :='';
  ComboBox.ItemIndex :=0;
  FlatEdit2.text :='';
  FlatEdit3.Text :='';
  Query_Pub.Delete;
  //Query_Pub.Close;
  //Query_Pub.Open;
  Query_PUBAfterScroll(nil);  
end;

procedure TFrm_Setupindititle.BitBtnSaveClick(Sender: TObject);
var
  xlh, editxlh,sql : string;
begin
  inherited;
  //提示是否更新
  if kk=2 then
  //if (Application.MessageBox('是否要更新该记录?',
  //                       '提示',MB_OKCANCEL)=IDCANCEL)  then exit;
  if MessageDlg('是否要更新该记录?',mtConfirmation, [mbYes,mbNo], 0)=mrNo then  exit;
  if trim(FlatEdit2.Text) ='' then
  begin
    MessageDlg('兴趣小类标题字段不能为空!',mtConfirmation, [mbYes], 0);
    exit;
  end;

  if length(FlatEdit2.Text) >60 then
  begin
    MessageDlg('兴趣小类标题字段超过长度!',mtConfirmation, [mbYes], 0);
    exit;
  end;
  if length(FlatEdit3.Text) >20 then
  begin
    MessageDlg('备注字段超过长度!',mtConfirmation, [mbYes], 0);
    exit;
  end;
  case kk of
  1:  // add
     Begin
       Query_Tmp.Close;
       Query_Tmp.SQL.Clear;
       Query_Tmp.SQL.Add(' select SEQ_INDICODE.nextval xlh from dual');
       Query_Tmp.Open;
       xlh := Query_Tmp.FieldByName('xlh').AsString;

       Sql :='insert into t_d_indititle(INDICODE,INDISEQ,INDITITLE,REMARK) '
       +' values('+xlh+','+Fcode+',';
       Sql :=Sql+#39+FlatEdit2.Text+#39+',';
       Sql :=Sql+#39+FlatEdit3.Text+#39+')';

       if AnalyzeSql(SQL)=1 then exit;
     end;
  2:  // edit
     begin
       Sql :='update t_d_indititle set INDISEQ='+Fcode+','
       +'INDITITLE=';
       Sql :=Sql+#39+FlatEdit2.Text+#39+',';

       Sql :=Sql+'REMARK=';
       Sql :=Sql+#39+FlatEdit3.Text+#39;
       Sql :=Sql+' where INDICODE='+#39
       +Query_PUB.FieldByName('INDICODE').AsString+#39;
       if AnalyzeSql(SQL)=1 then exit;
     end;
  end;
  //*************数据同步********************
  case kk of
  1:  // add
     Begin
       P_Insert :=true;
       Query_Pub.insert;
       Query_Tmp.close;
       Query_Tmp.sql.text := //大小写问题Diploma_ID
        'select nvl(max(INDICODE),0) from t_d_indititle';
       Query_Tmp.open;
       P_CurrentCode :=Query_Tmp.fields[0].asstring;
     end;
  2:  // edit
     begin
       P_Insert :=true;
       Query_Pub.Edit;
     end;
  end;
  Query_PUB.FieldByName('INDISEQ').AsString :=Fcode;
  Query_PUB.FieldByName('INDITITLE').AsString :=FlatEdit2.Text;
  Query_PUB.FieldByName('REMARK').AsString :=FlatEdit3.Text;
  Query_PUB.fieldbyname('INDICAPTION').AsString :=ComboBox.Text;
  Query_PUB.FieldByName('INDICODE').AsString :=P_CurrentCode;
  P_Insert :=false;
  Query_Pub.Post;
  //*****************************************
  SetBitBtn(true);
  Query_PUBAfterScroll(nil);
end;

procedure TFrm_Setupindititle.Query_PUBAfterScroll(DataSet: TDataSet);
begin
  inherited;
  ComboBox.Enabled :=false;
  FlatEdit2.Enabled :=false;
  FlatEdit3.Enabled :=false;
  if P_Insert then exit;
  ComboBox.ItemIndex :=
  GetCodeIndex(ComboBox,Query_PUB.fieldbyname('INDISEQ').AsString);
  FlatEdit2.Text := Query_PUB.fieldbyname('INDITITLE').AsString;
  FlatEdit3.Text := Query_PUB.fieldbyname('REMARK').AsString;
  P_CurrentCode := Query_PUB.FieldByName('INDICODE').AsString;
   //***********当没有记录时要控制按钮及权限************
  If  not(Query_PuB.bof and Query_PuB.eof) Then
  begin
    //
    BitBtnAdd.Enabled:=true;
    BitBtnAlter.Enabled:=true;
    BitBtnDel.Enabled:=true;
    //权限
    BitBtnAdd.Enabled:=(JBDM<=2);
    BitBtnAlter.Enabled:=(JBDM<=2);
    BitBtnDel.Enabled:=(JBDM<=2);
  end
    else
      begin
        //BitBtnAdd.Enabled:=false;
        BitBtnAlter.Enabled:=false;
        BitBtnDel.Enabled:=false;
      end;
   //*******************************************
end;

procedure TFrm_Setupindititle.BitBtnCancelClick(Sender: TObject);
begin
  inherited;
  Query_PUBAfterScroll(nil);
end;

procedure TFrm_Setupindititle.FormShow(Sender: TObject);
begin
  inherited;
  P_Insert :=false;
  SetBitBtn(true);
  //修改部分       2001-07-10         ChenQingBo
  //修改部分       2001-07-10         ChenQingBo
  BitBtnAdd.Enabled:=(JBDM<=2);
  BitBtnAlter.Enabled:=(JBDM<=2);
  BitBtnDel.Enabled:=(JBDM<=2);
  Query_PUBAfterScroll(nil);
   //建下拉框并定位
   Query_top.close;
   Query_top.Open;
   CreateComboBox(Combobox,Query_top,'INDISEQ','INDICAPTION','');
   //定位,奇怪的设计,局向是不唯一的?
   Combobox.ItemIndex:=0;
   ComboBoxChange(nil);
end;

procedure TFrm_Setupindititle.sqlcommit;
begin
  with Query_Tmp do
    begin
      Close;
      Sql.Clear;
      Sql.Add('commit');
      ExecSql;
    end;  
end;

procedure TFrm_Setupindititle.FlatEdit2KeyPress(Sender: TObject;
  var Key: Char);
begin
  inherited;
//  if not (key in ['0'..'9', #13, #8]) then key := #0;
  if key = #13 then FlatEdit3.SetFocus;
end;

procedure TFrm_Setupindititle.FlatEdit3KeyPress(Sender: TObject;
  var Key: Char);
begin
  inherited;
//  if not (key in ['0'..'9', #13, #8]) then key := #0;
  if key = #13 then BitBtnSaveClick(nil);
end;

procedure TFrm_Setupindititle.FormDestroy(Sender: TObject);
begin
  inherited;
  FreeNode(Combobox);
end;

procedure TFrm_Setupindititle.ComboBoxChange(Sender: TObject);
begin
  inherited;
  FCode:=TDataCode(ComboBox.Items.Objects[ComboBox.ItemIndex]).Code;
end;

procedure TFrm_Setupindititle.ComboBoxKeyPress(Sender: TObject;
  var Key: Char);
begin
  inherited;
  if key = #13 then FlatEdit2.SetFocus;
end;

end.

⌨️ 快捷键说明

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