摘要:
dfm文件是delphi中存储窗体控件信息的,有时为了对大批量的dfm文件操作(如:批量替换控件、作检查等),往往不是太方便。xml对结构化的数据读写则很强,将文本类型的dfm转为xml后进行操作,再转回dfm存储大大方便了操作。
//dfm to xml
procedure dfm2xml(adfmstrings: tstrings; axml: idsxmldocument);......
摘要:
“每逢春夏,千鹤云集”的青城山,在此栖居了上千年的仙鹤纷纷飞走,从此失踪了。当地居民纷纷指责:这都是房地产大开发惹的祸!也许不是这个原因,也许是;全球多个国家出现气候异常,有没有根本的方法来防止呢,可能没有。人类的最大bug就是癌症,以及艾滋病、sars等的出现。没有根本的防治方法,也找不出根本的原因。搞软件的也总会碰到许多疑难杂症,有的解决了,有的无法解决。我们来对比分......
自己编写树(Tree)的封装类
在vcl中包含有一个tlist类,几乎可以实现<链表>所有功能,delphi的工程师真是伟大.但是在实际应用中需要ttree类,来实现<树>的功能,我写了两个类tyutree,tyunode.可以方便实现,树创建,结点增删.移动功能.请大家指教.
procedure test(); 【程序编程相关:
ShadowStarFastEditor】
代码实例: 【推荐阅读:
ShadowStarCodeFast使用】
yutree: tyutree; 【扩展信息:
多层数据库开发十三:剖析几个数据库应用程】
var
node: tyunode;
begin
//第1步:创建树.增加第一个结点0
yutree := tyutree.create;
node := yutree.add(nil);//nil,表示增加根结点
node.data := pointer(0);
//第2步:在结点0下增加子结点1
node := yutree.addchild(node);node指向结点0
node.data := pointer(1);
//第3步:在结点1下增加子结点2
node := yutree.addchild(node);
node.data := pointer(2);
//第4步:切换到结点2的父结点1
node := node.getparent;
//第5步:在结点1下增加子结点3,并作为第1个子结点
node := yutree.addchildfirst(node);
node.data := pointer(3);
//第6步:切换到结点3的父结点1
node := node.getparent;
//第7步:增加结点1下子结点4,作为最后一个子结点
node := yutree.addchild (node);
node.data := pointer(4);
//第8步:增加结点4的兄弟结点5,作为第一个兄弟结点
node := yutree.addfirst(node);
node.data := pointer(5);
//t第9步:切换到结点5的下一个兄弟结点3
node := node.getnextbrother;
//第10步:在结点3下插入一个兄弟结点6
node := yutree.add(node);
node.data := pointer(6 );
//第11步:删除结点6
node.delete; //或yutree.delete(node);
//其它用法
//结点2.getnextbrother() = 结点4 返回该结点的下一个兄弟
//结点2.getprevbrother() = 结点3 返回该结点的上一个兄弟...
下一页 摘要:
这是以前写的代码,自绘xp风格的菜单,硬盘坏了后以为没了,最后写的一个软件要自定义风格,“翻箱倒柜”的终于在我可爱的古董机^_^上找到了一个应用的例子。还是把它放到blog上来,即可共享又可作为备用 :) 把主菜单的onmeasureitem指向measuremainitem、onadvanceddrawitem指向drawmainitem,子菜单的onmeasur......