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

📄 unsettabledetail.pas

📁 本产品是开发LISTVIEW相关功能的可定制产品
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{---------------------------------------------------------------}
{                                                               }
{ The Source code for  Control.dpr Include Files                }
{ The Source code Compile By Delphi 6.0                         }
{ Author : Dpd                                                  }
{ CopyRight(C)   Chengdu SiFang Information Tech Co.,LTD.       }
{                                                               }
{ Established    : 2003/12/03                                   }
{ Latest Changed :                                              }
{                                                               }
{---------------------------------------------------------------}
unit unSetTableDetail;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Buttons, ExtCtrls, ComCtrls, Grids, DBGrids, StdCtrls, Mask, DBCtrls, Db,
  DBTables, Menus,Spin,Variants,unCDefine, ToolWin, ImgList;

type
  TEditState = (esBrowse,esEdit,esAppend);
  TfrmTableDetail = class(TForm)
    spDispInfo: TStatusBar;
    Query1: TQuery;
    DataSource1: TDataSource;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    Bevel1: TBevel;
    Panel4: TPanel;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label4: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    ComboBox1: TComboBox;
    SpinEdit1: TSpinEdit;
    Panel3: TPanel;
    DBGrid1: TDBGrid;
    Splitter1: TSplitter;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    N13: TMenuItem;
    N14: TMenuItem;
    N15: TMenuItem;
    N16: TMenuItem;
    N17: TMenuItem;
    N18: TMenuItem;
    N19: TMenuItem;
    N20: TMenuItem;
    ImageList1: TImageList;
    ToolBar1: TToolBar;
    spAdd: TToolButton;
    spEdit: TToolButton;
    spDel: TToolButton;
    ToolButton3: TToolButton;
    spPost: TToolButton;
    spCancel: TToolButton;
    spExit: TToolButton;
    spRefresh: TToolButton;
    Label5: TLabel;
    ComboBox2: TComboBox;
    Splitter2: TSplitter;
    ComboBox3: TComboBox;
    Label8: TLabel;
    Label9: TLabel;
    SpinEdit2: TSpinEdit;
    Panel1: TPanel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure spExit2Click(Sender: TObject);
    procedure spPriClick(Sender: TObject);
    procedure spNextClick(Sender: TObject);
    procedure spLastClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure spRefreshClick(Sender: TObject);
    procedure dbe_1KeyPress(Sender: TObject; var Key: Char);
    procedure sqlTableDetailAfterScroll(DataSet: TDataSet);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox1DblClick(Sender: TObject);
    procedure spCancel2Click(Sender: TObject);
    procedure spEdit2Click(Sender: TObject);
    procedure spAdd2Click(Sender: TObject);
    procedure spDel2Click(Sender: TObject);
    procedure spPost2Click(Sender: TObject);
    procedure DBGrid1DblClick(Sender: TObject);
    procedure spFisrtClick(Sender: TObject);
    procedure Panel1DblClick(Sender: TObject);
    procedure ComboBox2Click(Sender: TObject);
    procedure N16Click(Sender: TObject);
    procedure N18Click(Sender: TObject);
    procedure N19Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure DBGrid1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure DBGrid1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure spRefresh1Click(Sender: TObject);
    procedure spEditClick(Sender: TObject);
    procedure spPostClick(Sender: TObject);
    procedure spCancelClick(Sender: TObject);
    procedure spExitClick(Sender: TObject);
  private
    { Private declarations }
    //改变显示数据的颜色
    FState : TEditState;
    OldFormName:String;
    procedure EnableModify(value:Boolean);
    procedure SetEditColor(BKColor,FontColor:TColor);
    procedure SetState(value:TEditState); //改变系统编辑状态
    procedure ClearDatas;  //将显示的数据清除
    function CheckInfoValidate:Boolean;
    procedure HandleException(E:Exception);
  public
    property opState : TEditState read FState write SetState;
  end;

var
  frmTableDetail: TfrmTableDetail;

implementation

uses unCDm;


{$R *.DFM}

procedure TfrmTableDetail.spExit2Click(Sender: TObject);
begin
  Query1.close;
  Close;
end;

//改变显示数据的颜色
procedure TfrmTableDetail.SetEditColor(BKColor,FontColor:TColor);
begin

End;

procedure TfrmTableDetail.EnableModify(value:Boolean);
var i : integer;
begin
  for i:= 0 to ComponentCount - 1 do
    if Components[i].tag = 1 then
    BEGIN
      if (Components[i] is TEdit) then
         (Components[i] as TEdit).ReadOnly := Value;
      if (Components[i] is TSpinEdit) then
         (Components[i] as TSpinEdit).ReadOnly := Value;
    END;
