Einzelnen Beitrag anzeigen

Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#1

Eigenen MessageDlg verwenden

  Alt 20. Jul 2006, 12:34
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.
  Mit Zitat antworten Zitat