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

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

?? rxresexp.pas

?? RX Library contains a large number of components, objects and routines for Borland Delphi with full
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
begin
  if FNameId > 0 then Result := MakeIntResource(FNameId)
  else Result := PChar(FName);
end;

function TResourceEntry.GetResourceType: PChar;
begin
  if FTypeId > 0 then Result := MakeIntResource(FTypeId)
  else Result := PChar(FType);
end;

function TResourceEntry.GetName: string;
begin
  Result := FName;
end;

function TResourceEntry.GetTypeName: string;
begin
  Result := FType;
end;

function TResourceEntry.EnableEdit: Boolean;
begin
  Result := FResType in [rtpGroupCursor, rtpBitmap, rtpGroupIcon, rtpRCData,
    rtpAniCursor, rtpCustom];
end;

function TResourceEntry.EnableRenameDelete: Boolean;
begin
  Result := FResType in [rtpCustom, rtpGroupCursor, rtpBitmap, rtpGroupIcon,
    rtpRCData, rtpAniCursor, rtpPredefined];
  if (FResType = rtpGroupIcon) then
    Result := CompareText(GetName, 'MAINICON') <> 0;
end;

function TResourceEntry.GetCursorOrIcon(ResFile: TIResourceFile;
  IsIcon: Boolean): HIcon;
var
  Entry, ChildEntry: TIResourceEntry;
  I: Integer;
begin
  Result := 0;
  if not (FResType in [rtpGroupIcon, rtpGroupCursor]) then Exit;
  Entry := ResFile.FindEntry(GetResourceType, GetResourceName);
  try
    I := LookupIconIdFromDirectory(Entry.GetData, IsIcon);
    if I > 0 then begin
      if IsIcon then
        ChildEntry := ResFile.FindEntry(RT_ICON, PChar(I))
      else
        ChildEntry := ResFile.FindEntry(RT_CURSOR, PChar(I));
      if ChildEntry <> nil then
      try
        with ChildEntry do
          Result := CreateIconFromResourceEx(GetData, GetDataSize,
            IsIcon, $30000, 0, 0, $80);
      finally
        ChildEntry.Free;
      end;
    end;
  finally
    Entry.Free;
  end;
end;

procedure TResourceEntry.GetIconData(ResFile: TIResourceFile; Stream: TStream);
var
  Data: TIconData;
  Entry: TIResourceEntry;
  I: Integer;
  P: PChar;
begin
  if not (FResType in [rtpGroupIcon, rtpGroupCursor]) then Exit;
  Data := TIconData.Create;
  try
    Entry := ResFile.FindEntry(GetResourceType, GetResourceName);
    try
      Data.LoadResourceGroup(Entry.GetData, Entry.GetDataSize);
    finally
      Entry.Free;
    end;
    for I := 0 to Data.FHeader.Count - 1 do begin
      P := MakeIntResource(Data.FNames^[I]);
      if FResType = rtpGroupIcon then
        Entry := ResFile.FindEntry(RT_ICON, P)
      else {rtpGroupCursor}
        Entry := ResFile.FindEntry(RT_CURSOR, P);
      try
        Data.LoadResourceItem(I, Entry.GetData, Entry.GetDataSize);
      finally
        Entry.Free;
      end;
    end;
    Data.SaveToStream(Stream);
  finally
    Data.Free;
  end;
end;

function TResourceEntry.GetBitmap(ResFile: TIResourceFile): TBitmap;

  function GetDInColors(BitCount: Word): Integer;
  begin
    case BitCount of
      1, 4, 8: Result := 1 shl BitCount;
      else Result := 0;
    end;
  end;

var
  Header: PBitmapFileHeader;
  BI: PBitmapInfoHeader;
  BC: PBitmapCoreHeader;
  Entry: TIResourceEntry;
  Mem: TMemoryStream;
  ClrUsed: Integer;
