gpt4 book ai didi

delphi - Firemonkey 颜色对话框

转载 作者:行者123 更新时间:2023-12-01 17:59:28 25 4
gpt4 key购买 nike

我正在寻找一种简单的方法来让用户选择颜色,在VCL中我一直使用TColorDialog(VCL.Dialogs),但是FMX中没有等效的或者我只是无法找到它。

我显然可以使用现有组件制作自己的颜色对话框,但我认为可能有一个更简单、更优雅的解决方案。我还考虑过直接使用 Windows ChooseColor,但我需要一些关于如何包装它的示例代码;这也不会转化为 Mac,这不是一个直接问题,但可能会在以后带来问题。

最佳答案

对于跨平台解决方案,您可以使用 TColorPanel、TColorPicker 等 FMX 组件构建自己的对话框。您如何询问 Windows ChooseColor 对话框的包装器,这是一个非常简单的示例 adapted from the MSDN documentation .

uses
System.UIConsts,
FMX.Platform.Win,
Winapi.Windows,
Winapi.CommDlg;

const
MaxCustomColors = 16;
type
TCustomColors = array[0..MaxCustomColors - 1] of Longint;

procedure TForm1.Button1Click(Sender: TObject);
var
cc : TChooseColor;
acrCustClr: TCustomColors;
hwnd : THandle;
rgbCurrent : DWORD;
begin
FillChar(cc, sizeof(cc), #0);
cc.lStructSize := sizeof(cc);
cc.hwndOwner := FmxHandleToHWND(Self.Handle);
cc.lpCustColors := @acrCustClr;
cc.rgbResult := RGBtoBGR(claYellow);
cc.Flags := CC_FULLOPEN OR CC_RGBINIT;
if (ChooseColor(cc)) then
Rectangle1.Fill.Color:= MakeColor(GetRValue(cc.rgbResult), GetGValue(cc.rgbResult), GetBValue(cc.rgbResult));
end;

关于delphi - Firemonkey 颜色对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19843975/

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