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

📄 kjkm02p.pas

📁 DELPHI DFM资源文件内码批量转换程序
💻 PAS
字号:
unit kjkm02p;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, StdCtrls, Buttons, ToolWin, ComCtrls, ImgList,
  DB, DBTables, STRUTILS;

type
  Tkjkm02f = class(TForm)
    TreeView1: TTreeView;
    cbcszl: TCoolBar;
    spappend: TSpeedButton;
    Label56: TLabel;
    spexit: TSpeedButton;
    sppost: TSpeedButton;
    spedit: TSpeedButton;
    spcancel: TSpeedButton;
    Label57: TLabel;
    spdelete: TSpeedButton;
    EDP: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Query1: TQuery;
    Query2: TQuery;
    ETYPE_NO: TEdit;
    StatusBar1: TStatusBar;
    Label3: TLabel;
    EFTYPE_NO: TEdit;
    procedure spexitClick(Sender: TObject);
    procedure spappendClick(Sender: TObject);
    procedure REFRESHDATA;
    procedure REFRESHTREEVIEW;

    procedure FormShow(Sender: TObject);
    procedure spcancelClick(Sender: TObject);
    procedure TreeView1Click(Sender: TObject);
    procedure sppostClick(Sender: TObject);
    procedure FormClick(Sender: TObject);
    procedure spdeleteClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure speditClick(Sender: TObject);
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  kjkm02f: Tkjkm02f;
  ADDMODE, EDITMODE: BOOLEAN;
implementation

{$R *.dfm}

procedure Tkjkm02f.spexitClick(Sender: TObject);
begin
  CLOSE;
end;

procedure Tkjkm02f.REFRESHData;
VAR
I,LEN:INTEGER;
KMCODE:STRING;
begin
  if ADDMODE then
  BEGIN
  ETYPE_NO.Text:='';
  EDP.Text:='';
    if (treeview1.selected <> nil) and not (treeview1.Selected.IsFirstNode)  then
    BEGIN
    I:=ANSIPOS(')',TREEVIEW1.Selected.Text);
    eFTYPE_NO.Text := MIDSTR(TREEVIEW1.Selected.Text,2,I-2);
     END
    else
      eFTYPE_NO.text := '';

   if (treeview1.Selected = nil) or treeview1.Selected.IsFirstNode  then
    eFTYPE_NO.Text := '';
   END;

  if ADDMODE or EDITMODE then
  begin
    SPPOST.Visible := TRUE;
    SPAPPEND.Visible := FALSE;
    SPCANCEL.Visible := TRUE;
    SPEDIT.Visible := FALSE;
    SPDELETE.Enabled := FALSE;
    ETYPE_NO.ReadOnly := FALSE;
    EDP.ReadOnly :=FALSE;
   end
  else
  begin
    if (treeview1.selected <> nil) and not treeview1.Selected.IsFirstNode then
    BEGIN
    I:=ANSIPOS(')',TREEVIEW1.Selected.Text);
    len:=length(TREEVIEW1.Selected.Text);
    eTYPE_NO.Text := MIDSTR(TREEVIEW1.Selected.Text,2,I-2);
    EDP.Text:=midSTR(TREEVIEW1.Selected.Text,I+1,len);
     IF TREEVIEW1.Selected.Parent<>NIL
     THEN
     BEGIN
     I:=ANSIPOS(')',TREEVIEW1.Selected.Parent.Text);
     eFTYPE_NO.Text := MIDSTR(TREEVIEW1.Selected.PARENT.Text,2,I-2);
     END
     ELSE
     EFTYPE_NO.Text :='';
     END
    else
     BEGIN
      eFTYPE_NO.text := '';
      EDP.Text:='';
      ETYPE_NO.Text:='';
      END;

    SPPOST.Visible := FALSE;
    SPAPPEND.Visible := TRUE;
    SPCANCEL.Visible := FALSE;
    SPEDIT.Visible := TRUE;
    SPDELETE.Enabled := TRUE;
    ETYPE_NO.ReadOnly := TRUE;
    EDP.ReadOnly :=TRUE;
  end;
