亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? icoledit.pas

?? RX Library contains a large number of components, objects and routines for Borland Delphi with full
?? PAS
字號:
{*******************************************************}
{                                                       }
{       Delphi VCL Extensions (RX)                      }
{                                                       }
{       Copyright (c) 1997 Master-Bank                  }
{                                                       }
{*******************************************************}

unit IcoLEdit;

{$I RX.INC}

interface

uses {$IFDEF WIN32} Windows, {$ELSE} WinTypes, WinProcs, {$ENDIF}
  Messages, Classes, Graphics, Forms, Controls, Dialogs, Buttons, IcoList,
  RTLConsts, DesignIntf, DesignEditors, VCLEditors, StdCtrls, ExtCtrls, Placemnt, {$IFDEF RX_D3} ExtDlgs, {$ELSE}
  ImagPrvw, {$ENDIF} Menus, SpeedBar;

type

{ TIconListDialog }

  TIconListDialog = class(TForm)
    OK: TButton;
    Cancel: TButton;
    Holder: TPanel;
    Slot0: TPanel;
    Slot1: TPanel;
    Slot2: TPanel;
    Slot3: TPanel;
    Slot4: TPanel;
    Image0: TImage;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Bevel1: TBevel;
    Label1: TLabel;
    CntLabel: TLabel;
    Label3: TLabel;
    IdxLabel: TLabel;
    SpeedBar: TSpeedBar;
    Load: TSpeedItem;
    LoadAni: TSpeedItem;
    Delete: TSpeedItem;
    Clear: TSpeedItem;
    Copy: TSpeedItem;
    Paste: TSpeedItem;
    ScrollBar: TScrollBar;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure LoadClick(Sender: TObject);
    procedure ClearClick(Sender: TObject);
    procedure CopyClick(Sender: TObject);
    procedure PasteClick(Sender: TObject);
    procedure UpdateClipboard(Sender: TObject);
    procedure ScrollBarChange(Sender: TObject);
    procedure DeleteClick(Sender: TObject);
    procedure ImageMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure LoadAniClick(Sender: TObject);
  private
    Icons: TIconList;
    FTopIndex, FSelected: Integer;
{$IFDEF RX_D3}
    FileDialog: TOpenPictureDialog;
{$ELSE}
    FileDialog: TOpenDialog;
{$ENDIF}
    procedure SetSelectedIndex(Index: Integer; Force: Boolean);
    procedure ListChanged(Sender: TObject);
    function GetSelectedIcon: TIcon;
    procedure CheckButtons;
    procedure ValidateImage;
    procedure CheckEnablePaste;
    procedure LoadAniFile;
    procedure WMActivate(var Msg: TWMActivate); message WM_ACTIVATE;
  public
    Modified: Boolean;
  end;

{ TIconListProperty }

  TIconListProperty = class(TClassProperty)
  public
    procedure Edit; override;
    function GetAttributes: TPropertyAttributes; override;
    function GetValue: string; override;
    procedure SetValue(const Value: string); override;
  end;

procedure EditIconList(IconList: TIconList);

implementation

uses TypInfo, SysUtils, Clipbrd, Consts, ClipIcon, VCLUtils, AppUtils,
  RxConst, RxLConst, MaxMin, AniFile;

{$B-}
{$IFDEF WIN32}
 {$D-}
{$ENDIF}

{$R *.DFM}

const
  sSlot = 'Slot%d';
  sImage = 'Image%d';

procedure EditIconList(IconList: TIconList);
begin
  with TIconListDialog.Create(Application) do
  try
    Icons.Assign(IconList);
    Modified := False;
    if (ShowModal = mrOk) and Modified then
      IconList.Assign(Icons);
  finally
    Free;
  end;
end;

{ TIconListProperty }

procedure TIconListProperty.Edit;
var
  Editor: TIconListDialog;
  Comp: TPersistent;
  CurDir: string;
  Res: Integer;
begin
  Editor := TIconListDialog.Create(nil);
  try
    Comp := GetComponent(0);
    if Comp is TComponent then
      Editor.Caption := TComponent(Comp).Name + '.' + GetName;
    Editor.Icons.Assign(TIconList(Pointer(GetOrdValue)));
    Editor.Modified := False;
    CurDir := GetCurrentDir;
    try
      Res := Editor.ShowModal;
    finally
      SetCurrentDir(CurDir);
    end;
    if (Res = mrOk) and Editor.Modified then begin
      TIconList(Pointer(GetOrdValue)).Assign(Editor.Icons);
      Designer.Modified;
    end;
  finally
    Editor.Free;
  end;
end;

function TIconListProperty.GetAttributes: TPropertyAttributes;
begin
  Result := [paDialog];
