做个cxgrid5绿色快捷安装包---批处理安装

公司目前这个项目要大量的用CxGrid,以前我从未用过,所以**得焦头烂额.加之我用的这电脑系统貌似有问题(老出些莫明其妙的事儿,如:突然不能编 译出exe,上班开机突然丢失大堆的DLL文件,F9执行后关掉EXEDelphi就死掉了...)有时候做得想骂娘.现在特将收集的一些文章与大家分 享,也希望大家不要重蹈我的覆辙.<ahref="http://www.delphibbs.com/keylife /iblog_show.asp?xid=19911"http://www.delphibbs.com/keylife /iblog_show.asp?xid=19911</a大富翁论坛-富翁笔记-cxgrid(数据库控件)控件的使用< ahref="http://www.delphifans.com/infoView/Article_722.html"http: //www.delphifans.com/infoView/Article_722.html</a『Delphi园地』-分享一下 ExpressQuantumGrid4的cxGrid的一些使用方法和经验<ahref="http://www.delphibbs.com /delphibbs/dispq.asp?lid=2843325"http://www.delphibbs.com/delphibbs /dispq.asp?lid=2843325</aCxGrid显示数据时有多少条记录就画多表格线,其它地方为空,有没有办法可以像 DbGrid一样画满<ahref="http://www.delphibbs.com/keylife /iblog_show.asp?xid=16001"http://www.delphibbs.com/keylife /iblog_show.asp?xid=16001</a大富翁论坛-富翁笔记-ExpressQuantumGrid中如何将满足条件的记录用 不同颜色显示?<ahref="http://soft.etcell.com/topicView.aspx?Id=35970"http: //soft.etcell.com/topicView.aspx?Id=35970</a开个贴子,专门讨论一下cxGrid,用过的进来看 看<ahref="http://blog.csdn.net/nhconch/archive/2007/03/02 /1519254.aspx"http://blog.csdn.net/nhconch/archive/2007/03/02 /1519254.aspx</a让cxGrid像Excel那样高亮显示选区的行号列标<ahref="http: //community.csdn.net/Expert/topic/5642/5642196.xml?temp=.5949365"http: //community.csdn.net/Expert/topic/5642/5642196.xml?temp=.5949365</a关于 手动向Cxgrid里面添加内容的问题。<ahref="http://download.csdn.net/source /15030"http://download.csdn.net/source/15030< /aDevExpressQuantumGrid4.5教程欢迎大家在此帖中提问和解答,在此先谢谢大家!

 

 

 

