Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何将光标类型更改为类似Excel网格光标?_Delphi - Fatal编程技术网

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

Delphi 如何将光标类型更改为类似Excel网格光标?,delphi,Delphi,如何将TStringGrid中的光标类型更改为类似于Excel网格光标 Excel游标不是delphi或system32中的游标类型 我在光标位于extres.res Screen.Cursors[crMaletUp] := LoadCursor(HInstance, 'Malet'); Screen.Cursors[crMaletDown] := LoadCursor(HInstance, 'MaletDown'); Screen.Cursor := TCursor(crMaletUp);

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

Excel游标不是delphi或system32中的游标类型

我在光标位于
extres.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游标)。但我也用它来添加一些新的自定义游标。我将精简我的函数,只添加两个新的游标:

  • crcolorpocker
    :(颜色选择器光标)
  • crExcelCross
    :(Excel十字光标)
首先,我需要在Visual Studio中创建一个
ExcelCross.cur

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

wumpa.rc

ColorPicker    CURSOR   "ColorPicker.cur"
ExcelCross     CURSOR   "ExcelCross.cur"
并使用project->添加到project
wumpa.rc
文件添加到我的项目中

现在我声明两个全局常量来表示我的新游标。像
crHourGlass
crNo
,我们现在将有
crColorPicker
crExcelCross

const   
   {Cursor Constants}
   crColorPicker =  1003;
   crExcelCross = 1004;
procedure TForm1.FormCreate(Sender: TObject);
begin
    StringGrid1.Cursor := crExcelCross;
end;
现在我们必须在运行时加载这两个
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;
ba zinga,你有一个Excel十字光标:

注意:任何代码都会发布到公共域中。无需归因


你能链接一个光标的图像吗?做一个光标的截图,然后把图像贴在这里,这样我们就可以看到你想要什么样的光标。进行一些错误检查怎么样?
CreateIconIndirect
返回什么?无论如何,获取光标文件、将其编译为资源并链接到该资源要容易得多。我已投票决定关闭此功能。这不是一个真正的问题。该问题包含两个如何分配自定义游标的示例。此外,正如Arioch指出的,定制游标甚至不是必需的,因为Delphi已经完全支持这里请求的游标。还有什么要问的?充其量,这是一个如何调试的问题,这个问题太广泛了,无法在堆栈溢出时处理。