end;

function TIconListProperty.GetValue: string;
var
  List: TIconList;
begin
  List := TIconList(Pointer(GetOrdValue));
  if (List = nil) or (List.Count = 0) then
    Result := ResStr(srNone)
  else Result := '(' + List.ClassName + ')';
end;

procedure TIconListProperty.SetValue(const Value: string);
begin
  if Value = '' then SetOrdValue(0);
end;

{ TIconListDialog }

procedure TIconListDialog.LoadAniFile;
var
  Dialog: TOpenDialog;
  AniCursor: TAnimatedCursorImage;
begin
  Dialog := TOpenDialog.Create(Application);
  try
    with Dialog do begin
      Options := [ofHideReadOnly, ofFileMustExist];
      DefaultExt := 'ani';
      Filter := LoadStr(srAniCurFilter);
      if Execute then begin
        AniCursor := TAnimatedCursorImage.Create;
        try
          AniCursor.LoadFromFile(FileName);
          Icons.Assign(AniCursor);
        finally
          AniCursor.Free;
        end;
      end;
    end;
  finally
    Dialog.Free;
  end;
end;

function TIconListDialog.GetSelectedIcon: TIcon;
begin
  Result := nil;
  if (Icons.Count > 0) and (FSelected < Icons.Count) then
    Result := Icons[FSelected];
end;

procedure TIconListDialog.CheckEnablePaste;
begin
  Paste.Enabled := Clipboard.HasFormat(CF_ICON);
end;

procedure TIconListDialog.SetSelectedIndex(Index: Integer; Force: Boolean);
begin
  if Force or (Index <> FSelected) then begin
    Index := Min(Icons.Count, Max(Index, 0));
    while (FTopIndex < Index - 4) do Inc(FTopIndex);
    if Index < FTopIndex then FTopIndex := Index;
    FSelected := Index;
    if FSelected <> ScrollBar.Position then ScrollBar.Position := FSelected;
    ValidateImage;
  end;
end;

procedure TIconListDialog.ListChanged(Sender: TObject);
begin
  ScrollBar.Max := Icons.Count;
  SetSelectedIndex(FSelected, True);
  Modified := True;
end;

procedure TIconListDialog.CheckButtons;
var
  Enable: Boolean;
begin
  Enable := (Icons.Count > 0) and (FSelected < Icons.Count) and
    (FSelected >= 0);
  Clear.Enabled := Icons.Count > 0;
  Delete.Enabled := Enable;
  Copy.Enabled := Enable;
  CheckEnablePaste;
end;

procedure TIconListDialog.ValidateImage;
var
  Enable: Boolean;
  I: Integer;
  Image, Slot: TComponent;
begin
  for I := 0 to 4 do begin
    Image := FindComponent(Format(sImage, [I]));
    Slot := FindComponent(Format(sSlot, [I]));
    if Image <> nil then
      with TImage(Image).Picture do begin
        if FTopIndex + I < Icons.Count then Assign(Icons[FTopIndex + I])
        else Assign(nil);
{$IFDEF RX_D3}
        TImage(Image).Transparent := True;
{$ENDIF}
      end;
    if Slot <> nil then TPanel(Slot).ParentColor := True;
  end;
  Slot := FindComponent(Format(sSlot, [FSelected - FTopIndex]));
  if Slot <> nil then TPanel(Slot).Color := clActiveCaption;
  CntLabel.Caption := IntToStr(Icons.Count);
  Enable := (Icons.Count > 0) and (FSelected <= Icons.Count) and
    (FSelected >= 0);
  if Enable then IdxLabel.Caption := IntToStr(FSelected)
  else IdxLabel.Caption := '';
  CheckButtons;
end;

procedure TIconListDialog.FormCreate(Sender: TObject);
{$IFDEF RX_D3}
var
  I: Integer;
  Image: TComponent;
{$ENDIF}
begin
{$IFDEF RX_D3}
  FileDialog := TOpenPictureDialog.Create(Self);
  for I := 0 to 4 do begin
    Image := FindComponent(Format(sImage, [I]));
    if Image <> nil then TImage(Image).Transparent := True;
  end;
{$ELSE}
  FileDialog := TOpenDialog.Create(Self);
{$ENDIF}
  with FileDialog do begin
    Title := LoadStr(srLoadIcon);
    Options := [ofHideReadOnly, ofFileMustExist];
    DefaultExt := GraphicExtension(TIcon);
    Filter := GraphicFilter(TIcon);
  end;
  Icons := TIconList.Create;
  Icons.OnChange := ListChanged;
  FTopIndex := 0;
  FSelected := 0;
  Clear.Enabled := False;
  Copy.Enabled := False;
  Delete.Enabled := False;
  CheckEnablePaste;
