aoutlbed.pas

来自「delphi编程控件」· PAS 代码 · 共 555 行 · 第 1/2 页

PAS
555
字号
unit aoutlbed;
(*
 COPYRIGHT (c) RSD Software 1997 - 98
 All Rights Reserved.
*)

interface
           
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, aimctrls, ExtCtrls, aoutlbar, Menus, aclconst;

type
  TFAutoOutLookBarEditor = class(TForm)
    Panel3: TPanel;
    Bar: TAutoOutLookBar;
    AutoOutLookPopupMenu1: TAutoOutLookPopupMenu;
    Panel1: TPanel;
    Panel2: TPanel;
    BOk: TButton;
    BCancel: TButton;
    bHelp: TButton;
    BDefault: TButton;
    BIAdd: TButton;
    BIInsert: TButton;
    BIDelete: TButton;
    BIClear: TButton;
    BIMoveUp: TButton;
    BIMovedown: TButton;
    GGroup: TGroupBox;
    LIconType: TLabel;
    BGAdd: TButton;
    BGDelete: TButton;
    BGRename: TButton;
    CBGIType: TCheckBox;
    GItemProp: TGroupBox;
    LCustomData: TLabel;
    ECustomData: TEdit;
    LTag: TLabel;
    ETag: TEdit;
    SILarge: TAutoSpinImage;
    SISmall: TAutoSpinImage;
    LSILarge: TLabel;
    LSISmall: TLabel;
    LCaption: TLabel;
    ECaption: TEdit;
    BIDefault: TButton;
    GStoredItems: TGroupBox;
    CBStoredGroup: TComboBox;
    LBStoredItems: TAutoImageListBox;
    Bevel1: TBevel;
    EHint: TEdit;
    LHint: TLabel;
    BGUp: TButton;
    BGDown: TButton;
    procedure FormShow(Sender: TObject);
    procedure CBStoredGroupClick(Sender: TObject);
    procedure BGAddClick(Sender: TObject);
    procedure BIAddClick(Sender: TObject);
    procedure BGRenameClick(Sender: TObject);
    procedure BCancelClick(Sender: TObject);
    procedure BOkClick(Sender: TObject);
    procedure CBGITypeClick(Sender: TObject);
    procedure BGDeleteClick(Sender: TObject);
    procedure BIInsertClick(Sender: TObject);
    procedure BIDeleteClick(Sender: TObject);
    procedure BIClearClick(Sender: TObject);
    procedure BIMoveUpClick(Sender: TObject);
    procedure BIMovedownClick(Sender: TObject);
    procedure LBStoredItemsStartDrag(Sender: TObject;
      var DragObject: TDragObject);
   procedure LBStoredItemsEndDrag(Sender, Target: TObject; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure LBItemsDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure BDefaultClick(Sender: TObject);
    procedure ECustomDataExit(Sender: TObject);
    procedure ETagKeyPress(Sender: TObject; var Key: Char);
    procedure ETagExit(Sender: TObject);
    procedure bHelpClick(Sender: TObject);
    procedure BarChangeSelectedItem(Sender: TObject);
    procedure SILargeChange(Sender: TObject; ItemIndex: Integer);
    procedure SISmallChange(Sender: TObject; ItemIndex: Integer);
    procedure BarChangeActiveGroup(Sender: TObject);
    procedure ECaptionChange(Sender: TObject);
    procedure BIDefaultClick(Sender: TObject);
    procedure LBStoredItemsDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure LBStoredItemsDragDrop(Sender, Source: TObject; X,
      Y: Integer);
    procedure EHintChange(Sender: TObject);
    procedure BGUpClick(Sender: TObject);
    procedure BGDownClick(Sender: TObject);
  private
    OldSelectedGroup : TAutoOutLookGroup;
    OldSelectedIndex : Integer;
    procedure SelectItem;
  end;

function ShowAutoOutLookBarEditor(ABar : TAutoOutLookBar) : Boolean;

implementation
uses autostrs;

function ShowAutoOutLookBarEditor(ABar : TAutoOutLookBar) : Boolean;
Var
  AForm : TFAutoOutLookBarEditor;
begin
  Result := False;
  if(ABar.Store = Nil) then
    MessageDlg(LoadStr(AE_OLB_BARHASNOTSTORE), mtError, [mbOK], -1)
  else begin
    if(ABar.Store.Count = 0) then
      MessageDlg(FmtLoadStr(AE_OLB_STOREBARNOITEM, [ABar.Store.Name]), mtError, [mbOK], -1)
    else begin
      AForm := TFAutoOutLookBarEditor.Create(Nil);
      AForm.Caption := AForm.Caption + ABar.Name;
      AForm.Bar.Assign(ABar);
      AForm.SILarge.ImageList := ABar.Store.LargeImages;
      AForm.SISmall.ImageList := ABar.Store.SmallImages;
      if(ABar.Groups.Count > 0) And (ABar.Groups[0].Items.Count > 0) then
        AForm.Bar.SelectedItem := AForm.Bar.Groups[0].Items[0];
//      AForm.BarChangeSelectedItem(Nil);
      AForm.BGDelete.Enabled := ABar.GroupCount > 0;
      AForm.BGRename.Enabled := ABar.GroupCount > 0;
      AForm.BGUp.Enabled := ABar.GroupCount > 1;
      AForm.BGDown.Enabled := ABar.GroupCount > 1;
      AForm.ShowModal;
      if(AForm.ModalResult = mrOk) then begin
        ABar.Assign(AForm.Bar);
        Result := True;
      end;
      AForm.Free;
    end;
  end;
end;

{$R *.DFM}
procedure TFAutoOutLookBarEditor.SelectItem;
Var
  i : Integer;
begin
  if(Bar.ActiveGroup = Nil) then begin
    OldSelectedGroup := Nil;
    OldSelectedIndex := -1;
    exit;
  end;
  if(OldSelectedGroup = Nil) then begin
   OldSelectedGroup := Bar.Groups[0];
   OldSelectedIndex := 0;
  end;
  if(OldSelectedIndex < OldSelectedGroup.Items.Count) then
    Bar.SelectedItem := OldSelectedGroup.Items[OldSelectedIndex]
  else
    if(OldSelectedGroup.Items.Count > 0) then
      Bar.SelectedItem := OldSelectedGroup.Items[OldSelectedGroup.Items.Count - 1]
    else
      for i := 0 to Bar.Groups.Count - 1 do
        if(Bar.Groups[i].Items.Count > 0) then begin
          Bar.SelectedItem := Bar.Groups[i].Items[0];
          break;
        end;
  if(Bar.SelectedItem <> Nil) then begin
    Bar.ActiveGroup := Bar.SelectedItem.Group;
    Bar.SelectedItem.MakeVisible;
  end else begin
    OldSelectedGroup := Nil;
    OldSelectedIndex := -1;
  end;  
end;

procedure TFAutoOutLookBarEditor.FormShow(Sender: TObject);
Var
  i : Integer;
begin
  if(Bar.Store <> Nil) then begin
    LBStoredItems.ImageList := Bar.Store.LargeImages;
    for i := 0 to Bar.Store.Categories.Count - 1 do
      if(Bar.Store.GetCountByCategory(Bar.Store.Categories[i]) > 0) then
      CBStoredGroup.Items.Add(Bar.Store.Categories[i]);
    if(CBStoredGroup.Items.Count > 0) then begin
      CBStoredGroup.ItemIndex := 0;
      CBStoredGroupClick(Sender);
    end;
  end;
end;

procedure TFAutoOutLookBarEditor.CBStoredGroupClick(Sender: TObject);
Var
  List : TList;
  i : Integer;
  item : TAutoOutLookStoredItem;
begin
  LBStoredItems.Items.Clear;
  List := TList.Create;
  Bar.Store.GetItemsByCategory(CBStoredGroup.Items[CBStoredGroup.ItemIndex], List);
  for i := 0 to List.Count - 1 do begin
    Item := TAutoOutLookStoredItem(List[i]);
    LBStoredItems.AddItem(Item.Caption, Item.LargeImage)
  end;
  List.Free;
  LBStoredItems.ItemIndex := 0;
end;

procedure TFAutoOutLookBarEditor.BGAddClick(Sender: TObject);
Var
  Group : TAutoOutLookGroup;
begin
  Group := Bar.Groups.Add;
  Bar.EditGroup(Group);
end;

procedure TFAutoOutLookBarEditor.BIAddClick(Sender: TObject);
Var
  item :   TAutoOutLookItem;
begin
  if(Bar.ActiveGroup = Nil) then
    Bar.Groups.Add;
  Item := Bar.ActiveGroup.Items.Add;
  Item.StoredItem := Bar.Store.GetItemByCategory(
                  CBStoredGroup.Items[CBStoredGroup.ItemIndex],
                  LBStoredItems.ItemIndex);
  Bar.SelectedItem := Item;
  Item.MakeVisible;
end;

procedure TFAutoOutLookBarEditor.BGRenameClick(Sender: TObject);
begin
  if(Bar.Groups.Count > 0) then
    Bar.EditGroup(Bar.Groups[Bar.ActiveGroupIndex]);
end;

procedure TFAutoOutLookBarEditor.BCancelClick(Sender: TObject);
begin
  if(Bar.IsEditing) then begin
    ModalResult := mrNone;
    Bar.EndEdit(False);
  end;
end;

procedure TFAutoOutLookBarEditor.BOkClick(Sender: TObject);
begin
  if(Bar.IsEditing) then begin
    ModalResult := mrNone;
    Bar.EndEdit(True);
  end;
end;

procedure TFAutoOutLookBarEditor.CBGITypeClick(Sender: TObject);
begin
  if(Bar.Groups.Count > 0) then
    if(CBGIType.Checked) then
      Bar.Groups[Bar.ActiveGroupIndex].IconType := aotLargeIcon
    else Bar.Groups[Bar.ActiveGroupIndex].IconType := aotSmallIcon;
end;

procedure TFAutoOutLookBarEditor.BGDeleteClick(Sender: TObject);
begin
  if(Bar.Groups.Count > 0) then
    Bar.Groups[Bar.ActiveGroupIndex].Free;
end;

procedure TFAutoOutLookBarEditor.BIInsertClick(Sender: TObject);
Var
  item :   TAutoOutLookItem;
begin
  if(Bar.ActiveGroup = Nil) then
    Bar.Groups.Add;
  Item := Bar.ActiveGroup.Items.Add;
  Item.StoredItem := Bar.Store.GetItemByCategory(
                  CBStoredGroup.Items[CBStoredGroup.ItemIndex],
                  LBStoredItems.ItemIndex);
  if (Bar.SelectedItem <> Nil) then
    Item.Index := Bar.SelectedItem.Index
  else Item.Index := 0;
  Bar.SelectedItem := Item;
  Item.MakeVisible;
end;

⌨️ 快捷键说明

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