从昨天到现在,一下子摘抄了好几篇关于批处理的文件。一整天的时间,都在研究DOS批处理。哈哈,小有成果,把cxgrid5做成了绿色安装包。 因为想用一下cxgrid,而我原来下载的是一个完整安装包,exe 文件安装,比较麻烦,安装好后还要去汉化,修补bug,比较麻烦,而且安装目录很乱,并且生成了一些安装信息,并且system32下还有bpl安装文件,觉得很不爽。尽管花了一天时间做成绿色包,但效果还是比较好,包内全是一些 pas,dpk等文本文件,而且做了汉化,修补了Bug,现在安装,只要执行包内install.bat文件,就全部安装好了,几秒钟就够了,以后安装就省事了,哈哈。原来的cxgrid5安装包有27M吧,现在把文件压缩后,去除掉help,demo,及一些二进制文件,只有4M多点了。当然如果不熟悉 cxgrid使用的话,估计你有看help,demo的时间还不如上网找一个cxgrid教程,名字我忘了,比较好。这个批处理其实可以通用,用来安装其他的包也可以啊。 特将过程摘抄如下: 主要是怕以后批处理会淡忘,毕竟批处理还是用得少。 先睡觉了,明天来写。 睡觉起来了,接着干。 我将试着以delphi的概念来解释批处理 @echo off //关掉命令显示,最老的dos命令了 cls //清屏 set delphiRoot= //相当于var delphiroot:variant;不过批处理变量名是大小写敏感的! FOR /F "tokens=3 delims= " %%A IN ('REG QUERY "HKCU/SOFTWARE/Borland/Delphi/7.0" /v RootDir') DO (set delphiRoot=%%A) //1、首先将 reg query的结果循环放入%%a这个变量,/f 参数将某一命令执行结果作为循环范围,"tokens=3 delims= "是什么意思呢?reg query结果是这样的,“HKEY_CURRENT_USER/SOFTWARE/Borland/Delphi/7.0 RootDir REG_SZ D:/Delphi7/” "delims= 空格" 即将上述结果用空格分离开,tokens=3是取第三个值,就是"d:/delphi7/"了,这样我们就取出delphi的安装目录了。如果 rootdir有空格就比较麻烦了,那么用findstr(支持正则)来查找了,我想是这样的 FOR /F "tokens=1 delims=" %%A IN ('REG QUERY "HKCU/SOFTWARE/Borland/Delphi/7.0" /v RootDir') DO (echo %%A |findstr /i ".:.*" >nul &&set delphiRoot=%%A) echo %delphiRoot:~25,100% echo %delphiRoot% 这样用字符串截取就可以了 echo var |{显示var 作为后来命令的参数,管道} findstr{支持正则} /i{忽略大小写} ".:.*"{正则的expression,这里用来检验一个路径} &&{前面的语句执行了,就执行这句} commandline //这句有点perl的语句影子,没用过,曾看过,这种句子有点意思。 cls //这句是为了没有查到注册表值,产生错误,而且错误不能捕捉,用>nul 2>nul均不能屏蔽,所以清掉,好看点。 错误: 系统找不到指定的注册表项或值。 if "%delphiRoot%"=="" ( call :showmsg delphi正确安装了吗?初次安装必须运行一次DELPHI再来安装控件 //call子程序,子程序是标号语句组,语句组用()包住 ,相当于BEGIN...end;(cls 回车 cls)====begin cls;cls;end;子程序以 goto :eof返回,return goto :OKFINAL //结束 ) set dBpl=%delphiRoot%Projects/Bpl/ set cond=-b -le%dBpl% -ln%dBpl% -u%dBpl% //设置dcc32.exe的编译条件 for /f "delims=" %%i in ('dir /b/ad/on') do call :searchdpk %%i //遍历本目录下的子目录,按名字排序,如下图 1dxtheme,2cxlibrary,3cxdata7,4cxeditor,5cxpagecontrol2,6cxgrid5 dir 命令请查看帮助 dir/? 这里用了只列出目录,并按名称排序 这样可以按顺序编译各个包 goto :OKFINAL :showmsg echo. echo. echo. echo. echo. echo. echo ---------------------------------------------------------- echo %1 echo ---------------------------------------------------------- echo. echo. echo. echo. echo. echo. echo. goto :eof :searchdpk echo %1|findstr /i "^[0-9].*">nul &&(//这里findstr 是说目录名是以数字开头的,其他的目录就处理了 pushd %1 //将当前目录压栈,并设当前目录为 %1{调用者传入},子程序的参数,分别是 %1...%9 for /f "delims=" %%a in ('dir /b/a-d/on "*.dpk"') do (//查找dpk文件,编译 echo 正在编译 %%a...... dcc32.exe %%a %cond% >nul rem 包含dcl串的的包将被安装 echo %%a|findstr /i "^dcl">nul&&call :RegDCL %dBpl%%%~na.bpl //如果dpk文件如dcl*.dpk ,则是设计包,注册他,就是写入注册表,见下面的子过程 ) call :addLibPath "%~f1" //加入到搜索目录 popd )//,这里的括符,就是语句组,end; popd和 pushd相反 goto :eof //return :addLibPath set oldlib= FOR /F "tokens=4 delims= " %%g IN ('REG QUERY "HKCU/Software/Borland/Delphi/7.0/Library" /v "Search Path"') DO (set oldlib="%%g") echo %oldlib% | findstr /i %~1 >nul || ( set "oldlib=%oldlib:"=%;%~1" )// search path,没当前目录,就加进去。 echo %oldlib% pause reg delete "HKCU/Software/Borland/Delphi/7.0/Library" /v "Search Path" /f >nul reg add "HKCU/Software/Borland/Delphi/7.0/Library" /v "Search Path" /t REG_SZ /d %oldlib% /f >nul goto :eof :RegDCL echo 正在注册设计包 %1 reg add "HKCU/Software/Borland/Delphi/7.0/Known Packages" /v "%1" /t REG_SZ /d "cxComponents" /f >nul ::for /l %%a in (1,1,9000) do rem 延时 goto :eof :OKFINAL echo. echo 安装完成 ! ! ! echo. pause exit 上面是全部批处理代码。 下面来逐行写批处理说明,希望各位能举一反三。只要稍做修改,就能做成通用安装包了。 @echo off cls set delphiRoot= FOR /F "tokens=3 delims= " %%A IN ('REG QUERY "HKCU/SOFTWARE/Borland/Delphi/7.0" /v RootDir') DO (set delphiRoot=%%A) Cls if "%delphiRoot%"=="" ( call :showmsg delphi正确安装了吗?初次安装必须运行一次DELPHI再来安装控件 goto :OKFINAL ) set dBpl=%delphiRoot%Projects/Bpl/ set cond=-b -le%dBpl% -ln%dBpl% -u%dBpl% for /f "delims=" %%i in ('dir /b/ad/on') do call :searchdpk %%i goto :OKFINAL :showmsg echo. echo. echo. echo. echo. echo. echo ---------------------------------------------------------- echo %1 echo ---------------------------------------------------------- echo. echo. echo. echo. echo. echo. echo. goto :eof :searchdpk echo %1|findstr /i "^[0-9].*">nul &&( pushd %1 for /f "delims=" %%a in ('dir /b/a-d/on "*.dpk"') do ( echo 正在编译 %%a...... dcc32.exe %%a %cond% >nul rem 包含dcl串的的包将被安装 echo %%a|findstr /i "^dcl">nul&&call :RegDCL %dBpl%%%~na.bpl ) call :addLibPath "%~f1" popd ) goto :eof :addLibPath set oldlib= FOR /F "tokens=4 delims= " %%g IN ('REG QUERY "HKCU/Software/Borland/Delphi/7.0/Library" /v "Search Path"') DO (set oldlib="%%g") echo %oldlib% | findstr /i %~1 >nul || ( set "oldlib=%oldlib:"=%;%~1" ) echo %oldlib% pause reg delete "HKCU/Software/Borland/Delphi/7.0/Library" /v "Search Path" /f >nul reg add "HKCU/Software/Borland/Delphi/7.0/Library" /v "Search Path" /t REG_SZ /d %oldlib% /f >nul goto :eof :RegDCL echo 正在注册设计包 %1 reg add "HKCU/Software/Borland/Delphi/7.0/Known Packages" /v "%1" /t REG_SZ /d "cxComponents" /f >nul ::for /l %%a in (1,1,9000) do rem 延时 goto :eof :OKFINAL echo. echo 安装完成 ! ! ! echo. pause exit

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值