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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? rxresexp.pas

?? RX Library contains a large number of components, objects and routines for Borland Delphi with full
?? PAS
?? 第 1 頁 / 共 5 頁
字號(hào):
{*******************************************************}
{                                                       }
{         Delphi VCL Extensions (RX)                    }
{                                                       }
{         Copyright (c) 1997, 1998 Master-Bank          }
{                                                       }
{*******************************************************}

unit RxResExp;

interface

{$I RX.INC}

{$IFNDEF RX_D3}
  ERROR! This unit is intended for Delphi 3.0 or higher only!
  { Resource expert doesn't work properly in Delphi 2.0 and in
    C++Builder 1.0 and I don't know why. }
{$ENDIF}

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  IniFiles, ComCtrls, EditIntf, ExptIntf, ToolIntf, Menus, StdCtrls, Placemnt;

type
  TRxProjectResExpert = class;
  TResourceType = (rtpCustom, rtpCursor, rtpGroupCursor, rtpBitmap,
    rtpIcon, rtpGroupIcon, rtpRCData, rtpVersion, rtpAniCursor,
    rtpPredefined);

  TResSelection = record
    ResName: string;
    ResType: string;
  end;

  TAddInNotifier = class(TIAddInNotifier)
  private
    FProjectResources: TRxProjectResExpert;
  public
    constructor Create(AProjectResources: TRxProjectResExpert);
    procedure FileNotification(NotifyCode: TFileNotification;
      const FileName: string; var Cancel: Boolean); override;
{$IFDEF RX_D3}
    procedure EventNotification(NotifyCode: TEventNotification;
      var Cancel: Boolean); override;
{$ENDIF}
  end;

  TProjectNotifier = class(TIModuleNotifier)
  private
    FProjectResources: TRxProjectResExpert;
  public
    constructor Create(AProjectResources: TRxProjectResExpert);
    procedure Notify(NotifyCode: TNotifyCode); override;
    procedure ComponentRenamed(const AComponent: TComponent;
      const OldName, NewName: string); override;
  end;

  TResourceEntry = class(TObject)
  private
    FHandle: Pointer;
    FName: string;
    FType: string;
    FNameId: Word;
    FTypeId: Word;
    FSize: Integer;
    FEntryNode: TTreeNode;
    FResType: TResourceType;
    FChildren: TList;
    FParent: TResourceEntry;
    function GetBitmap(ResFile: TIResourceFile): TBitmap;
    function GetCursorOrIcon(ResFile: TIResourceFile; IsIcon: Boolean): HIcon;
  public
    constructor Create(AEntry: TIResourceEntry);
    destructor Destroy; override;
    function Rename(ResFile: TIResourceFile; const NewName: string): Boolean;
    function GetGraphic(ResFile: TIResourceFile): TGraphic;
    procedure GetData(ResFile: TIResourceFile; Stream: TStream);
    procedure GetIconData(ResFile: TIResourceFile; Stream: TStream);
    function GetName: string;
    function GetTypeName: string;
    function GetResourceName: PChar;
    function GetResourceType: PChar;
    function EnableEdit: Boolean;
    function EnableRenameDelete: Boolean;
  end;

  TRxProjectResExpert = class(TIExpert)
  private
    ProjectResourcesItem: TIMenuItemIntf;
    AddInNotifier: TAddInNotifier;
    ProjectNotifier: TProjectNotifier;
    ProjectModule: TIModuleInterface;
    FResourceList: TStringList;
    FSelection: TResSelection;
    FResFileName: string;
    FProjectName: string;
    FLockCount: Integer;
    procedure FindChildren(ResFile: TIResourceFile; Entry: TResourceEntry);
    procedure LoadProjectResInfo;
    procedure ClearProjectResInfo;
    procedure UpdateProjectResInfo;
    procedure OpenProject(const FileName: string);
    procedure CloseProject;
{$IFNDEF RX_D4}
    procedure LoadDesktop(const FileName: string);
    procedure SaveDesktop(const FileName: string);
{$ENDIF}
    procedure ProjectResourcesClick(Sender: TIMenuItemIntf);
  public
    constructor Create;
    destructor Destroy; override;
    function GetName: string; override;
    function GetAuthor: string; override;
    function GetComment: string; override;
    function GetPage: string; override;
    function GetGlyph: HICON; override;
    function GetMenuText: string; override;
    function GetState: TExpertState; override;
    function GetStyle: TExpertStyle; override;
    function GetIDString: string; override;
    procedure Execute; override;
    procedure BeginUpdate;
    procedure EndUpdate;
    procedure MarkModified;
    function GetResFile: TIResourceFile;
    function UniqueName(ResFile: TIResourceFile; ResType: PChar;
      var Index: Integer): string;
    procedure CheckRename(ResFile: TIResourceFile; ResType, NewName: PChar);
    function DeleteEntry(ResFile: TIResourceFile; Entry: TResourceEntry): Boolean;
    procedure CreateEntry(ResFile: TIResourceFile; ResType, ResName: PChar;
      ADataSize: Integer; AData: Pointer; SetToEntry: Boolean);
    procedure NewBinaryRes(ResFile: TIResourceFile; ResName, ResType: PChar;
      Stream: TMemoryStream);
    procedure EditBinaryRes(Entry: TResourceEntry; Stream: TMemoryStream);
    procedure NewBitmapRes(ResFile: TIResourceFile; ResName: PChar;
      Bitmap: TBitmap);
    procedure EditBitmapRes(Entry: TResourceEntry; Bitmap: TBitmap);
    procedure NewCursorIconRes(ResFile: TIResourceFile; ResName: PChar;
      IsIcon: Boolean; Stream: TStream);
    procedure EditCursorIconRes(Entry: TResourceEntry; IsIcon: Boolean;
      Stream: TStream);
  end;

  TRxResourceEditor = class(TForm)
    StatusBar: TStatusBar;
    ResTree: TTreeView;
    PopupMenu: TPopupMenu;
    NewItem: TMenuItem;
    EditItem: TMenuItem;
    RenameItem: TMenuItem;
    DeleteItem: TMenuItem;
    TreeImages: TImageList;
    N1: TMenuItem;
    NewBitmapItem: TMenuItem;
    NewIconItem: TMenuItem;
    NewCursorItem: TMenuItem;
    NewUserDataItem: TMenuItem;
    OpenDlg: TOpenDialog;
    SaveDlg: TSaveDialog;
    Placement: TFormStorage;
    PreviewItem: TMenuItem;
    SaveItem: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure ResTreeExpanded(Sender: TObject; Node: TTreeNode);
    procedure ResTreeCollapsed(Sender: TObject; Node: TTreeNode);
    procedure ResTreeEditing(Sender: TObject; Node: TTreeNode;
      var AllowEdit: Boolean);
    procedure ResTreeEdited(Sender: TObject; Node: TTreeNode;
      var S: string);
    procedure PopupMenuPopup(Sender: TObject);
    procedure RenameItemClick(Sender: TObject);
    procedure EditItemClick(Sender: TObject);
    procedure DeleteItemClick(Sender: TObject);
    procedure NewBitmapItemClick(Sender: TObject);
    procedure NewIconItemClick(Sender: TObject);
    procedure NewCursorItemClick(Sender: TObject);
    procedure NewUserDataItemClick(Sender: TObject);
    procedure ResTreeKeyPress(Sender: TObject; var Key: Char);
    procedure ResTreeDblClick(Sender: TObject);
    procedure ResTreeChange(Sender: TObject; Node: TTreeNode);
    procedure FormDestroy(Sender: TObject);
    procedure PreviewItemClick(Sender: TObject);
    procedure StatusBarDrawPanel(StatusBar: TStatusBar;
      Panel: TStatusPanel; const Rect: TRect);
    procedure SaveItemClick(Sender: TObject);
  private
    { Private declarations }
    FExpert: TRxProjectResExpert;
    function GetResourceTypeName: string;
    procedure CheckResourceType(Sender: TObject; var TypeName: string;
      var Apply: Boolean);
  public
    { Public declarations }
  end;

var
  RxResourceEditor: TRxResourceEditor = nil;

procedure RegisterResourceExpert;

implementation

uses Consts, VCLUtils, rxStrUtils, MaxMin, PictEdit
  {$IFDEF RX_D4}, ImgList {$ENDIF};

{$R *.DFM}
{$R *.R32}
{$D-}

{$I RXRESEXP.INC}

const
  sExpertID = 'RX.ProjectResourceExpert';
  sVisible = 'Visible';

{ Library registration }

procedure RegisterResourceExpert;
begin
  RegisterLibraryExpert(TRxProjectResExpert.Create);
end;

{ TInputBox }

type
  TApplyEvent = procedure(Sender: TObject; var Value: string;
    var Apply: Boolean) of object;

  TInputBox = class(TForm)
  private
    FPrompt: TLabel;
    FEdit: TComboBox;
    FValue: string;
    FOnApply: TApplyEvent;
    function GetPrompt: string;
    procedure SetPrompt(const Value: string);
    function GetStrings: TStrings;
    procedure SetStrings(Value: TStrings);
    procedure OkButtonClick(Sender: TObject);
  public
    function Execute: Boolean;
    constructor Create(AOwner: TComponent); override;
    property Caption;
    property Value: string read FValue write FValue;
    property Prompt: string read GetPrompt write SetPrompt;
    property Strings: TStrings read GetStrings write SetStrings;
    property OnApply: TApplyEvent read FOnApply write FOnApply;
  end;

constructor TInputBox.Create(AOwner: TComponent);
var
  DialogUnits: TPoint;
  ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
{$IFDEF CBUILDER}
  inherited CreateNew(AOwner, 0);
{$ELSE}
  inherited CreateNew(AOwner);
{$ENDIF}
  Canvas.Font := Self.Font;
  DialogUnits := GetAveCharSize(Canvas);
  BorderStyle := bsDialog;
  ClientWidth := MulDiv(180, DialogUnits.X, 4);
  ClientHeight := MulDiv(63, DialogUnits.Y, 8);
  Position := poScreenCenter;
  FPrompt := TLabel.Create(Self);
  with FPrompt do begin
    Parent := Self;
    AutoSize := True;
    Left := MulDiv(8, DialogUnits.X, 4);
    Top := MulDiv(8, DialogUnits.Y, 8);
  end;
  FEdit := TComboBox.Create(Self);
  with FEdit do begin
    Parent := Self;
    Left := FPrompt.Left;
    Top := MulDiv(19, DialogUnits.Y, 8);
    Width := MulDiv(164, DialogUnits.X, 4);
    MaxLength := 255;
    Style := csDropDown;
  end;
  FPrompt.FocusControl := FEdit;
  ButtonTop := MulDiv(41, DialogUnits.Y, 8);
  ButtonWidth := MulDiv(50, DialogUnits.X, 4);
  ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
  with TButton.Create(Self) do begin
    Parent := Self;
    Caption := SMsgDlgOK;
    ModalResult := mrNone;
    OnClick := OkButtonClick;
    Default := True;
    SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
      ButtonHeight);
  end;
  with TButton.Create(Self) do begin
    Parent := Self;
    Caption := SMsgDlgCancel;
    ModalResult := mrCancel;
    Cancel := True;
    SetBounds(MulDiv(92, DialogUnits.X, 4), ButtonTop, ButtonWidth,
      ButtonHeight);
  end;