begin
  Result := nil;
  if FResType <> rtpBitmap then Exit;
  Mem := TMemoryStream.Create;
  try
    Entry := ResFile.FindEntry(GetResourceType, GetResourceName);
    try
      Mem.SetSize(Entry.GetDataSize + SizeOf(TBitmapFileHeader));
      Move(Entry.GetData^, Pointer(PChar(Mem.Memory) +
        SizeOf(TBitmapFileHeader))^, Mem.Size);
      Header := PBitmapFileHeader(Mem.Memory);
      BI := PBitmapInfoHeader(PChar(Mem.Memory) + SizeOf(TBitmapFileHeader));
      { fill header }
      with Header^ do begin
        if BI^.biSize = SizeOf(TBitmapInfoHeader) then begin
          ClrUsed := BI^.biClrUsed;
          if ClrUsed = 0 then ClrUsed := GetDInColors(BI^.biBitCount);
          bfOffBits :=  ClrUsed * SizeOf(TRGBQuad) +
            SizeOf(TBitmapInfoHeader) + SizeOf(TBitmapFileHeader);
        end
        else begin
          BC := PBitmapCoreHeader(PChar(Mem.Memory) +
            SizeOf(TBitmapFileHeader));
          ClrUsed := GetDInColors(BC^.bcBitCount);
          bfOffBits :=  ClrUsed * SizeOf(TRGBTriple) +
            SizeOf(TBitmapCoreHeader) + SizeOf(TBitmapFileHeader);
        end;
        bfSize := bfOffBits + BI^.biSizeImage;
        bfType := $4D42; { BM }
      end;
    finally
      Entry.Free;
    end;
    Result := TBitmap.Create;
    try
      Result.LoadFromStream(Mem);
    except
      Result.Free;
      raise;
    end;
  finally
    Mem.Free;
  end;
end;

procedure TResourceEntry.GetData(ResFile: TIResourceFile; Stream: TStream);
var
  Entry: TIResourceEntry;
begin
  Entry := ResFile.FindEntry(GetResourceType, GetResourceName);
  try
    Stream.WriteBuffer(Entry.GetData^, Entry.GetDataSize);
  finally
    Entry.Free;
  end;
end;

function TResourceEntry.GetGraphic(ResFile: TIResourceFile): TGraphic;
begin
  Result := nil;
  case FResType of
    rtpBitmap: Result := GetBitmap(ResFile);
    rtpGroupIcon:
      begin
        Result := TIcon.Create;
        try
          TIcon(Result).Handle := GetCursorOrIcon(ResFile, True);
        except
          Result.Free;
          raise;
        end;
      end;
  end;
end;

function TResourceEntry.Rename(ResFile: TIResourceFile;
  const NewName: string): Boolean;
var
  P: PChar;
  AName: string;
  Id: Word;
  Code: Integer;
  Entry: TIResourceEntry;
begin
  Result := False;
  Entry := ResFile.FindEntry(GetResourceType, GetResourceName);
  try
    Val(NewName, Id, Code);
    if Code = 0 then P := MakeIntResource(Id)
    else begin
      if not IsValidIdent(NewName) then
        raise Exception.Create(Format(sInvalidName, [NewName]));
      AName := AnsiUpperCase(NewName);
      P := PChar(AName);
    end;
    Result := Entry.Change(Entry.GetResourceType, P);
    if Result then begin
      P := Entry.GetResourceName;
      if HiWord(Longint(P)) = 0 then FNameId := LoWord(Longint(P));
      FName := StrText(P);
    end;
  finally
    Entry.Free;
  end;
end;

{ TRxProjectResExpert }

constructor TRxProjectResExpert.Create;
var
  MainMenu: TIMainMenuIntf;
  ProjSrcMenu: TIMenuItemIntf;
  ViewMenu: TIMenuItemIntf;
  MenuItems: TIMenuItemIntf;
begin
  inherited Create;
  FResourceList := TStringList.Create;
  if Assigned(ToolServices) then begin
    MainMenu := ToolServices.GetMainMenu;
    if MainMenu <> nil then
    try
      MenuItems := MainMenu.GetMenuItems;
      if MenuItems <> nil then
      try
        ProjSrcMenu := MainMenu.FindMenuItem('ViewPrjSourceItem');
        if ProjSrcMenu <> nil then
        try
          ViewMenu := ProjSrcMenu.GetParent;
          if ViewMenu <> nil then
          try
            ProjectResourcesItem := ViewMenu.InsertItem(
              ProjSrcMenu.GetIndex, GetMenuText, 'ViewPrjResourceItem',
              '', 0, 0, 0, [mfVisible], ProjectResourcesClick);
          finally
            ViewMenu.Free;
          end;
        finally
          ProjSrcMenu.Free;
        end;
      finally
        MenuItems.Free;
      end;
    finally
      MainMenu.Free;
    end;
    AddInNotifier := TAddInNotifier.Create(Self);
{$IFDEF RX_D4}
    ToolServices.AddNotifierEx(AddInNotifier);
{$ELSE}
    ToolServices.AddNotifier(AddInNotifier);
{$ENDIF}
  end;
