Wahrscheinlich erkennt Delphi den Hexwert nicht als Hexwert. Setz' doch einfach mal das Zeichen "$" vor den String. So werden Hexwerte in Delphi nämlich eigentlich angegeben.
Delphi-Quellcode:
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
r1 := TrackBar1.Position;
r2 := IntToHex(r1, 2);
hex := '$' + b2 + g2 + r2;
Shape1.Brush.Color := StringToColor(hex);
end;
Ach ja: Farben werden in Delphi übrigens "rückwärts" definiert. Also nicht RRGGBB, sondern BBGGRR