end;

procedure TInputBox.OkButtonClick(Sender: TObject);
var
  Apply: Boolean;
  Value: string;
begin
  Apply := True;
  if Assigned(FOnApply) then begin
    Value := FEdit.Text;
    FOnApply(Self, Value, Apply);
    if FEdit.Text <> Value then FEdit.Text := Value;
  end;
  if Apply then ModalResult := mrOk;
end;

function TInputBox.Execute: Boolean;
begin
  with FEdit do begin
    Text := FValue;
    SelectAll;
  end;
  Result := ShowModal = mrOk;
  if Result then FValue := FEdit.Text;
end;

function TInputBox.GetPrompt: string;
begin
  Result := FPrompt.Caption;
end;

procedure TInputBox.SetPrompt(const Value: string);
begin
  FPrompt.Caption := Value;
end;

function TInputBox.GetStrings: TStrings;
begin
  Result := FEdit.Items;
end;

procedure TInputBox.SetStrings(Value: TStrings);
begin
  if Value = nil then FEdit.Items.Clear
  else FEdit.Items.Assign(Value);
end;

{ Utility routines }

{$IFNDEF RX_D3}
const
  RT_ANICURSOR = MakeIntResource(21);
  RT_ANIICON = MakeIntResource(22);
{$ENDIF}
const
  FIRST_CUSTOM_RESTYPE = 25;

