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

📄 lru.pas

📁 可以做出类似netants的那种窗体左右弹出效果
💻 PAS
字号:
unit LRU;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, FormCont;

type
  TFormLRU = class(TForm)
    Panel: TPanel;
    MemoText: TMemo;
    CheckBoxViewLRU: TCheckBox;
    ListBoxLRU: TListBox;
    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure CheckBoxViewLRUClick(Sender: TObject);
    procedure ListBoxLRUClick(Sender: TObject);
  private
  public
  published
    function  FCGetExtraDataClass: TFCExtraDataClass;
    procedure FCGetExtraData(ExtraData: TFCExtraData);
    procedure FCSetExtraData(ExtraData: TFCExtraData);
  end;

  TLRUExtraData = class(TFCExtraData)
  public
    Checked: Boolean;
  end;
var
  FormLRU: TFormLRU;

implementation

uses Navigator, TransEff, teSlide;

{$R *.DFM}

function TFormLRU.FCGetExtraDataClass: TFCExtraDataClass;
begin
  Result := TLRUExtraData;
end;

procedure TFormLRU.FCGetExtraData(ExtraData: TFCExtraData);
begin
  CheckBoxViewLRU.Checked := (ExtraData as TLRUExtraData).Checked;
end;

procedure TFormLRU.FCSetExtraData(ExtraData: TFCExtraData);
begin
  (ExtraData as TLRUExtraData).Checked := CheckBoxViewLRU.Checked;
end;

procedure TFormLRU.FormCreate(Sender: TObject);
begin
  if Screen.PixelsPerInch > PixelsPerInch then
    MemoText.Font.Size := 8;
  MemoText.WordWrap := True;
end;

procedure TFormLRU.FormShow(Sender: TObject);
var
  i: Integer;
begin
  for i:=1 to FormNavigator.FormContainerNavigator.LRUFormCount do
    ListBoxLRU.Items.Add(
      FormNavigator.FormContainerNavigator.LRUFormsData[i].Description);

  if FormNavigator.FormContainerNavigator.LRUFormIndex <> 0 then
    ListBoxLRU.ItemIndex := FormNavigator.FormContainerNavigator.LRUFormIndex-1;
end;

procedure TFormLRU.CheckBoxViewLRUClick(Sender: TObject);
var
  Transition: TSlideTransition;
begin
  Transition := TSlideTransition.Create;
  try
    Transition.Milliseconds := 500;
    if ListBoxLRU.Visible
    then
    begin
      Transition.Direction  := tedDownRight;
      Transition.ElasticSrc := True;
    end
    else
    begin
      Transition.Direction  := tedUpLeft;
      Transition.ElasticDst := True;
    end;
    Transition.Prepare(ListBoxLRU.Parent, ListBoxLRU.BoundsRect);
    ListBoxLRU.Visible := CheckBoxViewLRU.Checked;
    if Transition.Prepared then
      Transition.Execute;
  finally
    Transition.Free;
  end;
end;

procedure TFormLRU.ListBoxLRUClick(Sender: TObject);
var
  SaveCursor: TCursor;
begin
  if ListBoxLRU.ItemIndex <> -1 then
  begin
    SaveCursor := Screen.Cursor;
    Screen.Cursor := crHourglass;
    try
      FormNavigator.SelectNode(FormNavigator.FormContainerNavigator.
        LRUFormsData[ListBoxLRU.ItemIndex+1].Description);
      FormNavigator.FormContainerNavigator.ShowLRUFormEx(ListBoxLRU.ItemIndex+1,
        True, FormNavigator.TransEffct, nil, FormNavigator.Align);
    finally
      Screen.Cursor := SaveCursor;
    end;
  end;
end;

end.

⌨️ 快捷键说明

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