Delphi (около D2007) представил перегруженные методы Execute
для всех стандартных диалогов, которые принимают дескриптор родительского окна в качестве параметра.Измените ваш вызов, чтобы отобразить диалоговое окно:
if ColorDialog1.Execute(Handle) then
begin
// Do whatever
end;
Handle
в этом случае будет дескриптор окна пребывания в верхней форме, которая отображает TColorDialog
.Если вы запускаете диалоговое окно из другого окна, вам нужно вместо этого передать дескриптор верхней формы.
Документация здесь (версия XE, но она все еще применяется кD2009).