Рената Литвинова, немного странный способ вызова диалога выбора цвета... Писать обработчик события OnClose диалога необязательно. Всё можно сделать за один присест: вызвать диалог (модальное окно!) и по закрытии его изменить цвет.
Функцию-то написанную вы вызываете, а возвращаемое ею значение (самое главное) нигде не используеуте. Предлагаю вам убрать процедуру ColorDialog1Close совсем, а в обработчике события OnClick кнопки написать так:
Код:
procedure TfrmMain.Button1Click(Sender: TObject);
begin
SynEdit1.SelText := GetHexColor;
end;
Строчку, которую вы закомментировали в функции, раскомментируйте. Ошибка была из-за того, по-видимому, что производилась повторная попытка открыть окно диалога (уже открытое).