对于我们的dbgrid,我们希望不断隐藏滚动条.由于TDBGrid没有'滚动条'属性,我们使用:
ShowScrollBar(DBGrid1.Handle, SB_VERT, False);
ShowScrollBar(DBGrid1.Handle, SB_HORZ, False);
Run Code Online (Sandbox Code Playgroud)
但是,当我们调整窗口大小(以及包含dbgrid的面板)时,只有在调用上述两种方法后,滚动条才会出现并再次隐藏.
解决方案是在DrawColumnCell中调用这些方法,但这会导致dbgrid闪烁,即使DoubleBuffered设置为true也是如此.
有没有办法永久隐藏滚动条?
提前致谢!
我们有一个C++ Builder XE项目(VCL Forms Application),里面有几十个表单和单元.每当添加,删除或重命名属于项目的文件时,IDE都应该做两件事:
但是,IDE不是仅进行必要的更改,而是对现有的USEFORM和CppCompile记录进行洗牌,即使它们不受更改的影响.如果我添加一个单元(cpp和头文件),即使不需要对项目源进行任何更改,也只需要对cbproj文件进行任何更改,USEFORM都会被洗牌.
我没有看到新订单如何形成的具体模式.如果我编辑或重命名一个单元,大约一半的USEFORMs似乎改变了位置,只改变了一对或没有CppCompile记录.如果在两台不同的机器上对项目副本进行了更改,则大多数更改似乎都相似,但并非全部.这表明重新排序不是随机的.
使用Subversion合并更改时,该行为会导致问题,因为它会强制手动解决更改顺序造成的冲突.
所以问题是:什么可能导致上述行为以及如何摆脱它?
我是新手程序员.我需要in在C++ Builder XE中使用Delphi的运算符,如下所示:
if (dgColLines in DBGrid->Options)
// include vertical lines in total (one per column)
TotalColumnWidth = TotalColumnWidth + ColumnCount;
Run Code Online (Sandbox Code Playgroud)
if (dgColLines **in** DBGrid->Options)
Run Code Online (Sandbox Code Playgroud)
如何在C++ Builder中做到这一点?
提前致谢.
我已经使用以下代码制作了带圆角的C++ Builder XE表单
BorderStyle = bsNone;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
HRGN frmrgn;
frmrgn = CreateRoundRectRgn (0, 0, ClientWidth, ClientHeight,12,12);
SetWindowRgn(Handle,frmrgn,true);
}
Run Code Online (Sandbox Code Playgroud)
它看起来很酷,但边框丢失,我尝试了很多东西,但没有得到好结果,所以请帮我绘制RGB颜色边框(96,96,96)
我希望整个表格可以拖动.
在Delphi中开发新组件时,我遇到了这种低效率.每次我对源代码进行增量更改(例如,修复bug)时,我都会构建新组件并将其安装在Component Palette上.还行吧.在IDE的另一个实例中,我打开了一个使用此组件的项目.它是我的一个表单上的可视组件.要应用新更改,需要重新启动此第二个实例 - 关闭和重新打开表单或项目是不够的.这个过程可以优化吗?
delphi development-environment custom-component c++builder-xe
我写了一个C++构建器组件来显示SVG文件对它们执行一些操作.
现在,我发布了一个名为SvgFile(UnicodeString)的属性,该属性可以在IDE中使用SVG文件的文件名进行初始化.这很好用.此属性保存在DFM文件中,可以从中重新加载.
但是我必须为应用程序提供SVG文件,因此我想将SVG保存到DFM文件中,因为它是使用TImage组件完成的.
我想我必须写一个TPropertyEditor,也许是一个TPersistent类,但我不知道该怎么做.
有人能帮我这么做吗?
编辑2013/01/17:这是一个解决方案http://www.informit.com/articles/article.aspx?p=28278&seqNum=5
谢谢你的帮助.
这有点奇怪,我似乎只在Windows 7上看到这一点(当我在Windows 8中构建应用程序时,似乎没有发生这种情况).我通过XE3使用C++ Builder XE看到了这一点.我将编译一个应用程序(静态链接包和rtl),然后从调试器运行它.如果我然后对代码进行更改并尝试重新编译并运行应用程序,则编译似乎没问题,但是当应用程序尝试启动时应用程序崩溃.如果我关闭C++ Builder并重新打开它,那么强制它通过重建所有进行重建,或者进行一些微小的更改它编译并运行正常.每次都是这种情况.我曾尝试过去切换到动态链接rtl和"出现"以使问题消失但我不确定这是否是一个可靠的假设.有谁见过这种行为,有没有人知道如何解决它.
编辑:
崩溃发生在我的任何代码之前.这是调用堆栈:
007d17b3; __delayLoadHelper2
007d7efa; __imageBase
007d308b; __wstartup
Run Code Online (Sandbox Code Playgroud)
顺便说一句:这个项目没有延迟加载dll.
crash c++builder access-violation c++builder-xe c++builder-xe2
有人知道如何在 builder XE 中同时显示头文件和源文件吗?
我知道我可以在它们之间切换,但我宁愿每个文件都有一个选项卡。
谢谢
如果我有以下代码:
{
UnicodeString sFish = L"FISH";
char *szFish = AnsiString(sFish).c_str();
CallFunc(szFish);
}
Run Code Online (Sandbox Code Playgroud)
那么创建的临时AnsiString的范围是什么,以及szFish指向有效数据的时间有多长?它仍然对CallFunc函数有效吗?
它的范围只是一行,还是整个块?
我是新手程序员.我需要在C++ Builder XE中使用Delphi Inc()和Dec()程序,如下所示:
Inc(Filler);
Dec(GridClientWidth);
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我怎么做?
我想在RAD Studio C++ Builder XE中将十六进制字符串转换为16位十进制.
例如,我有十六进制字符串"8FC".二进制表示为100011111100.这个的十进制表示为:2300.
如何在C++ Builder XE中进行此转换?
通常,使用安装程序完成JEDI库的安装.有人知道安装人员吗?
谢谢
可能重复:
Windows 文件夹共享 API
我需要我的 C++ 应用程序偶尔创建共享目录。我正在使用 Embarcadero C++ Builder XE,它只有CreateDir()无法指定共享访问的功能。Embarcadero C++ Builder 环境中是否有任何东西可以让我简单地做到这一点,或者如果失败了,是否有一种简单的方法可以直接使用 Windows API 做到这一点?我已经查看了 msdn 页面,了解可以让我这样做的内容,但我还没有找到任何以清晰方式记录的内容。
编辑特别是文件夹及其内容需要网络上的所有其他机器都可以访问。
c++builder-xe ×13
c++builder ×10
delphi ×6
c++ ×3
border ×1
components ×1
crash ×1
dbgrid ×1
delphi-xe ×1
dfm ×1
drag ×1
hex ×1
ide ×1
jedi ×1
rounding ×1
scrollbar ×1
set ×1
tpersistent ×1
usability ×1
winapi ×1