Hi,
ich möchte gerne in eiuner Anwendung, einen eigenen MessageDlg verwenden.
Ich habe das ganze auch schon fast geschafft,
allerdings habe ich ein paar kleine Probleme die richtige Breite und Höhe
für die "Message" zu berechnen.
Die Message soll in einem Label dargestellt werden.
Das Label ist über Anchors so gesetzt das es sich in alle Richtungen
vergrößert. Ausserdem ist die Eigenschaft "WordWrap" auf "true" gesetzt.
Ich habe jetzt in folgendem Quellcode versucht über Textwidth und TextHeight die Daten zu berechnen.
Allerdings liefert das ganze bei längeren Texten das falsche Ergebnis.
Hat jemand eine Ahnung warum ? Bzw. Hat jemand eine bessere Idee ?
Delphi-Quellcode:
// use Stringlist to detect line breaks
strL := TStringList.Create;
try
strL.Text := MsgText;
// init with 0
iWidth := 0;
// Checkout length of each line
for i := 0 to strL.Count - 1 do begin
iTmp := lab_Message.Canvas.TextWidth(strL[i]);
if iTmp > iWidth then
iWidth := iTmp;
end;
// check minimum width
if iWidth < 235 then
iWidth := 235;
// set form with(label width + width for other controls)
self.Width := iWidth + 50;
// calculate height
iTmp := (lab_Message.Canvas.TextHeight(msgText)+2) * strL.Count;
// add height for other controls
inc(iTmp,120);
// set height
self.Height := iTmp ;
finally
FreeAndNil(strL);
end;
// center ok button
cmd_OK.Left := (self.Width div 2) - (cmd_ok.Width div 2);
// set label caption
lab_Message.Caption := msgText;
show;
Danke und Gruß Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.