end;

destructor TRxProjectResExpert.Destroy;
begin
  if RxResourceEditor <> nil then RxResourceEditor.Free;
  ToolServices.RemoveNotifier(AddInNotifier);
  CloseProject;
  ProjectResourcesItem.Free;
  AddInNotifier.Free;
  FResourceList.Free;
  inherited Destroy;
end;

function TRxProjectResExpert.GetName: string;
begin
  Result := sExpertName;
end;

function TRxProjectResExpert.GetAuthor: string;
begin
  Result := '';
end;

function TRxProjectResExpert.GetComment: string;
begin
  Result := '';
end;

function TRxProjectResExpert.GetPage: string;
begin
  Result := '';
end;

function TRxProjectResExpert.GetGlyph: HICON;
begin
  Result := 0;
end;

function TRxProjectResExpert.GetMenuText: string;
begin
  Result := sMenuItemCaption;
end;

function TRxProjectResExpert.GetState: TExpertState;
begin
  Result := [esEnabled];
end;

function TRxProjectResExpert.GetStyle: TExpertStyle;
begin
  Result := esAddIn;
end;

function TRxProjectResExpert.GetIDString: string;
begin
  Result := sExpertID;
end;

procedure TRxProjectResExpert.Execute;
begin
end;

procedure TRxProjectResExpert.BeginUpdate;
begin
  Inc(FLockCount);
end;

procedure TRxProjectResExpert.EndUpdate;
begin
  Dec(FLockCount);
  if FLockCount = 0 then UpdateProjectResInfo;
end;

function TRxProjectResExpert.GetResFile: TIResourceFile;
begin
  if ProjectModule.IsProjectModule then
    Result := ProjectModule.GetProjectResource
  else Result := nil;
end;

procedure TRxProjectResExpert.FindChildren(ResFile: TIResourceFile;
  Entry: TResourceEntry);
var
  I, Idx: Integer;
  Header: PCursorOrIcon;
  Directory: PDirectory;
  Data: Pointer;
  Child: TResourceEntry;
  ResEntry: TIResourceEntry;
begin
  if Entry = nil then Exit;
  if Entry.FResType in [rtpGroupCursor, rtpGroupIcon] then begin
    ResEntry := ResFile.GetEntryFromHandle(Entry.FHandle);
    if ResEntry <> nil then
    try
      Data := ResEntry.GetData;
      if Data <> nil then begin
        Header := PCursorOrIcon(Data);
        Directory := PDirectory(PChar(Data) + SizeOf(TCursorOrIcon));
        for I := 0 to Header^.Count - 1 do begin
          for Idx := 0 to FResourceList.Count - 1 do begin
            Child := TResourceEntry(FResourceList.Objects[Idx]);
            if (Child <> nil) and (Child.FParent = nil) and
              (((Entry.FResType = rtpGroupIcon) and (Child.FResType = rtpIcon)) or
              ((Entry.FResType = rtpGroupCursor) and (Child.FResType = rtpCursor)))
              and (Child.GetName = IntToStr(Directory^[I].NameOrdinal)) then
            begin
              Entry.FChildren.Add(Child);
              Inc(Entry.FSize, Child.FSize);
              Child.FParent := Entry;
            end;
          end;
        end;
      end;
    finally
      ResEntry.Free;
    end;
  end;
end;

