- 主题:大一学了C语言,想学学图形用户界面方法
三方控件是写给别人用,我自己用还真没写过控件,自带的控件对我完全够用,现成的三方控件一大堆我都没用。
C++Builder就增加了几个有限的关键字,比如对于private,public,protected增加了一个__published,对于函数调用约定增加了一个__fastcall,这是难点吗?
【 在 eGust 的大作中提到: 】
: vcl 是 delphi 原装的,c++ builder 完全就是把 c++ 往 delphi 的封装上凑。除非你自己从来不写任何控件,实际上是不可能的,否则一定会用到特别的语法。
:
--
FROM 220.249.128.*
不管哪种语言,编程都要小心,尤其是C/C++带指针操作的,跟CB没有关系。
CB用VCL类库是原生应用,只是增加几个关键字适配VCL,没有一堆东西。
是不是说,Python调用C语言的库、C#调用Win32 API都不能用,都不伦不类?
【 在 eGust 的大作中提到: 】
: 64位还有 fastcall?
: 重点就是 vcl 整套就是 delphi 写的,c++ builder 为了兼容搞了一堆东西。说实话如果是要用 vcl 的话,直接写 delphi 就好了,语法又不难。非要写个不伦不类的 c++,很多地方还得非常小心,不然就掉坑里了。
:
--
FROM 220.249.128.*
你想做什么效果,示意图?
【 在 roy 的大作中提到: 】
: align和anchors在delphi 7就有了
: 但这个和QT的自动布局相比弱爆了
:
--
FROM 220.249.128.*
比如一个Memo,Align分别上、下、左、右、客户区(Align客户区一般是最后设置的控件用来填空白区域的),运行时缩放窗口试试。
Anchors不要用默认值,比如一个控件锚住左右,运行时缩放窗口试试。
还有TSplitter控件,可以作为相邻区域分隔条动态调整两侧区域大小。
【 在 roy 的大作中提到: 】
: align和anchors在delphi 7就有了
: 但这个和QT的自动布局相比弱爆了
:
--
FROM 220.249.128.*
比如放几个控件,Align分别为上、上、下、左、左、右、客户区,运行试试。
【 在 roy 的大作中提到: 】
: align和anchors在delphi 7就有了
: 但这个和QT的自动布局相比弱爆了
:
--
FROM 220.249.128.*
这个是DPI的问题,不是布局吧?试试11.1以上版本。
【 在 roy 的大作中提到: 】
: 最基本的,包含多个label、checkbox和radiobox的选项对话框 能自动适应DPI和界面字体大小变化,而不至于在用户将界面字体设成20或者更大的时候上下挤作一团,字只能显示一半
:
--
FROM 220.249.128.*
你说的virtual方法以及fastcall调用约定,对C++Builder编程序有实际影响吗?
链接里说的那个坑是个知识点我早就写过了:
https://www.cnblogs.com/ustone/p/15881655.html关于一个程序运行的各种事件顺序,用输出日志到文件不是就很清楚吗?
【 在 eGust 的大作中提到: 】
: 我说了,vcl 是 delphi 写的,而 delphi 有一堆跟 c++ 不兼容的设计。
: 比如 delphi 的 class method 可以是 virtual 的,同时 constructor/destructor 也可以是 virtual 并且在 vcl 里全都按照这种方式这样实现的。
: 32 delphi 有自己特殊的一套 calling convention,按照 eax、ecx、edx 的顺序压栈(后面俩顺序可能不对,十多年没碰记不清了),而同期其它家的 fastcall 是不用 eax 的。所以当年在 delphi 有3种 abi 的声明方式,win32 api 使用方式的叫 stdcall,此外为了兼容还有 cdecl,而 delphi 自己的 fastcall 跟其它家的都不一样。
: ...................
--
FROM 220.249.128.*
VCL有些控件是容器控件,比如Panel、GroupBox等,可以容纳其它控件,控件多的时候很有用,比如一个Panel锚住底部,里面有几个按钮,另一个Panel锚住四边,里面有个Image,Align到客户区,就可以作一个图像浏览器,窗口可以随意缩放,Form还有Constraints属性可以限制窗口的最大最小。
【 在 roy 的大作中提到: 】
: QT不会有这个问题。无论Vertical Layout和Grid Layout,都能够根据字体大小自动调整控件的大小和位置,保证不会相互遮挡。
: Delphi 7的anchor只能指定parent的上下左右,在布局中控件不多的时候能凑合用,但是调整起来也很麻烦。
: 至于我放弃delphi,很大的原因是2020年了,它的标准库里还没有内置的智能指针。让我非常怀疑embracdo这个公司的技术能力
: ...................
--
FROM 220.249.128.*
那你试试Delphi新一代的FireMonkey框架,有各种Layout,一套代码可编译为各种平台APP,包括Windows、macOS、Linux、iPhone、Android。
https://www.cnblogs.com/ustone/p/13955619.html
https://www.cnblogs.com/ustone/p/13955696.html
【 在 roy 的大作中提到: 】
: 你只要做过一次类似于程序设置选项卡这种需要在一个面板上包含大量控件的东西,然后让用户在4k显示器中跑一下,就知道为啥现代UI框架都要有布局管理器了
: Delphi的布局功能只能说是比VB 6要强,放在2000年左右还算够用(其实同时代java的swing已经有布局管理器了),但是放在4k显示器已经开始逐步流行的现在是妥妥的落后于时代了
:
--
FROM 120.35.168.*
FMX.Layouts From RAD Studio API Documentation
Up to Parent: FMX
Defines FireMonkey layout containers providing functionality for arranging components and for inertial scrolling 2D content.
FireMonkey layout containers TLayout,TFlowLayout, TGridLayout, TGridPanelLayout, TScrollBox, and TScaledLayout can be used to group other controls, arrange and manipulate them as a whole. TScrollBox supports inertial scrolling of contained controls. For more information, see Arranging FireMonkey Controls and FireMonkey Layouts Strategies.
【 在 roy 的大作中提到: 】
: 你只要做过一次类似于程序设置选项卡这种需要在一个面板上包含大量控件的东西,然后让用户在4k显示器中跑一下,就知道为啥现代UI框架都要有布局管理器了
: Delphi的布局功能只能说是比VB 6要强,放在2000年左右还算够用(其实同时代java的swing已经有布局管理器了),但是放在4k显示器已经开始逐步流行的现在是妥妥的落后于时代了
:
--
FROM 120.35.168.*