- 博客(1)
- 资源 (4)
- 收藏
- 关注
原创 关于TOleContainer在新窗体显示,并禁止工具条的方法,
f:=TForm.Create(self); // OleContainer2:=TOleContainer.Create(f); OleContainer1.Parent:=f; // OleContainer1.CreateParented(F.Handle); // OleContainer1.CreateParentedControl(F.Handle); // OleCont
2014-04-19 21:21:41
985
SynEdit For XE10.3.rar
最新 SynEdit完整源码 (支持到10.3.1Rio版本),TurboPack SynEdit,开源官方源代码。Updated for **10.3 Rio** / VER330 / PKG 260。SynEdit is a syntax highlighting edit control, not based on the Windows common controls. SynEdit is compatible with both Delphi and C++ Builder.This is a source-only release of TurboPack SynEdit. It includes designtime and runtime p ackages for Delphi and C++Builder and supports Win32 and Win64.
修改里面的非Unicode ascii 几个字符后的经过Delphi Rio成功编译
2019-08-06
Fix DBTreeView
玩delphi,学pascal那么久了,很多知识也都是互联网上搜索,也是依靠很多网友提供的资料去学习的,在此感谢互联网,
感谢那些技术分享的朋友们,近来打算在鄙人这年纪最后完成一个二次开发框架的软件(全凭自己的兴趣,因本人就一IT宅男,搞完后
估计本人也没有精力学习其它了),此软件想尽量少用第三方控件,但里面的DBTree功能不可避免,本以为网上找个DBTree是个手到擒来
的事情,没想到百度了一整天,居然没有一个好的DBTree,也许有人会说Ehlib的dbgridEH+Memtableeh可以,但这第三方软件包还需要带
有其它的东西,有点大,前面说过了,本软件想尽量少用第三方,除此外,国内的DBTree控件居然没有几个行的,看来delphi真的落寞了,
只能祝福delphi借xe5跨平台再次崛起吧!其实也不是说国产的DBTree没有,有那么两三个人做过,但我测试后很多问题,有些还把SQL做
到控件里,而且关联死TADOQuery,这样的控件让人以后如何用,国外的DBTree目前就发现一个还可以的是Dxdbtree,
公司也是大名顶顶的Developer Express Inc ,但不知道为何,网上找的只有1.3.1版本,而且只是For D7的,装上后,
发现还是要引用自己的内存数据(MemData)表才行,看了下源码,写得很复杂,晕啊,我只想找个简简单单功能的DBTree控件,怎么那么难呢,
要求也不高,只需要继承于TTreeView,载入数据表树结构,展示出一个TreeView,能简单的拖动,删除树结构的操作就行,
求人不如求自,既然简单的就自己来做一个控件吧!经过三天参看源码和网络技术资料搜索,基本学会了delphi控件开发了,
因鄙人之前并没有真正做过什么控件,最后做出来的结果感觉还是不错的,鄙人在此公布源码并对源码关键地方用中文详细注释,
目的是希望给以后有类似像我这样的找DBTree的朋友一点帮助!同时也是给初学delphi控件编程的朋友是一个好教材!
2014-05-20
DBRTL C/S 动态数据库开放工具
很牛的莫非delphi的开放的软件
function TMainhideFrm.GetClassMenu(Component:TComponent): String;
type TGetClassMenu=Function:String;StdCall;
var i:integer;
s:String;
DoGetClassMenu:TGetClassMenu;
begin
for I := 0 to PackageList.Count - 1 do
begin
s:=PPackageInfo(PackageList.Items[i]).RegClassStr;
if Pos(Uppercase(Component.ClassName),UpperCase(s))>0 then
begin
@DoGetClassMenu:=GetProcAddress(PPackageInfo(PackageList.Items[i]).HModule,PwideChar(Component.ClassName+'Create'));
if @DoGetClassMenu<>nil then
Result:=DoGetClassMenu;
break;
end;
end;
end;
function TMainhideFrm.DoClassMenu(Component:TComponent;Index:integer): TComponentClass;
type TDoMenu=Function(Component:TComponent):TComponentClass;StdCall;
var i:integer;
s:String;
DoMenu:TDoMenu;
begin
Result:=nil;
for I := 0 to PackageList.Count - 1 do
begin
s:=PPackageInfo(PackageList.Items[i]).RegClassStr;
if Pos(Uppercase(Component.ClassName),UpperCase(s))>0 then
begin
@DoMenu:=GetProcAddress(PPackageInfo(PackageList.Items[i]).HModule,PwideChar(Component.ClassName+Inttostr(Index)));
if @DoMenu<>nil then
Result:=DoMenu(Component);
break;
end;
end;
2014-04-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人