procedure TRxProjectResExpert.LoadProjectResInfo; //!!!!!
var
  I, Cnt: Integer;
  RootNode, TypeNode: TTreeNode;
  Entry: TResourceEntry;
  ResEntry: TIResourceEntry;
  TypeList: TStringList;
  ResourceFile: TIResourceFile;
{$IFDEF RX_V110}
  EditInt: TIEditorInterface;
  IsNewProject: Boolean;
{$ENDIF}
begin
  Cnt := -1;
  try
    ResourceFile := GetResFile;
  except
    ResourceFile := nil;
  end;
  try
    if ResourceFile <> nil then
      with ResourceFile do begin
        FResFileName := FileName;
{$IFDEF RX_V110}
        EditInt := ProjectModule.GetEditorInterface;
        try
          IsNewProject := not FileExists(EditInt.FileName);
        finally
          EditInt.Free;
        end;
        if IsNewProject or FileExists(FResFileName) then begin
          try
            Cnt := GetEntryCount;
            if not FileExists(FResFileName) and (Cnt = 0) then begin
              Cnt := -1;
              FResFileName := '';
            end;
          except
            Cnt := -1;
            FResFileName := '';
          end;
          { Access violation error is occured when specified }
          { resource file doesn't exist }
        end
        else begin
          Cnt := -1;
          FResFileName := '';
        end;
{$ELSE}
        Cnt := GetEntryCount;
{$ENDIF}
        for I := 0 to Cnt - 1 do begin
          ResEntry := GetEntry(I);
          if ResEntry <> nil then begin
            try
              Entry := TResourceEntry.Create(ResEntry);
            finally
              ResEntry.Free;
            end;
            FResourceList.AddObject(Entry.GetName, Entry);
          end;
        end;
        for I := 0 to FResourceList.Count - 1 do begin
          Entry := TResourceEntry(FResourceList.Objects[I]);
          FindChildren(ResourceFile, Entry);
        end;
      end;
    if (RxResourceEditor <> nil) and (ResourceFile <> nil) and (Cnt >= 0) then
    begin
      with RxResourceEditor do begin
        StatusBar.Panels[0].Text := FResFileName;
        ResTree.Items.BeginUpdate;
        try

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
依依成人综合视频| 精品久久久久久无| 亚洲欧美在线高清| 成a人片亚洲日本久久| 欧美国产日韩亚洲一区| www.欧美.com| 亚洲色图20p| 欧美日韩国产高清一区二区| 日韩va亚洲va欧美va久久| 日韩欧美国产午夜精品| 国产一区激情在线| 国产午夜精品久久久久久免费视 | 日韩影视精彩在线| 91精品国产美女浴室洗澡无遮挡| 高清国产午夜精品久久久久久| 精品久久久久久无| 成人av资源在线| 一区二区三区精密机械公司| 欧美精品日日鲁夜夜添| 久久草av在线| 亚洲欧洲一区二区三区| 欧美性猛交xxxx乱大交退制版| 日韩高清一区二区| 久久久久九九视频| 色先锋久久av资源部| 日韩成人精品视频| 国产精品久久久久久久久免费樱桃 | 国产亚洲精品bt天堂精选| www.日本不卡| 免费成人你懂的| 中文字幕在线免费不卡| 日韩视频一区二区在线观看| 成人不卡免费av| 日产国产欧美视频一区精品| 国产精品国产a级| 欧美一区二区精品在线| 91麻豆免费在线观看| 美女视频网站黄色亚洲| 亚洲美女区一区| 久久综合精品国产一区二区三区 | 久久国产视频网| 国产精品久久久久四虎| 日韩欧美一区电影| 欧美中文字幕一区二区三区 | 国产三级一区二区| 欧美精品在线一区二区三区| 成人三级伦理片| 美国毛片一区二区三区| 一区二区三区不卡视频| 久久久久国产成人精品亚洲午夜| 欧美日韩一本到| 99久久精品免费观看| 国产一区不卡精品| 美日韩黄色大片| 亚洲午夜精品一区二区三区他趣| 国产精品三级av| 久久综合九色综合97婷婷女人 | 日本美女一区二区三区| 亚洲精品国产精华液| 国产女人水真多18毛片18精品视频 | 日本一区二区三区国色天香| 日韩欧美在线网站| 在线不卡一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 国产精品一区三区| 美日韩黄色大片| 日本伊人精品一区二区三区观看方式| 亚洲乱码国产乱码精品精可以看| 中文字幕成人在线观看| 久久婷婷国产综合国色天香| 亚洲国产精品久久久久秋霞影院| 一区二区三区在线视频免费 | 日韩欧美视频在线| 日韩一区二区三区四区五区六区| 精品视频1区2区| 欧美欧美午夜aⅴ在线观看| 欧美在线免费观看亚洲| 欧美性感一类影片在线播放| 在线观看精品一区| 欧美日韩三级视频| 91精品婷婷国产综合久久| 欧美日本一道本在线视频| 538在线一区二区精品国产| 欧美狂野另类xxxxoooo| 在线播放中文一区| 精品少妇一区二区三区视频免付费| 欧美一区二区三区视频| 日韩精品一区二区三区视频播放| 日韩久久久久久| 久久久久国产精品免费免费搜索| 国产日韩精品久久久| 国产精品欧美极品| 亚洲男人的天堂一区二区| 亚洲午夜免费福利视频| 三级成人在线视频| 激情综合色播五月| 成人美女视频在线观看18| 91论坛在线播放| 欧美日韩不卡一区| 日韩欧美国产精品| 欧美高清在线精品一区| 玉足女爽爽91| 麻豆精品国产91久久久久久| 国产精品一卡二卡| av男人天堂一区| 欧美乱熟臀69xxxxxx| 日韩精品一区二区三区中文不卡| 久久精品亚洲国产奇米99| 亚洲靠逼com| 免费av网站大全久久| 成人高清免费观看| 欧美丰满一区二区免费视频| 2024国产精品视频| 一区二区在线观看免费| 蜜桃久久久久久| 99精品国产91久久久久久| 7777精品伊人久久久大香线蕉 | 欧美三级电影一区| 久久久一区二区三区捆绑**| 亚洲免费观看高清完整版在线 | 在线观看一区日韩| 久久综合久久综合九色| 亚洲永久免费av| 国产风韵犹存在线视精品| 欧美女孩性生活视频| 国产蜜臀av在线一区二区三区| 午夜免费久久看| 波多野结衣在线一区| 日韩一区二区免费在线观看| 国产suv精品一区二区6| 欧美日韩国产系列| 国产精品美女久久久久久| 美女视频网站久久| 日本韩国精品一区二区在线观看| 精品国产百合女同互慰| 亚洲国产综合人成综合网站| 成人性生交大合| 精品免费日韩av| 亚洲va天堂va国产va久| eeuss鲁片一区二区三区| 欧美tk丨vk视频| 亚洲成人一区二区| 91一区一区三区| 国产日韩欧美不卡在线| 久久精品国产成人一区二区三区 | 欧美精品在线观看播放| 中文字幕中文字幕一区二区| 国产制服丝袜一区| 日韩亚洲欧美一区二区三区| 亚洲一级片在线观看| 99久久久国产精品| 久久久青草青青国产亚洲免观| 天天影视涩香欲综合网| 在线观看日韩电影| 亚洲精品中文字幕乱码三区| 久久人人超碰精品| 精品一区二区三区久久久| 欧美精品九九99久久| 亚洲在线免费播放| 欧美午夜精品理论片a级按摩| 综合在线观看色| 91亚洲国产成人精品一区二区三| 亚洲国产成人在线| 成人a区在线观看| 中文字幕免费观看一区| 国产丶欧美丶日本不卡视频| 日韩精品一区二区三区在线| 久草精品在线观看| 亚洲精品一区二区三区蜜桃下载| 麻豆91小视频| 久久亚洲一区二区三区四区| 国产一区视频导航| 久久免费美女视频| 国产成人精品三级麻豆| 亚洲国产精品传媒在线观看| 国产风韵犹存在线视精品| 国产精品少妇自拍| 一本高清dvd不卡在线观看| 一区二区三区久久久| 欧美三级三级三级爽爽爽| 日韩福利电影在线观看| 欧美大片日本大片免费观看| 久久99久久久久| 国产午夜精品理论片a级大结局| 成人免费高清视频在线观看| 中文字幕在线不卡视频| 欧美日韩综合在线| 免费久久精品视频| 国产日韩视频一区二区三区| 99久久精品免费看国产| 香蕉成人啪国产精品视频综合网| 日韩一区二区三| 国产传媒日韩欧美成人| 亚洲欧美韩国综合色| 欧美日本韩国一区二区三区视频| 久久99国产精品成人| 国产精品电影院| 欧美高清www午色夜在线视频| 国产一区二区三区四区五区美女 | 青青青伊人色综合久久|