end;

procedure Tkjkm02f.spappendClick(Sender: TObject);
begin
  ADDMODE := TRUE;
  REFRESHDATA;
  etype_no.SetFocus ;
end;


procedure Tkjkm02f.REFRESHTREEVIEW;
var
  SQL: string;
  I: INTEGER;
  NODE,root: TTREENODE;
begin
  TREEVIEW1.Items.Clear;
  root:=treeview1.Items.Add(nil,'会计科目分类');

  SQL := 'SELECT * FROM KJ01 ORDER BY TYPE';
  QUERY1.Close;
  QUERY1.SQL.Clear;
  QUERY1.SQL.Add(SQL);
  QUERY1.OPEN;
  while not QUERY1.Eof do
  begin
    //定位其父节点
    I := LENGTH(QUERY1.FIELDBYNAME('TYPE').AsString);
    //如果为第一层
    if I = 2 then
    begin
      TREEVIEW1.Selected := nil;

      NODE := TREEVIEW1.Items.Addchild(root,
      '('+QUERY1.FIELDBYNAME('TYPE_NO').ASSTRING+')'+QUERY1.FIELDBYNAME('DP').AsString);
      NODE.Data := POINTER(QUERY1.FIELDBYNAME('ID').ASINTEGER);

    end
    else
    //如果不是第一层
    begin
  //找出父节点
      SQL := MIDSTR(QUERY1.FIELDBYNAME('TYPE').AsString, 0, (I - 2));
      SQL := ' SELECT * FROM KJ01 WHERE TYPE=' + '''' + SQL + '''';
      QUERY2.Close;
      QUERY2.SQL.Clear;
      QUERY2.SQL.Add(SQL);
      QUERY2.Open;
      if not QUERY2.IsEmpty then
      begin
        I := 0;
        while I < TREEVIEW1.Items.Count do
        begin
          NODE := TREEVIEW1.Items[I];
          if INTEGER(TREEVIEW1.Items[I].Data) = QUERY2.FieldByName('ID').AsInteger then
          begin
            NODE := TREEVIEW1.Items.AddChild(NODE,
            '('+QUERY1.FIELDBYNAME('TYPE_NO').ASSTRING+')'+QUERY1.FIELDBYNAME('DP').ASSTRING);
            NODE.Data := POINTER(QUERY1.FieldByName('ID').AsInteger);
          end;
          I := I + 1;
        end;

      end;
    end;

    QUERY1.Next;
  end;

end;


procedure Tkjkm02f.FormShow(Sender: TObject);
begin

  REFRESHTREEVIEW;
  REFRESHDATA;

end;

procedure Tkjkm02f.spcancelClick(Sender: TObject);
begin
  ADDMODE := FALSE;
  EDITMODE := FALSE;
  REFRESHDATA;
end;

procedure Tkjkm02f.TreeView1Click(Sender: TObject);


begin
  refreshdata;
end;

procedure Tkjkm02f.sppostClick(Sender: TObject);
var
  SQL, FTYPE_NO: string;
  I: INTEGER;
  FLAG: BOOLEAN;
  NODE: TTREENODE;
begin
  if ADDMODE then
  begin
