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

📄 listfrm.pas

📁 文件包含程序源原文件
💻 PAS
字号:
// 嫟捠儕僗僩僼僅乕儉
unit Listfrm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, ComCtrls, StdCtrls, Buttons, Ex2NmEdt, ImgList, EnhLV, GLLV;

const cMAX_UNDO=20;

type

  // UNDO僶僢僼傽
  PLSUndo = ^TLSUndo;
  TLSUndo = Record
    Value:Variant;
    Control:TWinControl;
    Recid:LongInt;
  end;

  TUPDATE_LIST = Record
    REC_ID:LongInt;
    TARGET:Pointer; // 僇儔儉傊偺億僀儞僞
    INDEX,
    LEVEL:Integer;
    PARENT:Pointer; // 恊偺儗僐乕僪
  end;
  PUPDATE_LIST = ^TUPDATE_LIST;

  TCONTROL_LIST = Record

    Index,
    UpdateIndex:Integer;

    Target,
    Prior,
    Next:TWinControl;
    Focused:Boolean;
    Address,
    Parent:Pointer;

  end;
  PCONTROL_LIST = ^TCONTROL_LIST;

  TListForm = class(TForm)

    TabControl: TTabControl;
    ImageList: TImageList;
    HeaderPanel: TPanel;
    LeftPanel: TPanel;
    RightPanel: TPanel;
    TopPanel: TPanel;
    ClientPanel: TPanel;
    ListView: TGradLineListView;

    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormDestroy(Sender: TObject);

    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);

    procedure ListViewChange(Sender: TObject; Item: TListItem;
      Change: TItemChange);

    procedure ControlEnter(Sender: TObject);virtual;
    procedure ControlKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);virtual;
    procedure ListViewChanging(Sender: TObject; Item: TListItem;
      Change: TItemChange; var AllowChange: Boolean);

  private

   { Private 愰尵 }
    FUpdateListList:TList;

    function  SearchUpdateList(Target:Pointer):Boolean;

    procedure UpdateListListDisposeClear;

    function  SearchUpdateListList(Target:PUPDATE_LIST):TList;
    // 僞僽僗僩僢僾傪僋儕傾偡傞
    procedure TabStopClear;

    // 僼僅乕僇僗偺偁傞僐儞僩儘乕儖偺愝掕(侾屄偩偗乯
    procedure SetCtrlListFocus(CtrlList:PCONTROL_LIST);
    // 僐儞僩儘乕儖傊偺僼僅乕僇僗愝掕(Control.SetCtrlFocus偺幚峴)
    procedure SetCtrlFocusFromIndex(Index:Integer);

    function  GetCtrlListFocused:PCONTROL_LIST;

    // 僲乕僪偺慜屻堏摦張棟
    procedure PriorNextMoveProc(ListView:TCustomListView; Key:Word; ShiftState:TShiftState);

    // 僼僅乕僇僗傪愝掕偡傞
    procedure SetCtrlFocusPriorNext(Target:TWinControl; ShiftState:TShiftState);

    // 怴婯擖椡帪偺儕僞乕儞僉乕張棟
    function  NextNewProc(Sender:TWinControl; Key:Word; ShiftState:TShiftState):Boolean;


    procedure SetTagMemory;
    procedure DisposeTagMemory;

  protected

    FList,
    FUpdateList:TList;

    FCtrlList:array[0..99]of  PCONTROL_LIST;
    FCtrlListCount:Integer;

    FUndoBuffer:array[0..cMAX_UNDO-1] of PLSUNDO;

    FSelectedItem:TListItem;

    FNowSetData,
    FOnUndo,
    NewBtnClickFlag,
    DelBtnClickFlag,
    FOninitialize,
    FOnClose,
    FOnMakeItemCaption,
    FNewMode,
    FListViewClear,
    FListViewCoOperate, // 儕僗僩價儏乕偲楢摦偡傞 default True
    FOnNextNew,
    FCloseQuery:Boolean;

    FEntryCtrl:PCONTROL_LIST;

    FShiftState:TShiftState;

    FTabIndex,
    FColumnCount,
    FNewRecid:LongInt;


    // CtrlList偺弶婜壔
    procedure ResetCtrlList; //矣貍虖墛鷫

⌨️ 快捷键说明

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