En tu código esta usando la función ColorToStr, supongo que es la misma que he colocado en este mismo hilo, si no es así corrígeme. Como apreciaras la función intercambia los valores de rojo y azul para ajustarse al estándar, así que para volver a obtener el color original no puedes usar directamente IntToStrDef sino que debes usar la función StrToColor que vuelve a colocar el rojo y el azul en su sitio. Aprovecho para hacer unos retoques a la función:
Código Delphi
[-]
function StrToColor(Color: string): TColor;
begin
while length(Color) < 6 do
Color:= '0' + Color;
Color:= Copy(Color,5,2) + Copy(Color,3,2) + Copy(Color,1,2);
Result:= StrToIntDef('$'+Color,0);
end;
Quedando el codigo de la siguiente manera:
Código Delphi
[-]
with TColorDialog.Create(self) do
try
if Execute then
begin
StrColor:= ColorToStr(Color);
EdColormenu.Text:= StrColor;
MiColor:= StrToColor(edColormenu.Text);
Label1.Font.Color := MiColor;
end;
finally
Free;
end;