• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 183
  • Last Modified:

Dealing with text width (in pixels)

I am trying to build the following.

Small form containing a panel containing a label.

The purpose of this form is to flash a message to the user on screen.  There are no buttons.  The form is closed automatically by a timer.

So far so good and I think I've got most of this working sort of satisfactorily.

The procedure creating the form is as follows.

procedure TfmMDIParent.FlashMsg(Text : string ; Duration : Integer);
begin
 fmflashmessage := TfmFlashmessage.Create(self);
 fmFlashmessage.Label1.Caption := Text;
 fmFlashmessage.Timer1.Interval := Duration;
 fmFlashmessage.ShowModal;
 FreeAndNil(fmFlashmessage);
end;


The code of the flash message form is as follows

procedure TfmFlashmessage.FormCreate(Sender: TObject);
begin
// Label1.Caption := ' ';
 timer1.enabled := true;
//fmFlashmessage.Position := poScreenCenter;
end;

procedure TfmFlashmessage.Timer1Timer(Sender: TObject);
begin
 timer1.Enabled := false;
 fmFlashmessage.Close;
end;

procedure TfmFlashmessage.FormActivate(Sender: TObject);
begin
 fmFlashmessage.Width := 8 * length(label1.Caption);
end;

My question concerns the line

 fmFlashmessage.Width := 8 * length(label1.Caption);

It seems to me that this is a very crude way of making sure that the form / panel / label are wide enough to cope with a caption of

"mmm mmm mmm mmm mmm mmm mmm mmm mmm mmm mmm mmm "

but it looks a bit silly if the caption is

"iii iii iii iii iii iii iii iii iii iii iii iii "

How do I get at the width of the text in a more sensible manner.

Thank you

John

0
jbeh
Asked:
jbeh
1 Solution
 
TOndrejCommented:
with fmFlashMessage do
  Width := Canvas.TextWidth(Label1.Caption) + SomeMargin;
0
 
MadshiCommented:
Or set the label to AutoSize, then ask the width of it.
0
 
kretzschmarCommented:
too late :-(
0
Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

 
jbehAuthor Commented:
Thank you all - I'll try TOndrej's solution first on the probably somewhat flimsy grounds that on the face of it this will work without having to worry about the autosize setting.

John
0
 
jbehAuthor Commented:
Hi All - Thanks all.

Easy when you know how :-)

John
0
 
jbehAuthor Commented:
Good quick succint (?sp) answer

Thank you.

John
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now