Solved

Making a Custom Caption Bar

Posted on 2004-10-05
8
530 Views
Last Modified: 2010-04-05
I need to make the caption bar on my main form wider to make it stand out from other forms/frames on the screen.
Also I need to put a bitmap or glyph logo on the left side of the bar.

I have been reading questions that involve the use of system metrics.  Is this the best way to go ?  What are the index values for system metrics ?  Can you set them in the same way ?

Or any other ideas ...

Any help appreciated

Thanks
Richard
0
Comment
Question by:diver999
  • 5
  • 2
8 Comments
 
LVL 33

Expert Comment

by:Slick812
ID: 12229159
hello diver999 , drawing your own caption bar on a non-caption window is not so easy, and there are several factors you may need to code for. .
There is code at this EE question, that does a custom painted caption bar -


http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20462056.html

you might look at this and get some ideas about how to do it. .

this seems to give you a caption heught mesurement -

captionHeight := GetSystemMetrics(SM_CYCAPTION);
0
 
LVL 1

Expert Comment

by:Bart_Thomas
ID: 12229182
Check: http://www.g32.org/vcl/index.html 
There's an example how to create your own "toolbar".
0
 
LVL 33

Expert Comment

by:Slick812
ID: 12229217
and, as a note, that was done before the XP Theme and it's new caption look,
0
 

Author Comment

by:diver999
ID: 12256611
Where can I fiind the meanings and index constants for SystemMetrics ?
Is there a similar command for setting the parameters ?

R
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 33

Expert Comment

by:Slick812
ID: 12261478
???
I guess you mean the index constants for "GetSystemMetrics" ?
not sure how to answer? The GetSystemMetrics( ) function is a windows API function, which is in the Delphi windows.pas unit. .
For basic usage information for the windows API methods and structures, I look in the Win32  API  Help that comes with Delphi. . . If you want more recent API information you can use the MSDN web site, the Library is a good place to start  , , at -

http://msdn.microsoft.com/library/default.asp

use the "Search For" to find info, ,

you can see about the GetSystemMetrics function at -

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getsystemmetrics.asp

as for setting some system parameters. . . I do not remember anything for setting that, but you can look at the SystemParametersInfo( ) function at -

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/systemparametersinfo.asp

But I know from experience, if you change a system paramterer, and your users notice it, they will   LOUDLY   complain about it! ! !


0
 

Author Comment

by:diver999
ID: 12267372
That's some good information...

I am relaxed about complaints because this is for a dedicated application.

I have been able to change things like COLOR_INACTIVETEXT, using SetSysColors.  However, one thing I really want to do is change COLOR_INACTIVECAPTION and COLOR_GRADIENTINACTIVECAPTION but, although I can see the screen refresh, no colour change takes place.

Also, using SPI I can increase the height of the caption bar - but when I do this, it applies to everything.  Do you know if there is there any way of applying it to just one form ???

Thanks for your interest
Richard
0
 
LVL 33

Expert Comment

by:Slick812
ID: 12268569
I have seen questions here at EE about changing just one form's caption bar (height, color, buttons) and not other forms captions, and in those questions it was the opinion of several, that this is not posible (and I also think that, is NOT posible), but there may be some new XP thing that I do not know about, however, I really doubt it, , , I do not think the system will draw a custom caption for you. . .

as to the SetSysColors not showing, I really am not sure about this, and have no direct experiece with trying to do that,, , , but my thought is - - it may be that you will need to refresh the windows (have them redrawn) to change their color, if this does not work maybe a reboot? I can not remember much about that, I think some changes require a reboot? I may can find something about that, but I don't have much time now to research that, sorry.
0
 
LVL 33

Accepted Solution

by:
Slick812 earned 200 total points
ID: 12269042
if you are not in XP themes then you might consider code like this to draw a caption bar -

procedure DoCapDraw;
var
fDC: HDC;
RectR: TRect;
begin
fDC := GetDC(hForm1);
SetRect(RectR,30,101,430,127); // use a Rect at the top, this only for example
DrawCaption(hForm1, fDC, RectR, DC_ACTIVE or DC_ICON or DC_TEXT or DC_GRADIENT);
SetRect(RectR,407,107,424,122);
DrawFrameControl(fDC,RectR,DFC_CAPTION,DFCS_CAPTIONCLOSE);
ReleaseDC(hForm1, fDC);
end;

if you want XP  theme look then it gets more complicated, you might could use the  DrawThemeBackground( ) function with the WP_CAPTION  and CS_ACTIVE parameters, , , you could try the  WP_MINBUTTON and MINBS_NORMAL for the minimize buttom
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
PDF library for Delphi 2 105
problem when i try to pack my dll file with upx 9 71
JAudiorecorder record freezing the app 29 60
update joined tables 2 31
Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
This Micro Tutorial will give you a basic overview how to record your screen with Microsoft Expression Encoder. This program is still free and open for the public to download. This will be demonstrated using Microsoft Expression Encoder 4.
In this video I am going to show you how to back up and restore Office 365 mailboxes using CodeTwo Backup for Office 365. Learn more about the tool used in this video here: http://www.codetwo.com/backup-for-office-365/ (http://www.codetwo.com/ba…

910 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

Need Help in Real-Time?

Connect with top rated Experts

21 Experts available now in Live!

Get 1:1 Help Now