<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      秋·風(fēng)

        博客園 :: 首頁(yè) :: 博問(wèn) :: 閃存 :: 新隨筆 :: 聯(lián)系 :: 訂閱 訂閱 :: 管理 ::
      這個(gè)實(shí)例將實(shí)現(xiàn)以下功能:
      1、在tools菜單增加“AI助力手”,并設(shè)置相應(yīng)的圖標(biāo)
      2、讀取代碼編輯器光標(biāo)行內(nèi)容,并傳給插件的Synedit1
      3、實(shí)現(xiàn)停靠窗口

      參考官方的文檔
      Extending the IDE/zh CN - Free Pascal wiki
      第一步:
      1、軟件包-->新建軟件包

       2、輸入插件的名稱


      3、添加-->新建文件:

       

       

      4、選擇“可停靠的IDE窗口”

      5、輸入“Form.name”和“菜單項(xiàng)目標(biāo)題”名稱

       

      注意事項(xiàng):
      注冊(cè)停靠窗口時(shí)的唯一標(biāo)識(shí)不能與form同名

        MyPkgAICreator:=IDEWindowCreators.Add(
          'MyPkgAI1',//唯一標(biāo)識(shí) 注意:這個(gè)名稱不能與form同名
          @CreateMyPkgAI, nil,
          '100', '100', '300', '300'  // default place at left=100, top=100, right=300, bottom=300
            // you can also define percentage values of screen or relative positions, see wiki
          );

      下面紅色代碼是新增加的:

      unit Unit3;
      
      {$mode objfpc}{$H+}
      
      interface
      
      uses
        Classes, SysUtils, LazLoggerBase, FileUtil, Forms, Controls, Graphics, 
        Dialogs,
        SrcEditorIntf,IDEImagesIntf,
        LCLType, IDECommands, IDEWindowIntf, LazIDEIntf, MenuIntf, SynEdit;
      
      type
      
        { TMyPkgAI }
      
        TMyPkgAI = class(TForm)
          SynEdit1: TSynEdit;
        private
          { private declarations }
        public
          { public declarations }
        end;
      
      var
        MyPkgAI: TMyPkgAI;
        MyPkgAICreator: TIDEWindowCreator; // set by Register procedure
      
      procedure ShowMyPkgAI(Sender: TObject);
      procedure Register; // Check the "Register Unit" of this unit in the package editor.implementation
      
      implementation
      
      {$R *.lfm}
      
      procedure ShowMyPkgAI(Sender: TObject);
      var
        Editor:TSourceEditorInterface;
        TextPos:TPoint;
        frm:TCustomForm;
      begin
        //激活源代碼編輯器
        //SourceEditorManagerIntf需在uses添加SrcEditorIntf單元
        Editor:=SourceEditorManagerIntf.ActiveEditor;
        if Editor=nil then exit;
        TextPos:=Editor.CursorTextXY; //取光標(biāo)當(dāng)前行和列
      
        frm:=IDEWindowCreators.ShowForm(MyPkgAICreator.FormName,true);
        TMyPkgAI(frm).SynEdit1.Clear;
        //讀當(dāng)前行的信息并賦值給SynEdit1
        TMyPkgAI(frm).SynEdit1.Lines.Add(Editor.Lines[TextPos.Y-1]);
      end;
      
      procedure CreateMyPkgAI(Sender: TObject; aFormName: string;
        var AForm: TCustomForm; DoDisableAutoSizing: boolean);
      begin
        // sanity check to avoid clashing with another package that has registered a window with the same name
        if CompareText(aFormName, 'MyPkgAI1')<>0 then begin
          DebugLn(['ERROR: CreateMyPkgAI: there is already a form with this name']);
          exit;
        end;
        IDEWindowCreators.CreateForm(AForm, TMyPkgAI, DoDisableAutoSizing,
          LazarusIDE.OwningComponent);
        AForm.Name:=aFormName;
        MyPkgAI:=AForm as TMyPkgAI;
      end;
      
      procedure Register;
      var
        CmdToolsMenu: TIDECommandCategory;
        ToolsMyPkgAICommand: TIDECommand;
        MenuItemCaption: String;
        MenuCommand: TIDEMenuCommand;
      begin
        //菜單名稱
        MenuItemCaption:='我的AI助手';
        // search shortcut category
        CmdToolsMenu:=IDECommandList.FindCategoryByName(CommandCategoryToolMenuName);
        // 注冊(cè)快捷鍵
        ToolsMyPkgAICommand:=RegisterIDECommand(CmdToolsMenu,
          'ToolsMyPkgAI',
          MenuItemCaption,
          IDEShortCut(VK_F6, [ssCtrl]), // <- 設(shè)置快捷鍵 Ctrl+F6
          CleanIDEShortCut, nil, @ShowMyPkgAI);
      
        //注冊(cè)在Tools菜單
        MenuCommand:=RegisterIDEMenuCommand(itmSecondaryTools,
          'ToolsMyPkgAI',
          MenuItemCaption, nil, nil, ToolsMyPkgAICommand);
      
        //IDEImages需在uses添加IDEImagesIntf單元
        //將菜單的圖標(biāo)設(shè)置"menu_view_code_explorer"
        MenuCommand.ImageIndex:=IDEImages.LoadImage('menu_view_code_explorer');
        //注冊(cè)停靠窗口
        MyPkgAICreator:=IDEWindowCreators.Add(
          'MyPkgAI1',//唯一標(biāo)識(shí) 注意:這個(gè)名稱不能與form同名
          @CreateMyPkgAI, nil,
          '100', '100', '300', '300'  // default place at left=100, top=100, right=300, bottom=300
            // you can also define percentage values of screen or relative positions, see wiki
          );
      end;
      
      end.








      posted on 2025-06-20 09:23  秋·風(fēng)  閱讀(226)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 国产成人精品永久免费视频| 草草浮力影院| 鲜嫩高中生无套进入| 我要看亚洲黄色太黄一级黄| 国产午夜福利免费入口| 日韩有码精品中文字幕| 久久婷婷综合色丁香五月| 成人精品天堂一区二区三区| 国产精品一区二区久久毛片| 98精品全国免费观看视频| 亚洲无人区码一二三区别| 通辽市| 亚洲精品色哟哟一区二区| 日夜啪啪一区二区三区| 日本一道本高清一区二区| 人妻中文字幕不卡精品| 中文字幕日韩国产精品| 妓女妓女一区二区三区在线观看 | 亚洲区日韩精品中文字幕| 亚洲天堂伊人久久a成人| 中文字幕国产精品一区二 | h动态图男女啪啪27报gif| 亚洲国产一区二区在线| 国产粉嫩区一区二区三区| 婷婷综合亚洲| 激情综合网一区二区三区| 国产三级精品福利久久| 国产精品中文字幕av| 亚洲成av人在线播放无码| 麻豆a级片| 国产精品久久久久久久专区| 天堂…中文在线最新版在线| 不卡一区二区国产在线| 久久无码中文字幕免费影院蜜桃 | 成人aⅴ综合视频国产| 国产91精选在线观看| 久久日韩在线观看视频| 国产果冻豆传媒麻婆| 中文激情一区二区三区四区| 午夜免费无码福利视频麻豆| 国产真实乱人偷精品人妻|