📄 listfrm.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 + -