//查找同一级编号,取最大的编号再加1
  //第一级
    if TREEVIEW1.SelectionCount = 0 then
    begin
      I := 10;
      FLAG := FALSE;
      while (I <= 99) and not FLAG do
      begin
        SQL := 'SELECT * FROM KJ01 WHERE TYPE=' + '''' + INTTOSTR(I) + '''';
        QUERY1.Close;
        QUERY1.SQL.Clear;
        QUERY1.SQL.Add(SQL);
        QUERY1.Open;
        if QUERY1.IsEmpty then
        begin
          SQL := ' INSERT INTO KJ01 (TYPE,DP,TYPE_NO) VALUES (' +
           '''' + INTTOSTR(I) + '''' +
            ',' + '''' + EDP.Text + '''' +
            ','+''''+ETYPE_NO.Text+''''+  ')';
          QUERY1.Close;
          QUERY1.SQL.Clear;
          QUERY1.SQL.ADD(SQL);
          QUERY1.ExecSQL;
          FLAG := TRUE;
        end;
        I := I + 1;
      end;
      if not FLAG then
        MESSAGEDLG('错误,同一层类别不能超过90个!', mtInformation,
          [mbOk], 0)
      else
      begin
       //更新树
        SQL := ' SELECT * FROM  KJ01 WHERE TYPE=' + '''' + INTTOSTR(I - 1) + '''';
        QUERY1.Close;
        QUERY1.SQL.Clear;
       // SHOWMESSAGE(SQL);
        QUERY1.SQL.ADD(SQL);
        QUERY1.OPEN;

        TREEVIEW1.Selected := nil;
        NODE := TREEVIEW1.Items.Add(nil,
        '('+QUERY1.FIELDBYNAME('TYPE_NO').ASSTRING+')'+ QUERY1.FIELDBYNAME('DP').AsString);
        NODE.Data := POINTER(QUERY1.FIELDBYNAME('ID').ASINTEGER);
        TREEVIEW1.Repaint;
        TREEVIEW1.Refresh;
      end;
      ADDMODE := FALSE;
      EDITMODE := FALSE;
      REFRESHDATA;
    end //END SELECT=NIL
    else
    begin //不是第一层,则须取得上层编号加上本层编号
    //取得父节点编号
      I := INTEGER(TREEVIEW1.Selected.Data); //取得父世点的ID
      SQL := ' SELECT * FROM KJ01 WHERE ID=' + INTTOSTR(I);
      QUERY1.Close;
      QUERY1.SQL.Clear;
      QUERY1.SQL.Add(SQL);
      QUERY1.OPEN;
      FTYPE_NO := QUERY1.FIELDBYNAME('TYPE').AsString;
      I := 10;
      FLAG := FALSE;
      while (I <= 99) and not FLAG do
      begin
        SQL := 'SELECT * FROM KJ01 WHERE TYPE=' + '''' + FTYPE_NO + INTTOSTR(I) + '''';
        QUERY1.Close;
        QUERY1.SQL.Clear;
        QUERY1.SQL.Add(SQL);
        QUERY1.Open;
        if QUERY1.IsEmpty then
        begin
          SQL := ' INSERT INTO KJ01 (TYPE,DP,TYPE_NO) VALUES (' +
            '''' + FTYPE_NO + INTTOSTR(I) + '''' +
            ',' + '''' + EDP.Text + '''' +
            ','+''''+ETYPE_NO.Text+''''+  ')';
          QUERY1.Close;
          QUERY1.SQL.Clear;
          QUERY1.SQL.ADD(SQL);
          QUERY1.ExecSQL;
          FLAG := TRUE;
        end; // END ISEMPTY
        I := I + 1;
      end; // END WHILE
      if not FLAG then
        MESSAGEDLG('错误,同一层类别不能超过90个!', mtInformation,
          [mbOk], 0)
      else
      begin
       //更新树
        SQL := ' SELECT * FROM  KJ01 WHERE TYPE=' + ''''
          + FTYPE_NO + INTTOSTR(I - 1) + '''';
        QUERY1.Close;
        QUERY1.SQL.Clear;
       // SHOWMESSAGE(SQL);
        QUERY1.SQL.ADD(SQL);
        QUERY1.OPEN;
        NODE := TREEVIEW1.Selected;
        NODE := TREEVIEW1.Items.AddChild(NODE,
        '('+QUERY1.FIELDBYNAME('TYPE_NO').ASSTRING+')'+ QUERY1.FIELDBYNAME('DP').ASSTRING);
        NODE.Data := POINTER(QUERY1.FieldByName('ID').AsInteger);
        TREEVIEW1.Repaint;
        TREEVIEW1.Refresh;
      end;
      ADDMODE := FALSE;
      EDITMODE := FALSE;
      REFRESHDATA;

  //  REFRESHTREEVIEW;
    end; //END SELECT=NIL
  end; // END ADDMODE
  if editmode then
  begin
    sql := ' update KJ01 set dp=' + '''' + eDP.Text + '''' +
    ',TYPE_NO='+''''+ETYPE_NO.Text+''''+
      ' where id=' + inttostr(integer(treeview1.selected.data));
    QUERY1.Close;
    QUERY1.SQL.Clear;
    QUERY1.SQL.ADD(SQL);
    QUERY1.ExecSQL;
    treeview1.Selected.Text :='('+ETYPE_NO.Text+')'+eDP.text;
    TREEVIEW1.Repaint;
    TREEVIEW1.Refresh;
    ADDMODE := FALSE;
    EDITMODE := FALSE;
    REFRESHDATA;
  end;