end;

procedure TfrmTableDetail.ClearDatas;  //将显示的数据清除
var i : integer;
begin
  for i:= 0 to ComponentCount - 1 do
    if Components[i].tag = 1 then
      begin
        if (Components[i] is TEdit) then
           (Components[i] as TEdit).Text := '';
      end;
  SpinEdit1.Value:=30;
  ComboBox1.ItemIndex := -1;
  ComboBox3.ItemIndex :=1;
  SpinEdit2.Value:=0;

end;

procedure TfrmTableDetail.SetState(value:TEditState); //改变系统编辑状态
begin
  FState := Value;
  case value of
    esBrowse:
      begin
        N13.Enabled:=False;
        N14.Enabled:=False;
        spPost.Enabled:=False;
        spCancel.Enabled:=False;
        EnableModify(True);  //不允许修改
        SetEditColor(clWhite,clBlack);   //........
        spDispInfo.Panels[1].Text:='浏览';
      end;
    esEdit:
      begin
        N13.Enabled:=True;
        N14.Enabled:=True;
        spPost.Enabled:=True;
        spCancel.Enabled:=True;
        spAdd.Enabled:=False;
        spDel.Enabled:=False;
        N4.Enabled:=False;
        N6.Enabled:=False;
        EnableModify(False);  //允许修改
        ComboBox3.Enabled:=True;
        Edit2.SetFocus;
        SetEditColor(clWhite,clBlack);   //........
        spDispInfo.Panels[1].Text:='编辑';
    End;
    esAppend:
      Begin
        N13.Enabled:=True;
        N14.Enabled:=True;
        spPost.Enabled:=True;
        spCancel.Enabled:=True;
        spEdit.Enabled:=False;
        spDel.Enabled:=False;
        N5.Enabled:=False;
        N6.Enabled:=False;

        ClearDatas;//清除显示数据
        EnableModify(False);  //允许修改
        ComboBox1.Enabled:=True;
        ComboBox3.Enabled:=True;
        Edit1.Enabled:=True;
        Edit3.Enabled:=True;
        ComboBox1.Text:=OldFormName;
        Edit1.SetFocus;
        SetEditColor(clWhite,clBlack);   //........
        spDispInfo.Panels[1].Text:='添加';
      End;
  end;
End;

procedure TfrmTableDetail.spPriClick(Sender: TObject);
begin
if Query1.Active then
  Query1.Prior;
end;

procedure TfrmTableDetail.spNextClick(Sender: TObject);
begin
if Query1.Active then
  Query1.Next;
end;

procedure TfrmTableDetail.spLastClick(Sender: TObject);
begin
if Query1.Active then
  Query1.Last;
end;


procedure TfrmTableDetail.FormCreate(Sender: TObject);
begin
try
  with QUERY1 do
  begin
      Close;
      SQL.Clear;
      SQL.Add('SELECT  FORMCAPTION FROM SFRJREPORTNAME A GROUP BY FORMCAPTION');
      Open;
      First;
      ComBoBox1.Items.Clear;
      ComBoBox2.Items.Clear;
      ComBoBox2.Items.Add('所有窗体报表项');      
      While not eof do
      begin
          ComBoBox1.Items.Add(FieldByName('FORMCAPTION').AsString);
          ComBoBox2.Items.Add(FieldByName('FORMCAPTION').AsString);          
          next;
      end;
      Close;
      SQL.Clear;
      SQL.Add('SELECT * FROM SFRJTABLEDETAIL A ORDER BY TABLEDETAILID');
      Open;
      First;
      ComboBox2.ItemIndex:=0;      
      ComboBox1.Text := FieldByName('FORMCAPTION').AsString;
      Edit1.Text := FieldByName('CAPTION').AsString;
      Edit2.Text := FieldByName('PRINTCAPTION').AsString;
      Edit3.Text := FieldByName('COLUMNNAME').AsString;
      SpinEdit1.value := FieldByName('WIDTH').AsInteger;
  end;
  Query1.AfterScroll :=   sqlTableDetailAfterScroll;
  opState := esBrowse;
except
       on e:Exception do  HandleException(e);
end;

end;

procedure TfrmTableDetail.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Query1.Close;
end;

