Solved

Caption of a Form

Posted on 2003-11-14
10
401 Views
Last Modified: 2010-05-01
In VB4, how can I have the Caption of a Form not in upper left side (as usually), but in the middle? (I also do not like the solution  to type Spaces in the Caption Properties to move the Caption to the center)
0
Comment
Question by:giann
10 Comments
 
LVL 24

Expert Comment

by:R_Rajesh
ID: 9748911
Hi giann,

Try this:
http://www.ostrosoft.com/vb/projects/center.asp

Cheers!

Raj
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 9749372
hearing...
0
 
LVL 3

Expert Comment

by:Basker
ID: 9749404
The best way to do it is draw your own caption in the window.
Pls look for the article in MSDN

HOWTO: Draw a Custom Window Caption
ID: Q99046

This will give you enough information. But the code is in C, so you should convert it to Visual Basic

0
Optimizing Cloud Backup for Low Bandwidth

With cloud storage prices going down a growing number of SMBs start to use it for backup storage. Unfortunately, business data volume rarely fits the average Internet speed. This article provides an overview of main Internet speed challenges and reveals backup best practices.

 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 9749421
The short answer is that there is no way to center a caption on the form without adding spaces, either at design time, or in the resize event to keep it centered.

The long answer is that you can subclass your form and draw the non client area (title bar) yourself.  This has many headaches that go along with it.
0
 
LVL 9

Expert Comment

by:dancebert
ID: 9750157
The answer you don't want to hear is that the reason it's not easy to do this in VB is because having a window's caption left justified is a Windows GUI standard.  
0
 
LVL 16

Expert Comment

by:Richie_Simonetti
ID: 9750238
The drawback is: cost is too high for a little award.
0
 

Author Comment

by:giann
ID: 9750244
The code that R_Rajesh suggests works. It centers the form caption.
 
But the problem is that when I change (by right click on my screen) the windows theme in  screen properties from classical windows to Windows Xp, then the Caption of the Form moves a little more right and it is not centered any more.
(Otherwise I would have no problem to type spaces)
0
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 125 total points
ID: 9750297
The reason for this is that the code makes a guess as to how big the control box on the left, and the min/max/close buttons on the right are, by using the hard coded number 1300.

If WindowState <> vbMinimized Then
    If Width < iCap + 1300 Then Width = (iCap + 1300)
        Caption = String((Width - (iCap + 1300)) / (2 * i), " ") & txt
End If

When you change themes, the actual size of these controls changes and the code breaks.  In fact, if you take out the min/max buttons without changing themes the centering will be off.

The point is, there is no way to center the text exactly under all conditions.

Idle_Mind
0
 
LVL 1

Expert Comment

by:DeuceEE
ID: 9752387
Well, technically, you can predict any case and make it centered. But it's really a lot to go through -- API again! There's a function, I think, called GetSystemMetrics() and it returns a bunch of information about "anything" "measureable" in Windows. You can get the size of the min/max/close buttons, do the necessary calculations, and center accordingly using spaces. No one would ever want to do that, I tell you.
0
 
LVL 85

Expert Comment

by:Mike Tomlinson
ID: 9753175
You are right DeuceEE, I'm sure there is a way to correctly calculate the necessary number of spaces to center the caption.

My point was that there isn't a precise way to center the text using only the values returned from the Form.Width property combined with the width of the caption from the TextWidth() function.

Idle_Mind
0

Featured Post

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

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

Introduction I needed to skip over some file processing within a For...Next loop in some old production code and wished that VB (classic) had a statement that would drop down to the end of the current iteration, bypassing the statements that were c…
Introduction While answering a recent question about filtering a custom class collection, I realized that this could be accomplished with very little code by using the ScriptControl (SC) library.  This article will introduce you to the SC library a…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

777 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