gpt4 book ai didi

delphi - 如何将光标类型更改为类似Excel网格光标?

转载 作者:行者123 更新时间:2023-12-02 04:45:51 27 4
gpt4 key购买 nike

如何将 TStringGrid 中的光标类型更改为 Excel 网格光标

Excel 光标不是 delphi 或 system32 中的光标类型。

我使用了swat example中的代码光标位于 extras.res

Screen.Cursors[crMaletUp] := LoadCursor(HInstance, 'Malet');
Screen.Cursors[crMaletDown] := LoadCursor(HInstance, 'MaletDown');
Screen.Cursor := TCursor(crMaletUp);

另一方面,我使用其他代码,但它提供了帮助,但不起作用

procedure TForm1.Button1Click(Sender: TObject);
begin
bmpMask := TBitmap.Create;
bmpColor := TBitmap.Create;

bmpMask.LoadFromFile('SquareMask.bmp');
bmpColor.LoadFromFile('Square.bmp');

with iconInfo do
begin
fIcon := false;
xHotspot := 15;
yHotspot := 15;
hbmMask := bmpMask.Handle;
hbmColor := bmpColor.Handle;
end;

Screen.Cursors[crMyCursor] := CreateIconIndirect(iconInfo);

Screen.Cursor := crMyCursor;

bmpMask.Free;
bmpColor.Free;
end;

最佳答案

我想我会回答这个问题,因为没有其他人会回答。

我有一个函数可以修复一些 Delphi 的内置光标(以使用标准 Windows 光标)。但我也用它来添加一些新的自定义光标。我将精简我的函数以仅添加两个新光标:

  • crColorPicker:enter image description here (颜色选择器光标)
  • crExcelCross:enter image description here (Excel 十字光标)

首先,我需要在 Visual Studio 中创建一个 ExcelCross.cur:

enter image description here

现在创建一个新的资源脚本文件,wumpa.rc,我将在其中指定我的两个光标文件:

wumpa.rc

ColorPicker    CURSOR   "ColorPicker.cur"
ExcelCross CURSOR "ExcelCross.cur"

然后使用项目 -> 添加到项目将该wumpa.rc 文件添加到我的项目中。

现在我声明两个全局常量来表示我的新游标。与 crHourGlasscrNo 一样,我们现在将拥有 crColorPickercrExcelCross:

const   
{Cursor Constants}
crColorPicker = 1003;
crExcelCross = 1004;

现在我们必须在运行时加载这两个 CURSOR 资源:

procedure LoadNewCursors;
var
i: Integer;
cursorHandle: HCURSOR;
begin
//Load ColorPicker cursor
cursorHandle := LoadCursor(hInstance, 'ColorPicker');
if CursorHandle <> 0 then
Screen.Cursors[crColorPicker] := cursorHandle
else
Screen.Cursors[crColorPicker] := Screen.Cursors[crNone];

//Load Excel Cross cursor
cursorHandle := LoadCursor(hInstance, 'ExcelCross');
if CursorHandle <> 0 then
Screen.Cursors[crExcelCross] := cursorHandle
else
Screen.Cursors[crExcelCross] := Screen.Cursors[crNone];
end;

initialization
LoadNewCursors;

有了这个工作,我可以将我的 StringGrid 设置为使用 crExcelCross:

procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cursor := crExcelCross;
end;

还有ba-zinga,您有一个 Excel 十字光标:

enter image description here

Note: Any code is released into the public domain. No attribution required.

关于delphi - 如何将光标类型更改为类似Excel网格光标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17073761/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com