2011-05-25 14 views
1

我正在使用Delphi 7在Windows 7下载文件。我是否仅限于在Delphi 7下的Controls.pas中定义的游标数字?

我想在下载过程中更改光标。

我设置Screen.Cursor := crHourGlass;,但是,在Controls.pas看着不断光标号码后,我想知道是否有其他数字我可以用它来改变光标为我不想增加一个光标到我的资源文件,我只想使用我可以使用的标准数字,而无需添加资源)。

回答

2

确实其他数字产生意 充分游标

号其它数量除了built-in cursors constants将产生一个缺省光标其等同于TCursor(crDefault)(换言之 - HCURSOR(Screen.Cursors[crDefault]))。这些内置游标驻留在应用程序资源中并在VCL启动时预加载。要添加自定义光标,请在的HAVE中添加CURSOR资源,然后加载并将其添加到VCL。

procedure TForm1.FormCreate(Sender: TObject); platform; 
const 
    crCustom = 42; 
var 
    Cursor: HCURSOR; 
begin 
    Cursor := LoadCursor(HInstance, 'CUSTOM'); 
    Win32Check(Cursor <> 0); // required error check 
    Screen.Cursors[crCustom] := Cursor; 
    { Done, newly added crCustom is ready to use } 

    Self.Cursor := crCustom; // for example - lets show custom cursor 

    { also, TScreen object will manage resource handle } 
    { and perform cleanup for you, so DestroyCursor call is unnecessary } 
end; 

More complicated example with indirect cursor constructionNB:例如有许多缺点:1)DestroyIcon调用错误2)他们会注意到它,如果有错误的所有API后检查调用

0

crHourGlass是TCursor类型,它是一个整数别名(或多或少)。它是一个可用于从库存设置游标的索引。

可以使用

Screen.Cursors[Number] := ... needs to be a HCURSOR. 

所以,如果你有一个手柄,一个新的光标,您可以使用在Delphi中添加游标。

请注意,crxXX常量和TCursor类型在Controls中定义,Screen类在Forms中定义。所以你可以看到自己的代码。

+0

是的,我知道,并已找到了所有那。问题是,其他数字是否意味着完整的游标。 – Edelcom 2011-05-25 13:59:38

1

“标准数字”(crHourglass,crDefault等)是由Delphi的VCL提供的预定义游标。你可以定义你自己的,并通过Windows API将它们加载到应用程序中,或者通过Windows API从文件加载到应用程序中,但是没有任何未发布的神奇的定义(或者杂散数字),这将意味着什么。尝试将Screen.Cursors []设置为未知数字而未首先加载游标时, 会导致数组超出界限错误,并且在最差的 处出现访问冲突,从而导致显示默认光标(请参阅TScreen.GetCursors,地址为Forms.pas) 。

快速解释:TCursorRec在VCL源中定义为包含指向下一条记录,索引和光标句柄(HCURSOR)的指针的记录。它基本上是一个单链表,当你通过访问Cursors列表来询问游标时,VCL从第一项开始查找列表,然后依次逐步查找,直到找到与请求的索引匹配的索引(在指向它将光标设置为该项目的值HCURSOR),或者确定您所请求的索引未分配,在这种情况下,将返回默认光标。

相关问题