end;

procedure TIconListDialog.FormDestroy(Sender: TObject);
begin
  Icons.OnChange := nil;
  Icons.Free;
end;

procedure TIconListDialog.UpdateClipboard(Sender: TObject);
begin
  CheckEnablePaste;
end;

procedure TIconListDialog.LoadClick(Sender: TObject);
var
  Ico: TIcon;
  I: Integer;
{$IFNDEF RX_D3}
  FileName: string;
{$ENDIF}
begin
{$IFNDEF RX_D3}
  FileName := '';
  if SelectImage(FileName, GraphicExtension(TIcon), GraphicFilter(TIcon)) then
  begin
    FileDialog.Filename := FileName;
{$ELSE}
  if FileDialog.Execute then begin
{$ENDIF}
    Ico := TIcon.Create;
    try
      Ico.LoadFromFile(FileDialog.Filename);
      I := Min(FSelected + 1, Icons.Count);
      Icons.Insert(I, Ico);
      SetSelectedIndex(I, True);
    finally
      Ico.Free;
    end;
  end;
end;

procedure TIconListDialog.CopyClick(Sender: TObject);
begin
  CopyIconToClipboard(GetSelectedIcon, clBtnFace);
  CheckEnablePaste;
end;

procedure TIconListDialog.PasteClick(Sender: TObject);
var
  Ico: TIcon;
begin
  if Clipboard.HasFormat(CF_ICON) then begin
    Ico := CreateIconFromClipboard;
    try
      Icons[FSelected] := Ico;
    finally
      Ico.Free;
    end;
  end;
end;

procedure TIconListDialog.WMActivate(var Msg: TWMActivate);
begin
  if Msg.Active <> WA_INACTIVE then CheckEnablePaste;
  inherited;
end;

procedure TIconListDialog.ClearClick(Sender: TObject);
begin
  Icons.Clear;
end;

procedure TIconListDialog.ScrollBarChange(Sender: TObject);
begin
  SetSelectedIndex(ScrollBar.Position, False);
end;

procedure TIconListDialog.DeleteClick(Sender: TObject);
begin
  Icons.Delete(FSelected);
end;

procedure TIconListDialog.ImageMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  Index: Integer;
begin
  if Button = mbLeft then begin
    for Index := 0 to 4 do begin
      if TComponent(Sender).Name = Format(sImage, [Index]) then Break;
      if TComponent(Sender).Name = Format(sSlot, [Index]) then Break;
    end;
    SetSelectedIndex(FTopIndex + Index, True);
  end;
end;