procedure TfrmTableDetail.spRefreshClick(Sender: TObject);
begin
try
  try
  begin
    Query1.Close;
    Query1.SQL.Clear;
    if Combobox2.Text<>'所有窗体报表项'then
       Query1.SQL.Add('SELECT  * FROM SFRJTABLEDETAIL A WHERE FORMCAPTION='''+Combobox2.Text+''' ORDER BY TABLEDETAILID')
    else
       Query1.SQL.Add('SELECT  * FROM SFRJTABLEDETAIL A ORDER BY TABLEDETAILID');
    Query1.Open;
    Query1.First;
  end;
  Except;
  end;
except
       on e:Exception do  HandleException(e);
end;
end;

procedure TfrmTableDetail.dbe_1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key = Chr (VK_RETURN ) then
    PerForm(WM_NEXTDLGCTL,0,0);
end;

procedure TfrmTableDetail.sqlTableDetailAfterScroll(DataSet: TDataSet);
begin
  if opState<>esEdit then
  begin
    try
      with Dataset do
      begin
          ComboBox1.Text := FieldByName('FORMCAPTION').AsString;
          Edit1.Text := FieldByName('CAPTION').AsString;
          Edit2.Text := FieldByName('PRINTCAPTION').AsString;
          Edit3.Text := FieldByName('COLUMNNAME').AsString;
          SpinEdit1.value := FieldByName('WIDTH').AsInteger;
          ComboBox3.ItemIndex := FieldByName('DATATYPE').AsInteger;
          SpinEdit2.value := FieldByName('INARYSERIALID').AsInteger;
      end;
      OldFormName:=ComboBox1.Text;
    except
           on e:Exception do  HandleException(e);
    end;
  end;
end;

procedure TfrmTableDetail.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key <> Char(VK_UP))and(Key <> Char(VK_DOWN))then
      key := Char(0); //禁止用户键盘输入信息
end;

procedure TfrmTableDetail.ComboBox1DblClick(Sender: TObject);
begin
  if opState <> esBrowse then
  (Sender as TComboBox).itemindex :=
      ((Sender as TComboBox).itemindex + 1) mod (Sender as TComboBox).items.count
end;


procedure TfrmTableDetail.spCancel2Click(Sender: TObject);
begin
   opState := esBrowse;
    Query1.Prior;
    Query1.Next;
    spCancel.Enabled := False;
    spPost.Enabled := False;
    OldFormName:=ComboBox1.Text;
    if Query1.Eof then ClearDatas;
    spDel.Visible:=False;
    N6.Visible:=False;
    spAdd.Enabled:=True;
    spEdit.Enabled:=True;
    spDel.Enabled:=True;
    N4.Enabled:=True;
    N5.Enabled:=True;
    N6.Enabled:=True;

end;

procedure TfrmTableDetail.spEdit2Click(Sender: TObject);
begin
  if Edit1.Text = '' then exit;
  if not Query1.Active then
    opState := esAppend
  else
  begin
    opState := esEdit;
  end;
  if spDel.Visible=True then
  begin
      ComboBox1.Enabled:=True;
      Edit1.Enabled:=True;
      Edit3.Enabled:=True;
      SpinEdit2.Enabled:=True;
  end
  else
  begin
      ComboBox1.Enabled:=False;
      Edit1.Enabled:=False;
      Edit3.Enabled:=False;
      SpinEdit2.Enabled:=False;
  end;
end;

procedure TfrmTableDetail.spAdd2Click(Sender: TObject);
begin
  opState := esAppend;
end;

procedure TfrmTableDetail.spDel2Click(Sender: TObject);
VAR i,j:Integer;
begin
try
  if MessageDlg('   您确认要删除显示列:'+Edit1.Text+',打印列:'+Edit2.Text+#13#10+'的定义内容吗?' ,
        mtConfirmation ,[mbYes,mbNo] ,0) <> mrYes then exit;
  try
    i:=0;
    j:=Query1.FieldByName('TABLEDETAILID').AsInteger;
    Query1.Prior;
    if Not Query1.Eof then
    begin
       i:=Query1.FieldByName('TABLEDETAILID').AsInteger;
       Query1.Next;
    end
    else
       Query1.first;
    with CDM.sqlExecute do
    begin
      Close;
      SQL.Clear;
      SQL.Add('DELETE FROM SFRJTABLEDETAIL WHERE TABLEDETAILID = :TABLEDETAILID');
      ParamByname('TABLEDETAILID').AsInteger := j;
      ExecSQL;
      Close;
    end;
  except
    ShowMessage('    删除显示列:'+Edit1.Text+',打印列:'+Edit2.Text+'失败,请重试!');
    raise;
  end;
  opState := esBrowse;
  ClearDatas;//清除显示数据

⌨️ 快捷键说明

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