Solved

Changing The Colour Of A Component

Posted on 2006-10-21
6
1,563 Views
Last Modified: 2008-03-15
Is there an easy way to change the colour of a Delphi component when there isn't a Color property in the Object Inspector?

I have the TTrackbar component in mind (which looks awful when placed on a black form), but a method which could be applied regardless of the component would be useful.

Thanks

TenBaz
0
Comment
Question by:tdk_man
  • 3
6 Comments
 
LVL 28

Expert Comment

by:TName
ID: 17781595
As TTrackbar inherits the color of it's parent, the easiest way to do it would be to place the trackbar on a panel (e.g. the trackbar with alClient on a long narrow panel) and to give the panel the color you like.

Here's some code that exemplifies drawing a border in the trackbar:
http://www.delphipages.com/threads/thread.cfm?ID=78831&G=78821

Here you can use other system colors instead of COLOR_BTNFACE:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getsyscolor.asp
or declare a new color constant, e.g.:

procedure TForm1.TrackBarWndProc(var Message: TMessage);
const
NewColor:Cardinal = $00805C53;

and use it instead:
BtnFaceBrush := CreateSolidBrush(NewColor); //but then I'd change the name of the brush though...;)
0
 
LVL 28

Expert Comment

by:TName
ID: 17781700
>the easiest way to do it would be to place the trackbar on a panel...

Just found an easier way:

TWinControl(TrackBar1).Brush.Color:=clRed;
0
 
LVL 28

Accepted Solution

by:
TName earned 125 total points
ID: 17781710
No typecast required:

TrackBar1.Brush.Color:=clRed;
0
 
LVL 1

Author Comment

by:tdk_man
ID: 17783784
Thanks for the suggestions TName.

Changing the Brush colour works, but in doing so I have unfortunately discovered that I didn't have the problem I thought I had. Sorry about that.

What I hadn't realised was that it was the border around the component which was taking the colour of the background - I just thought it was transparent. I was therefore asking how to change the colour to one which it already was - if you see what I mean?... :)

So, realising this prior posting I would have asked a different question:

"If you drop a TTrackbar component onto a black form and the background becomes black you can't see the black tickmarks. Is there any way to change the colour of them so they are visible."

Actually the ability to change the colour of the trackbar groove and thumb would be nice too - but not really important.

TenBaz
0
 
LVL 1

Expert Comment

by:Computer101
ID: 21133071
Forced accept.

Computer101
EE Admin
0

Featured Post

Live: Real-Time Solutions, Start Here

Receive instant 1:1 support from technology experts, using our real-time conversation and whiteboard interface. Your first 5 minutes are always free.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
The uses clause is one of those things that just tends to grow and grow. Most of the time this is in the main form, as it's from this form that all others are called. If you have a big application (including many forms), the uses clause in the in…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
Established in 1997, Technology Architects has become one of the most reputable technology solutions companies in the country. TA have been providing businesses with cost effective state-of-the-art solutions and unparalleled service that is designed…

776 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question