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

📄 untfunc.pas

📁 delphi7,源代码 主要的是进行DELPHI7的源代码进行管理和维护
💻 PAS
字号:
{*******************************************************}
{                                                       }
{       单元名称: UntFunc                               }
{       创建日期: 2005-08-26                            }
{       摘要说明: 资料添加编辑单元                      }
{                                                       }
{       详细说明:                                       }
{                                                       }
{       参  阅:                                       }
{                                                       }
{       已知问题:                                       }
{                                                       }
{       待作事项:                                       }
{                                                       }
{       作  者: 胡孟杰                                }
{       Copyright (C) 2005 FdAuto                       }
{       当前版本: 2.2                                   }
{       版本历史:                                       }
{                                                       }
{*******************************************************}

unit UntFunc;

{==========================================================================
                       单元接口部分
==========================================================================}

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, Menus, XPMenu, StdCtrls, ExtCtrls, ComCtrls, Clipbrd,
  SynEdit, SynMemo, SynEditor;

type
  TFrmFunc = class(TForm)
    Panel1: TPanel;
    ComboType: TComboBox;
    Label2: TLabel;
    EditUses: TEdit;
    Label1: TLabel;
    EdtSubject: TEdit;
    Splitter1: TSplitter;
    MemoRemark: TMemo;
    Label3: TLabel;
    SBtnSave: TSpeedButton;
    SBtnClose: TSpeedButton;
    CheckBox1: TCheckBox;
    SBtnNew: TSpeedButton;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    XPMenu1: TXPMenu;
    CheckBox2: TCheckBox;
    Label4: TLabel;
    ComboBoxFunc: TComboBox;
    SbtWin: TSpeedButton;
    MemoConent: TSynEditor;
    N6: TMenuItem;
    aSynFind11: TMenuItem;
    aSynFindNext11: TMenuItem;
    aSynReplace11: TMenuItem;
    aSynReplaceNext11: TMenuItem;
    aSynUndo11: TMenuItem;
    aSynRedo11: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    procedure SBtnCloseClick(Sender: TObject);
    procedure ComboTypeDropDown(Sender: TObject);
    procedure SBtnSaveClick(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure MemoRemarkDblClick(Sender: TObject);
    procedure SBtnNewClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure CheckBox2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure ComboTypeChange(Sender: TObject);
    procedure ComboBoxFuncChange(Sender: TObject);
    procedure PopupMenu1Popup(Sender: TObject);
    procedure MemoConentKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure SbtWinClick(Sender: TObject);
    procedure ComboBoxFuncExit(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormHide(Sender: TObject);
    procedure MemoConentDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure MemoConentDragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure MemoConentDblClick(Sender: TObject);
    procedure EditUsesDblClick(Sender: TObject);
    procedure EdtSubjectDblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmFunc           : TFrmFunc;
  IDList            : Tstrings;
  Edited             : boolean;

  {==========================================================================
                          单元实现部分
  ==========================================================================}

implementation

{==========================================================================
                引用的单元,数据模块,DLL接口
==========================================================================}

uses UntDM, UntFaceD, UntMain, UntSysFaceD;

{$R *.dfm}

procedure TFrmFunc.SBtnCloseClick(Sender: TObject);
var
  k : integer;
begin
  if Edited then
   begin
    //self.FormStyle := fsNormal;
    CheckBox2.Checked := false;
    k := Application.MessageBox(PChar('资料内容已经修改,是否保存?'),PChar('系统提示'),MB_YESNOCANCEL + MB_ICONQUESTION);
    if k = idYES then
    begin
      self.SBtnSaveClick(Sender);
      if Edited then
        Exit
    end
    else
     if k = idCancel then
       Exit;
   end;
  Edited := false;
  Close;
end;

{==========================================================================
 过程名:    TFrmFunc.ComboTypeDropDown
  功  能:    组合框显示类别列表
  参 数:
  作 者:    胡孟杰
  日 期:    2005.08.26
==========================================================================}

procedure TFrmFunc.ComboTypeDropDown(Sender: TObject);
var
  TypeList          : Tstrings;
begin
  TypeList := Tstringlist.Create;
  Type_GetTypeList(DM.ADOConnection2, TypeList);
  ComboType.Clear;
  ComboType.Text := '选择资料类别';
  ComboType.Items.AddStrings(TypeList);
  TypeList.Free;
end;

{==========================================================================
 过程名:    TFrmFunc.SBtnSaveClick
  功  能:    保存资料
  参 数:
  作 者:    胡孟杰
  日 期:    2005.08.26
==========================================================================}

procedure TFrmFunc.SBtnSaveClick(Sender: TObject);
begin
  //检查输入数据是否合法
  if (ComboType.Text = '选择资料类别') or (ComboType.Text = '') then
    begin
      ShowInfo('请选择资料所属类别!');
      ComboType.SetFocus;
      Exit;
    end;
  if EdtSubject.Text = '' then
    begin
      ShowInfo('资料标题不能为空!');
      EdtSubject.SetFocus;
      Exit;
    end;
  //执行保存操作
  if self.Tag > 0 then                  //编辑状态
    begin
      if Func_Edit(DM.ADOConnection2, Self.Tag, ComboType.Text, EdtSubject.Text,
        EditUses.Text, MemoConent.Text, MemoRemark.Text) then
          ShowInfo('保存成功!');
        self.ComboBoxFunc.Text := EdtSubject.Text ;
        self.Caption := EdtSubject.Text ;
    end
  else                                  //添加状态
    begin
      if Func_AddNew(DM.ADOConnection2, ComboType.Text, EdtSubject.Text,
        EditUses.Text, MemoConent.Text, MemoRemark.Text) then
          ShowInfo('保存成功!');
        self.ComboBoxFunc.Text := EdtSubject.Text ;
        self.Caption := EdtSubject.Text ;
    end;
  Edited := false;
end;

{==========================================================================
 过程名:    TFrmFunc.CheckBox1Click
  功  能:    设置自动换行
  参 数:
  作 者:    胡孟杰
  日 期:    2005.08.26
==========================================================================}

procedure TFrmFunc.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
    begin
      MemoConent.ScrollBars := ssVertical;
      MemoConent.WordWrap.Enabled := true;
    end
  else
    begin
      MemoConent.ScrollBars := ssBoth;
      MemoConent.WordWrap.Enabled := false;
    end;
  if ComboBoxFunc.ItemIndex > 0 then
    self.ComboBoxFuncChange(Sender);
end;

{==========================================================================
 过程名:    TFrmFunc.MemoRemarkDblClick
  功  能:    双击全选
  参 数:
  作 者:    胡孟杰
  日 期:    2005.08.26
==========================================================================}

procedure TFrmFunc.MemoRemarkDblClick(Sender: TObject);
begin
  MemoRemark.SelectAll;
end;

{==========================================================================
 过程名:    TFrmFunc.SBtnNewClick
  功  能:    新建资料
  参 数:
  作 者:    胡孟杰
  日 期:    2005.08.26
==========================================================================}

procedure TFrmFunc.SBtnNewClick(Sender: TObject);
var
  k : integer;
begin
  if Edited then
   begin
    //self.FormStyle := fsNormal;
    CheckBox2.Checked := false;
    k := Application.MessageBox(PChar('资料内容已经修改,是否保存?'),PChar('系统提示'),MB_YESNOCANCEL + MB_ICONQUESTION);
    if k = idYES then
    begin
      self.SBtnSaveClick(Sender);
      if Edited then
        Exit;
    end
    else
     if k = idCancel then
       Exit;
   end;

  Self.ComboType.Text := '选择资料类别';
  self.ComboBoxFunc.Clear ;
  self.ComboBoxFunc.Text := '选择该分类资料';
  Self.EditUses.Clear;
  Self.EdtSubject.Clear;
  Self.MemoConent.Clear;
  Self.MemoRemark.Clear;
  CheckBox1.Caption := '自动换行';
  CheckBox2.Caption := '置于顶层';
  Self.Tag := 0;
  Self.Caption := '添加资料';
  Edited := false;
end;

{==========================================================================
 过程名:    TFrmFunc.FormActivate
  功  能:    如果是编辑状态,则载入资料
  参 数:
  作 者:    胡孟杰
  日 期:    2005.08.26
==========================================================================}

procedure TFrmFunc.FormActivate(Sender: TObject);
var
  PType, PSubject, PUses: string;
  PConent, PRemark  : Tstrings;
begin
  if Self.Tag > 0 then
    begin
      PConent := Tstringlist.Create;
      PRemark := Tstringlist.Create;
      SetLength(PType, 255);
      SetLength(PSubject, 255);
      SetLength(PUses, 255);
      if Func_GetRecordByID(DM.ADOConnection2, Self.Tag,
        PChar(PType), PChar(PSubject), PChar(PUses), PConent, PRemark) then
        begin
          EditUses.Text := PUses;
          MemoConent.Text := PConent.Text;
          MemoRemark.Text := PRemark.Text;
          ComboType.Text := PType;
          EdtSubject.Text := PSubject;
          self.Caption := '修改资料-' + PSubject;
        end
      else
        self.Caption := '添加资料' ;
      PConent.Free;
      PRemark.Free;
    end
  else
  begin
    self.Caption := '添加资料' ;
    if Clipboard.HasFormat(CF_TEXT) then
    begin
      self.MemoConent.PasteFromClipboard ;
      self.EdtSubject.Text := self.MemoConent.Lines[0] ;
      EditUses.Text := MemoConent.Lines[1] ;
    end;
  end;
end;

procedure TFrmFunc.CheckBox2Click(Sender: TObject);
var
 tname,tuses,ttype : string;
begin
  tname := EdtSubject.Text ;
  tuses := EditUses.Text ;
  ttype := ComboType.Text ;

  if CheckBox2.Checked then
  begin
    self.WindowState := wsNormal;
    self.FormStyle := fsStayOnTop;
    FormMain.CoolTrayIcon1.HideMainForm ;
  end
  else
    self.FormStyle := fsNormal;

  ComboType.Text := '选择资料类别';
  ComboBoxFunc.Text := '选择该分类资料';
  CheckBox1.Caption := '自动换行';
  CheckBox2.Caption := '置于顶层';
  EdtSubject.Text := tname ;
  EditUses.Text := tuses ;
  ComboType.Text := ttype ;
end;

procedure TFrmFunc.FormCreate(Sender: TObject);
begin
  IDList := Tstringlist.Create;
  Edited := false;
end;

procedure TFrmFunc.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if not Edited then
  begin
    IDList.Free;
    Action := caFree;
  end
  else
  begin
    self.SBtnCloseClick(Sender);
    if Edited then
      Action := caNone
    else
    begin
      IDList.Free;
      Action := caFree;
    end;
  end;
end;

procedure TFrmFunc.ComboTypeChange(Sender: TObject);
var
  SubList           : Tstrings;
begin
  SubList := Tstringlist.Create;
  Func_GetIDListByType(DM.ADOConnection2, self.ComboType.Text, IDList, SubList);
  self.ComboBoxFunc.Clear;
  self.ComboBoxFunc.Text := '选择该分类资料';
  self.ComboBoxFunc.Items.AddStrings(SubList);
  SubList.Free;
end;

procedure TFrmFunc.ComboBoxFuncChange(Sender: TObject);
var
  PType, PSubject, PUses: string;
  PConent, PRemark  : Tstrings;
  k : integer;
begin
  if Edited then
  begin
    //self.FormStyle := fsNormal;
    CheckBox2.Checked := false;
    k := Application.MessageBox(PChar('代码内容已经修改,是否保存?'),PChar('系统提示'),MB_YESNOCANCEL + MB_ICONQUESTION);
    if k = idYES then
    begin
      self.SBtnSaveClick(Sender);
      if Edited then
        Exit;
    end
    else
     if k = idCancel then
       Exit;
   end;

  PConent := Tstringlist.Create;
  PRemark := Tstringlist.Create;
  SetLength(PType, 255);
  SetLength(PSubject, 255);
  SetLength(PUses, 255);
  if Func_GetRecordByID(DM.ADOConnection2, StrToInt(IDList[ComboBoxFunc.ItemIndex]),
    PChar(PType), PChar(PSubject), PChar(PUses), PConent, PRemark) then
    begin
      EditUses.Text := PUses;
      MemoConent.Text := PConent.Text;
      MemoRemark.Text := PRemark.Text;
      ComboType.Text := PType;
      EdtSubject.Text := PSubject;
    end;
  PConent.Free;
  PRemark.Free;
  self.Caption := '修改资料-' + PSubject;
  self.Tag := StrToInt(IDList[ComboBoxFunc.ItemIndex]);
  Edited := false;
end;

procedure TFrmFunc.PopupMenu1Popup(Sender: TObject);
begin
  //self.N1.Enabled := self.MemoConent.SelLength > 0 ;
  //self.N2.Enabled := self.N1.Enabled ;
  //N3.Enabled := Clipboard.HasFormat(CF_TEXT);
end;

procedure TFrmFunc.MemoConentKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  Edited := true;
end;

procedure TFrmFunc.SbtWinClick(Sender: TObject);
begin
  if self.WindowState = wsNormal then
    FormMain.FM := 8
  else
    FormMain.FM := 9;
  self.Close ;
end;

procedure TFrmFunc.ComboBoxFuncExit(Sender: TObject);
begin
  if Trim(EdtSubject.Text)='' then
    ComboBoxFunc.Text := '选择该分类资料'
  else
    ComboBoxFunc.Text := EdtSubject.Text ;
end;

procedure TFrmFunc.FormShow(Sender: TObject);
begin
  if FormMain.WindowState = wsMinimized then
    FormMain.TimerEnable(1);
end;

procedure TFrmFunc.FormHide(Sender: TObject);
begin
  if FormMain.WindowState = wsMinimized then
  begin
    FormMain.TimerEnable(0);
    ShowInfo('右键打开菜单,Delphi程序员助手为您服务。');
  end;
end;

procedure TFrmFunc.MemoConentDragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  MemoConent.SetFocus ;
  Accept := true;
end;

procedure TFrmFunc.MemoConentDragDrop(Sender, Source: TObject; X,
  Y: Integer);
begin
  MemoConent.Update ;
end;

procedure TFrmFunc.MemoConentDblClick(Sender: TObject);
begin
  MemoConent.SelectAll ;
end;

procedure TFrmFunc.EditUsesDblClick(Sender: TObject);
begin
  EditUses.SelectAll ;
end;

procedure TFrmFunc.EdtSubjectDblClick(Sender: TObject);
begin
  EdtSubject.SelectAll ;
end;

end.

⌨️ 快捷键说明

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