当前位置: 首页 > news >正文

50分,再求兩個BCB轉delphi的問題,非常感謝!

50分,再求兩個BCB轉delphi的問題,非常感謝! Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiDB/html/delphi_20061218201812234.html
下面兩段代碼如何轉成   delphi   的,多謝  
   
  1.  
   
  int   Command,   i;  
      AnsiString   Name,Desc;  
      TLocateOptions   Opts;  
      Opts.Clear();  
      Opts   <<   loCaseInsensitive;  
   
      for   (i   =   0;   i   <   ComponentCount;   i++)  
          {  
          if   (dynamic_cast<TMenuItem*>(Components[i]))  
                {  
                if   (!MENUENABLEDataSet->Locate("MENU",dynamic_cast<TMenuItem*>(Components[i])->Name,Opts))  
                    {  
                      dynamic_cast<TMenuItem*>(Components[i])->Enabled   =   false;  
                    }  
                }  
            }  
   
   
  2.  
   
        int   i,Command;  
        AnsiString   Name,Desc;  
        for   (i=0;i<ComponentCount;i++)  
                {  
                  if   (dynamic_cast<TMenuItem*>(Components[i]))  
                      {         //<指標   void*   定義過的類別>     (指標   參考)  
                          Command   =   dynamic_cast<TMenuItem*>(Components[i])->Command;  
                          Desc   =   dynamic_cast<TMenuItem*>(Components[i])->Caption;  
                          Name   =   dynamic_cast<TMenuItem*>(Components[i])->Name;  
                          MENUDataSet->InsertRecord(ARRAYOFCONST((Command,Name,Desc)));  
                      }  
                }  
        ShowMessage("菜單重置完成!");  
 

unit   Unit1;  
   
  interface  
   
  uses  
      Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,  
      Dialogs,   DB,   DBTables,   Menus;  
   
  type  
      TForm1   =   class(TForm)  
          MENUENABLEDataSet:   TTable;         //测试用  
          MENUDataSet:   TTable;                     //测试用  
      private  
          {   Private   declarations   }  
      public  
          {   Public   declarations   }  
          procedure   Proc1;  
          procedure   Proc2;  
      end;  
   
  var  
      Form1:   TForm1;  
   
  implementation  
   
  //uses   DB;  
   
  {$R   *.dfm}  
   
  {   TForm1   }  
   
  procedure   TForm1.Proc1;  
  var  
      i:   Integer;  
      Opts:   TLocateOptions;  
  //     Name,   Desc:   string;  
  begin  
      Opts   :=   [];  
      Include(Opts,   loCaseInsensitive);  
      for   i   :=   0   to   ComponentCount   -   1   do  
      begin  
          if   Components[i]   is   TMenuItem   then  
                if   not   MENUENABLEDataSet.Locate('MENU',   TMenuItem(Components[i]).Name,   Opts)   then  
                      TMenuItem(Components[i]).Enabled   :=   False;  
      end;  
  end;  
   
  procedure   TForm1.Proc2;  
  var  
      Command,   i:   Integer;  
      Name,   Desc:   string;  
  begin  
      for   i   :=   0   to   ComponentCount   -   1   do  
      begin  
          if   Components[i]   is   TMenuItem   then  
          begin  
                              //<指標   void*   定義過的類別>     (指標   參考)  
                          Command   :=   TMenuItem(Components[i]).Command;  
                          Desc   :=   TMenuItem(Components[i]).Caption;  
                          Name   :=   TMenuItem(Components[i]).Name;  
                          MENUDataSet.InsertRecord([Command,Name,Desc]);  
          end;  
      end;  
      ShowMessage('菜單重置完成!');  
  end;  
   
  end.  
 

注意,前面2个TTable元件只是为求代码通过加上去的,如果使用它们会出错;过程名称随便取的;只是直接将代码移植过来,其它未加考虑。

 
  還沒空測試,先買單,多謝了!

相关文章:

  • IEnumerable 和 IEnumerator 接口
  • Ionic 入门与实战之第三章:Ionic 项目结构以及路由配置
  • 使用HBuilder编辑器进行真机调试运行时提示Waiting for debugger!
  • 交换机端口安全
  • SQLite入门与分析(四)---Page Cache之事务处理(2)
  • Windows上为Apache配置HTTPS
  • [数据恢复答疑]IBM 的RAID5E和RAID5EE适合我吗?
  • 【LeeCode】Two Sum
  • Alexnet参数解释
  • es6的常用语法
  • asp.net 点击girdView中的超链接列复制地址--源码--调试成功
  • 定制用户不使用某个帐号
  • 解读sencha touch移动框架的核心架构(一)
  • DataView(2):RowState
  • Spark学习笔记之相关记录
  • 深入了解以太坊
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • JavaScript创建对象的四种方式
  • JavaScript中的对象个人分享
  • jQuery(一)
  • Next.js之基础概念(二)
  • SOFAMosn配置模型
  • vue脚手架vue-cli
  • vue中实现单选
  • vue自定义指令实现v-tap插件
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 搞机器学习要哪些技能
  • 构建二叉树进行数值数组的去重及优化
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 配置 PM2 实现代码自动发布
  • 少走弯路,给Java 1~5 年程序员的建议
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 跳前端坑前,先看看这个!!
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 我是如何设计 Upload 上传组件的
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​马来语翻译中文去哪比较好?
  • #FPGA(基础知识)
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #pragam once 和 #ifndef 预编译头
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (LeetCode 49)Anagrams
  • (规划)24届春招和25届暑假实习路线准备规划
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (原創) 如何讓IE7按第二次Ctrl + Tab時,回到原來的索引標籤? (Web) (IE) (OS) (Windows)...
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • (转)关于多人操作数据的处理策略
  • (转载)OpenStack Hacker养成指南
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程