无意中到了VCL的下面部分,有几个写法不明白(是写法不明白,我没想分析VCL,就算是一小段也太复杂了)。procedure TBitBtn.SetKind(Value: TBitBtnKind);
begin
if Value <> FKind then
begin
if Value <> bkCustom then
begin
Default := Value in [bkOK, bkYes];
Cancel := Value in [bkCancel, bkNo]; if ((csLoading in ComponentState) and (Caption = '')) or
(not (csLoading in ComponentState)) then
begin
if BitBtnCaptions[Value] <> nil then
Caption := LoadResString(BitBtnCaptions[Value]);
end; ModalResult := BitBtnModalResults[Value];
TButtonGlyph(FGlyph).Glyph := GetBitBtnGlyph(Value);
NumGlyphs := 2;
FModifiedGlyph := False;
end;
FKind := Value;
Invalidate;
end;
end;哎,水平太初级了,上面有一句
Default := Value in [bkOK, bkYes]; 其中 Value in [bkOK, bkYes] 是什么写法,我只见过 IF VALUE IN [X,Y] 这样的,是不是Value in [bkOK, bkYes] 直接得到一个BOOLEAN的值?哎我一般也就写成IF VALUE IN [X,Y]真没想到还可以那样写。另外找到有下面定意,这个是WINDOWS规定的么?再接着CTRL+MOUSECLICK就没有了。
TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose,
bkAbort, bkRetry, bkIgnore, bkAll);
我不明白的是()里的这些值,是WINDOWS系统本身这么规定的还是DELPHI里特有的写法,那如果是DELPHI规定的,最终与OS接触时怎么处理的,因为OS是用C写的,这些值一定不叫bkCustom, bkOK, bkCancel 那是由哪处理的呢?我们能找到源头么?像在VCL源码里找一样。
begin
if Value <> FKind then
begin
if Value <> bkCustom then
begin
Default := Value in [bkOK, bkYes];
Cancel := Value in [bkCancel, bkNo]; if ((csLoading in ComponentState) and (Caption = '')) or
(not (csLoading in ComponentState)) then
begin
if BitBtnCaptions[Value] <> nil then
Caption := LoadResString(BitBtnCaptions[Value]);
end; ModalResult := BitBtnModalResults[Value];
TButtonGlyph(FGlyph).Glyph := GetBitBtnGlyph(Value);
NumGlyphs := 2;
FModifiedGlyph := False;
end;
FKind := Value;
Invalidate;
end;
end;哎,水平太初级了,上面有一句
Default := Value in [bkOK, bkYes]; 其中 Value in [bkOK, bkYes] 是什么写法,我只见过 IF VALUE IN [X,Y] 这样的,是不是Value in [bkOK, bkYes] 直接得到一个BOOLEAN的值?哎我一般也就写成IF VALUE IN [X,Y]真没想到还可以那样写。另外找到有下面定意,这个是WINDOWS规定的么?再接着CTRL+MOUSECLICK就没有了。
TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose,
bkAbort, bkRetry, bkIgnore, bkAll);
我不明白的是()里的这些值,是WINDOWS系统本身这么规定的还是DELPHI里特有的写法,那如果是DELPHI规定的,最终与OS接触时怎么处理的,因为OS是用C写的,这些值一定不叫bkCustom, bkOK, bkCancel 那是由哪处理的呢?我们能找到源头么?像在VCL源码里找一样。
解决方案 »
- 为什么无法向Dll中传递字符串参数?已使用pchar类型.
- 位图保存为流,报Abstract error
- ADOQUERY的过滤条件在filter下竟然不起作用。。。
- 急啊!我如何能打印报表时一页只打一条
- □□升为4个角,散分!同时祝大家愚人节快乐□□
- 关于SMS解码的问题: 如何将C++Builder 转为 Delphi 的???
- 请教:query控键要删除记录的制约条件
- 请问各位高人,如何insert into 一系列变量值?
- 关于十六进制的一些问题!!!!!!UP给分的
- 急急急,怎样在delphi中直接调用显示网页!!!
- 怎么样得到一个按钮的句柄?
- 关于大批量同类型有规则命名的控件的初始化!急!!!
TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose,bkAbort, bkRetry, bkIgnore, bkAll)是定义枚举类型
意思相当于:
if Value in [bkOK, bkYes] Then
Default := True
Else
Default := False;