function IsValidIdent(const Ident: string): Boolean;
const
  Numeric = ['0'..'9'];
  AlphaNumeric = Numeric + ['A'..'Z', 'a'..'z', '_', '.'];
var
  I: Integer;
begin
  Result := False;
  if (Length(Ident) = 0) then Exit;
  for I := 1 to Length(Ident) do
    if not (Ident[I] in AlphaNumeric) then Exit;
  Result := True;
end;

function IsValidResType(const Ident: string): Boolean;
var
  Val: Longint;
begin
  Result := IsValidIdent(Ident);
  if Result then begin
    Val := StrToIntDef(Ident, FIRST_CUSTOM_RESTYPE);
    Result := (Val >= FIRST_CUSTOM_RESTYPE) and (Val <= High(Word));
  end;
end;

procedure CreateForm(InstanceClass: TComponentClass; var Reference);
begin
  if TComponent(Reference) = nil then begin
    TComponent(Reference) := TComponent(InstanceClass.NewInstance);
    try
      TComponent(Reference).Create(Application);
    except
      TComponent(Reference).Free;
      TComponent(Reference) := nil;
      raise;
    end;
  end;
end;

function PadUp(Value: Longint): Longint;
begin
  Result := Value + (Value mod 4);
end;

function StrText(P: PChar): string;
begin
  if HiWord(Longint(P)) = 0 then
    Result := IntToStr(LoWord(Longint(P)))
  else Result := StrPas(P);