end;

procedure Tkjkm02f.FormClick(Sender: TObject);
begin
//  treeview1.Selected := nil;
//  refreshdata;
end;

procedure Tkjkm02f.spdeleteClick(Sender: TObject);
var
  SQL, TYPE_NO: string;
  I: INTEGER;
begin
  if TREEVIEW1.SelectionCount = 0 then
    MESSAGEDLG('错误,你还没选择要删除的节点!', mtERROR,
      [mbOk], 0)
  else
  begin
    I := INTEGER(TREEVIEW1.Selected.Data);
    SQL := ' SELECT * FROM KJ01 WHERE ID=' + INTTOSTR(I);
    QUERY1.Close;
    QUERY1.SQL.Clear;
    QUERY1.SQL.ADD(SQL);
    QUERY1.OPEN;
    TYPE_NO := QUERY1.FIELDBYNAME('TYPE').AsString;
    SQL := ' SELECT * FROM KJ01 WHERE TYPE LIKE ' + '''' + TYPE_NO + '%' + '''';
    QUERY1.Close;
    QUERY1.SQL.Clear;
    QUERY1.SQL.ADD(SQL);
    QUERY1.OPEN;
    if QUERY1.RecordCount > 1 then
      MESSAGEDLG('错误,你还有下级节点,不能删除!', mtERROR,
        [mbOk], 0)
    else
      if MESSAGEDLG('你确定要删除此节点吗?',
      mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    begin
      SQL := 'DELETE FROM KJ01 WHERE TYPE=' + '''' + TYPE_NO + '''';
      QUERY1.Close;
      QUERY1.SQL.Clear;
      QUERY1.SQL.ADD(SQL);
      QUERY1.ExecSQL;
      TREEVIEW1.Selected.Delete;
      TREEVIEW1.Repaint;
      TREEVIEW1.Refresh;
      TREEVIEW1.Selected := nil;
      refreshdata;

    end;




  end;


end;

procedure Tkjkm02f.Button1Click(Sender: TObject);
var
  I, J: INTEGER;
begin
  I := 0;
  while I < TREEVIEW1.Items.Count do
  begin
    J := INTEGER(TREEVIEW1.Items[I].DATA);
    SHOWMESSAGE(INTTOSTR(J));
    I := I + 1;
  end;
end;

procedure Tkjkm02f.speditClick(Sender: TObject);
begin
  editmode := true;
  eDP.ReadOnly := false;
  refreshdata;
  eDP.SetFocus;
end;

procedure Tkjkm02f.TreeView1Change(Sender: TObject; Node: TTreeNode);
begin
 refreshdata;
end;

end.

⌨️ 快捷键说明

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