procedure TIconListDialog.LoadAniClick(Sender: TObject);
begin
  LoadAniFile;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情综合一区二区三区| 中文字幕在线观看不卡视频| 色婷婷久久久久swag精品| 国产在线精品一区二区| 麻豆一区二区在线| 热久久免费视频| 日韩高清欧美激情| 婷婷中文字幕综合| 亚洲成人在线网站| 日本亚洲欧美天堂免费| 美女视频一区在线观看| 久久99九九99精品| 国产精品自在在线| 国产白丝网站精品污在线入口| 国产成人欧美日韩在线电影| 成人av片在线观看| 色综合久久66| 91麻豆精品91久久久久久清纯| 欧美老女人在线| 精品成人在线观看| 国产精品你懂的在线欣赏| 亚洲视频你懂的| 午夜精品久久久久久不卡8050| 三级欧美韩日大片在线看| 精品一区二区在线播放| av影院午夜一区| 欧美午夜精品电影| 欧美变态tickle挠乳网站| 久久久国产午夜精品| 综合网在线视频| 亚洲成人综合视频| 成人在线综合网| 欧洲精品中文字幕| 久久久无码精品亚洲日韩按摩| 亚洲日本一区二区三区| 日本美女一区二区三区视频| 高清不卡一二三区| 欧美日韩电影一区| 国产精品系列在线| 五月婷婷激情综合网| 高潮精品一区videoshd| 欧美日韩免费观看一区三区| 久久婷婷国产综合国色天香| 亚洲一区在线观看免费观看电影高清 | 在线精品视频小说1| 欧美成人女星排名| 一区二区三区加勒比av| 国产一区二区三区蝌蚪| 欧美日韩成人综合天天影院| 国产女主播一区| 日一区二区三区| 日本道免费精品一区二区三区| 26uuu色噜噜精品一区| 亚洲一区视频在线观看视频| 欧美精三区欧美精三区| 欧洲人成人精品| 91精品在线观看入口| 一区二区三区在线观看动漫| 国产精品女同一区二区三区| 欧美日韩电影一区| 久久蜜臀精品av| 亚洲天堂a在线| 欧美色视频一区| 亚洲第一主播视频| 欧美成人性战久久| 成人一区二区三区视频| 一区二区三区四区国产精品| 欧美一区二区三区四区视频| 国产精品一二三区在线| 一区二区三区在线视频观看58| 欧美日韩欧美一区二区| 懂色av一区二区三区免费观看| 一区二区三区在线视频免费观看| 欧美tk—视频vk| 在线视频你懂得一区| 麻豆精品视频在线观看视频| 自拍偷拍国产精品| 精品国产一区a| 欧美日韩精品专区| 国产成人精品影院| 日韩精品亚洲专区| 18欧美亚洲精品| 精品欧美黑人一区二区三区| 91小视频在线| 国产乱妇无码大片在线观看| 亚洲与欧洲av电影| 亚洲欧洲精品天堂一级| 精品国产人成亚洲区| 欧美在线|欧美| av在线播放成人| 国产精品亚洲一区二区三区妖精| 亚洲大片一区二区三区| 国产精品初高中害羞小美女文| 日韩欧美一二三区| 欧美日韩一级二级三级| 91啦中文在线观看| 国产91露脸合集magnet| 日本中文一区二区三区| 亚洲精品一二三四区| 亚洲国产经典视频| 久久嫩草精品久久久精品一| 日韩一区二区在线观看视频播放| 日本韩国欧美国产| 成人av网址在线观看| 国产成人在线色| 国产精品影视天天线| 免费国产亚洲视频| 日韩av电影免费观看高清完整版在线观看 | 欧美性受极品xxxx喷水| 成人毛片视频在线观看| 国产成人一区在线| 国产69精品久久99不卡| 国产精品1区二区.| 国产成人午夜99999| 国产精品综合二区| 国产成人精品免费网站| 国产精品88av| 成人免费高清视频| 成人网男人的天堂| 91视视频在线观看入口直接观看www | 成人国产一区二区三区精品| 国产在线国偷精品产拍免费yy| 免费成人结看片| 看电视剧不卡顿的网站| 久久99精品国产麻豆不卡| 久久国产精品72免费观看| 韩国v欧美v日本v亚洲v| 国产成人免费网站| 99国产精品久| 色综合天天综合网天天狠天天| 91麻豆免费在线观看| 欧美四级电影网| 7777精品久久久大香线蕉| 日韩精品一区二区三区视频播放 | 欧美va亚洲va| 欧美国产精品中文字幕| 亚洲日本在线观看| 日本美女一区二区三区| 国产成+人+日韩+欧美+亚洲| 色av综合在线| 日韩一区二区三区四区五区六区 | 国产盗摄精品一区二区三区在线| av中文一区二区三区| 欧美精品在线一区二区三区| 26uuu国产电影一区二区| 一区二区中文视频| 午夜精品久久久久久久久| 韩国成人在线视频| 色综合视频在线观看| 91精品国产综合久久香蕉麻豆| 国产日韩欧美激情| 亚洲国产成人av网| 国产麻豆视频一区二区| 91黄色免费网站| 欧美精品一区二区三区视频| 国产精品区一区二区三区| 亚洲动漫第一页| 国产一区三区三区| 欧美性猛片aaaaaaa做受| 久久久久高清精品| 亚洲另类春色国产| 国内精品久久久久影院一蜜桃| 91麻豆swag| 国产亲近乱来精品视频| 亚洲18女电影在线观看| 99久久久精品免费观看国产蜜| 日韩美女主播在线视频一区二区三区| 亚洲国产精品传媒在线观看| 午夜久久电影网| 不卡视频免费播放| 精品成人一区二区三区四区| 亚洲成av人片一区二区| 99久久99久久免费精品蜜臀| 久久尤物电影视频在线观看| 亚洲国产毛片aaaaa无费看 | 一本大道久久a久久精二百| 精品国产凹凸成av人网站| 午夜精品久久久久久不卡8050| 99riav久久精品riav| 2020国产精品久久精品美国| 五月天亚洲精品| 色88888久久久久久影院野外| 久久久久久久网| 美女脱光内衣内裤视频久久网站| 欧美系列一区二区| 亚洲人成人一区二区在线观看| 国产制服丝袜一区| 日韩精品一区二区三区视频| 日韩黄色片在线观看| 欧美三级电影在线看| 亚洲最快最全在线视频| 色综合天天做天天爱| 亚洲天堂网中文字| proumb性欧美在线观看| 久久久久国色av免费看影院| 国产精品白丝jk黑袜喷水| 精品国产一区二区精华| 国产一区二区三区黄视频 | 久久99热狠狠色一区二区| 91麻豆精品国产自产在线观看一区|