end;

function ResIdent(const Name: string): PChar;
var
  Id: Word;
  Code: Integer;
begin
  Val(Name, Id, Code);
  if Code = 0 then Result := MakeIntResource(Id)
  else Result := PChar(AnsiUpperCase(Name));
end;

function CheckResType(ResType: Integer): TResourceType;
begin
  case ResType of
    Integer(RT_CURSOR): Result := rtpCursor;
    Integer(RT_BITMAP): Result := rtpBitmap;
    Integer(RT_ICON): Result := rtpIcon;
    Integer(RT_RCDATA): Result := rtpRCData;
    Integer(RT_GROUP_CURSOR): Result := rtpGroupCursor;
    Integer(RT_GROUP_ICON): Result := rtpGroupIcon;
    Integer(RT_VERSION): Result := rtpVersion;
    Integer(RT_ANICURSOR): Result := rtpAniCursor;
    else Result := rtpCustom; { user-defined resource type }
  end;
  if (Result = rtpCustom) and (ResType > 0) and
    (ResType < FIRST_CUSTOM_RESTYPE) then
    Result := rtpPredefined;
end;

function ResourceTypeName(ResType: Integer): string;
begin
  case ResType of
    Integer(RT_CURSOR): Result := 'CURSOR';
    Integer(RT_BITMAP): Result := 'BITMAP';
    Integer(RT_ICON): Result := 'ICON';
    Integer(RT_MENU): Result := 'MENU';
    Integer(RT_DIALOG): Result := 'DIALOG';
    Integer(RT_STRING): Result := 'STRINGS';
    Integer(RT_FONTDIR): Result := 'FONTDIR';
    Integer(RT_FONT): Result := 'FONT';
    Integer(RT_ACCELERATOR): Result := 'ACCELERATOR';
    Integer(RT_RCDATA): Result := 'RCDATA';
    Integer(RT_MESSAGETABLE): Result := 'MESSAGE TABLE';
    Integer(RT_GROUP_CURSOR): Result := 'CURSOR';
    Integer(RT_GROUP_ICON): Result := 'ICON';
    Integer(RT_VERSION): Result := 'VERSIONINFO';
    Integer(RT_DLGINCLUDE): Result := 'DLGINCLUDE';
    Integer(RT_PLUGPLAY): Result := 'PLUG-AND-PLAY';
    Integer(RT_VXD): Result := 'VXD';
    Integer(RT_ANICURSOR): Result := 'ANICURSOR';
    Integer(RT_ANIICON): Result := 'ANIICON';

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久99久久| 亚洲一区二区三区在线看| 五月开心婷婷久久| 日韩理论片中文av| 欧美精彩视频一区二区三区| 欧美精品一区二区久久久 | 久久日韩精品一区二区五区| 日韩欧美另类在线| 欧美电影免费提供在线观看| 日韩欧美卡一卡二| 欧美一级一级性生活免费录像| 91精品婷婷国产综合久久性色| 在线播放/欧美激情| 欧美福利视频一区| 日韩一区二区三区三四区视频在线观看| 欧美一区二区三区影视| 欧美一个色资源| 久久久99免费| 综合久久给合久久狠狠狠97色| 亚洲精品久久久久久国产精华液| 亚洲综合自拍偷拍| 蜜臀久久久久久久| 国产乱子伦视频一区二区三区 | 国产精品久久久久一区二区三区共| 国产精品色婷婷久久58| 亚洲日本va午夜在线影院| 亚洲永久精品国产| 免费高清在线视频一区·| 国产尤物一区二区| 99精品视频在线播放观看| 在线免费观看不卡av| 欧美肥妇毛茸茸| 精品国产髙清在线看国产毛片| 国产欧美日韩在线观看| 亚洲久草在线视频| 免费高清不卡av| 成人不卡免费av| 欧美日韩在线播放一区| 久久奇米777| 亚洲精品成人悠悠色影视| 麻豆精品视频在线观看| 成人高清视频在线观看| 欧美日韩五月天| 久久精品视频一区二区| 一区二区三区中文字幕| 韩国av一区二区三区四区| 色综合中文字幕国产 | 欧美一区永久视频免费观看| 久久色中文字幕| 亚洲精品视频在线观看免费| 免费人成黄页网站在线一区二区| 国产91精品露脸国语对白| 欧美日韩午夜在线视频| 国产精品丝袜在线| 青青国产91久久久久久| gogo大胆日本视频一区| 日韩一区二区三区免费观看| 中文字幕中文字幕在线一区| 日本不卡高清视频| 色综合一个色综合亚洲| 久久影音资源网| 视频一区欧美日韩| 91一区二区在线| 久久综合久久久久88| 亚洲高清视频中文字幕| 成人动漫中文字幕| 欧美精品一区二区三区很污很色的| 一区二区三区成人| 成人综合在线视频| 精品91自产拍在线观看一区| 亚洲成人高清在线| 91天堂素人约啪| 国产无一区二区| 美女看a上一区| 欧美一a一片一级一片| 中文欧美字幕免费| 国产在线视频精品一区| 91精品国产综合久久精品性色| 亚洲欧洲av色图| 国产91精品精华液一区二区三区| 欧美一区二区久久| 五月婷婷久久丁香| 91丝袜美女网| 国产精品久久久久婷婷| 国产麻豆日韩欧美久久| 欧美xxxx老人做受| 日本视频免费一区| 777精品伊人久久久久大香线蕉| 亚洲视频香蕉人妖| 99国产欧美另类久久久精品| 欧美激情综合五月色丁香| 国产精品一区久久久久| 精品日韩在线一区| 久久av资源网| 精品国精品国产| 久久草av在线| 久久久久久久久久电影| 麻豆精品一区二区三区| 日韩免费电影网站| 久久91精品久久久久久秒播| 日韩一区二区麻豆国产| 美女视频一区在线观看| 日韩欧美一区二区免费| 精品一区中文字幕| 精品国产a毛片| 国产一区在线看| 国产日本欧洲亚洲| 成人福利视频在线看| 国产精品不卡一区| 色婷婷综合久久久中文一区二区| 亚洲欧美视频在线观看视频| 色视频成人在线观看免| 亚洲一区二区综合| 欧美日韩国产经典色站一区二区三区 | 色综合久久综合网97色综合| 亚洲天堂久久久久久久| 在线视频国内一区二区| 亚洲一区在线播放| 91精品国产黑色紧身裤美女| 麻豆专区一区二区三区四区五区| 亚洲精品一区二区三区香蕉| 国产精品系列在线播放| 中文字幕一区二区5566日韩| 在线观看亚洲一区| 日日夜夜免费精品视频| 欧美精品一区二区三区久久久| 国产成人在线视频网址| 日韩毛片在线免费观看| 欧美性感一区二区三区| 免费观看在线色综合| 国产无一区二区| 91国内精品野花午夜精品| 日韩和的一区二区| www国产精品av| 91小视频在线| 日韩 欧美一区二区三区| 久久久久9999亚洲精品| 色婷婷久久综合| 久久精品国产99久久6| 国产精品久久久久毛片软件| 欧美日韩精品二区第二页| 麻豆精品一区二区三区| 成人免费一区二区三区视频| 欧美丝袜第三区| 国产乱码精品一区二区三区忘忧草 | 视频一区在线播放| 国产亚洲成年网址在线观看| 色婷婷综合久久久久中文一区二区| 日韩vs国产vs欧美| 国产精品全国免费观看高清| 精品视频免费看| 国产成人激情av| 亚洲综合一二区| 久久久一区二区三区| 欧美天堂一区二区三区| 国产一区二区免费在线| 亚洲午夜av在线| 国产三级精品视频| 欧美日韩国产电影| 成人精品一区二区三区中文字幕 | 99久久综合色| 久久99精品久久久| 亚洲最新视频在线观看| 久久久久久电影| 9191久久久久久久久久久| 国产成人精品三级麻豆| 婷婷综合久久一区二区三区| 国产精品天美传媒| 日韩限制级电影在线观看| 91麻豆高清视频| 国产乱对白刺激视频不卡| 午夜精品久久久久久久 | 激情综合网av| 亚洲成人免费电影| 亚洲色图视频网| 久久女同性恋中文字幕| 欧美一区二区三区白人| 欧洲亚洲国产日韩| www.日韩精品| 国产麻豆精品视频| 日本美女一区二区三区| 亚洲最新视频在线观看| 综合激情成人伊人| 欧美精彩视频一区二区三区| 精品国产乱码久久久久久闺蜜| 欧美精品色一区二区三区| 91尤物视频在线观看| 粉嫩av一区二区三区粉嫩| 极品尤物av久久免费看| 日韩福利电影在线观看| 亚洲国产另类av| 亚洲一区二区三区四区五区黄| 亚洲丝袜自拍清纯另类| 亚洲国产精品黑人久久久| 久久久影院官网| 精品国产乱子伦一区| 精品处破学生在线二十三| 日韩欧美精品三级| 欧美成人国产一区二区| 日韩欧美一级在线播放|