Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen? (https://www.delphipraxis.net/200948-createmessagedialog-message-zu-lang-zeilenumbruch-nach-75-zeichen.html)

DieDolly 10. Jun 2019 14:21


CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen?
 
Ich erzeuge meine eigenen Dialoge mit CreateMessageDialog. Bisher habe ich das Problem mit zu langen Zeilen mit manuellen Zeilenumbrüchen im String beseitigt.
Aber gibt es eine elegantere Lösung, den übergebenen String wie Windows nach rund 75 Zeichen umzubrechen?

Ich habe es so versucht aber das funktioniert nicht richtig mit der Zählung
Delphi-Quellcode:
 MsgStr := '1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1' + sLineBreak +
  '2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ' + sLineBreak + sLineBreak +
  '3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ';

 CharCount := 0;
 for i := 1 to Length(MsgStr) - 1 do
  begin
   Inc(CharCount);

   IsLineBreak := (Pos(sLineBreak, MsgStr) = i);
   if IsLineBreak or ((CharCount > 75) and (MsgStr[i] = ' ')) then
    begin
     if not IsLineBreak then
      Insert(sLineBreak, MsgStr, i + 1);

     CharCount := 0;
    end;
  end;
Ich glaube ich habe in der Doku eine Lösung gefunden.
Delphi-Quellcode:
 MsgStr := WrapText(MsgStr , sLineBreak, ['.', ' ', #9, '-'], 75);

haentschman 10. Jun 2019 15:15

AW: CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Moin...:P
Zitat:

Aber gibt es eine elegantere Lösung
Dieses Problem hatte ich auch mal. Die Texte kamen die so raus wie ich sie wollte. :? Abhilfe schaffte ein eigener MessageDialog. :thumb:

Im Prinzip eine stinknormale Form (Modal) mit der Optik, den Buttons und der Logik. Von dieser Form hat man die Möglichkeit durch Ableitungen andere Dialoge zu erstellen.

Delphi-Quellcode:
TMyMessageDialog = class
  strict private
    class function ShowMessage(MessageCaption: string; MsgType: TMsgDlgType; Buttons: TMsgDlgButtons; MessageLines: TStrings; Help: LongInt = 0; MessageColor: Integer = clBlack; Parent: TForm = nil): Integer;
  public
    constructor Create;
    destructor Destroy; override;
    class function MessageDlg(MessageText: string; MsgType: TMsgDlgType; Buttons: TMsgDlgButtons; Help: LongInt = 0; MessageColor: Integer = clBlack; Parent: TForm = nil): Integer; overload; // wie MessageDialog Original
    class function MessageDlg(MessageText: string; MessageHeader: string; MsgType: TMsgDlgType; Buttons: TMsgDlgButtons; MessageColor: Integer = clBlack; Parent: TForm = nil): Integer; overload;
    class function MessageDlg(MessageLines: TStrings; MessageHeader: string; MsgType: TMsgDlgType; Buttons: TMsgDlgButtons; MessageColor: Integer = clBlack; Parent: TForm = nil): Integer; overload;
    class function MessageDlg(E: EDatabaseError; MessageHeader: string; MsgType: TMsgDlgType; Buttons: TMsgDlgButtons; MessageColor: Integer = clBlack; Parent: TForm = nil): Integer; overload;
  end;
Vorteile:
1. Corporate Design
2. internationalisierbar
3. Farbgebung der Texte
4. Breite paßt sich den Texten an
5. Höhe paßt sich den Texten an
6. Texte als TStrings

...das wäre meine elegantere Lösung.

Uwe Raabe 10. Jun 2019 15:21

AW: CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen?
 
In System.SysUtils gibt es eine Funktion WrapText. Vielleicht ist die hier hilfreich?

freimatz 11. Jun 2019 11:21

AW: CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen?
 
Zitat:

Zitat von haentschman (Beitrag 1434288)
Vorteile:
1. Corporate Design

Das halte ich eher für einen Nachteil :twisted:
Noch etwas in die Runde werf: wie wärs mit Taskdialog?

DieDolly 11. Jun 2019 12:01

AW: CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen?
 
Ich bin eine von wenigen die noch XP unterstützen. Daher nein.

freimatz 11. Jun 2019 12:57

AW: CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen?
 
Ja. Das ist richtig. (Bei TMS gäbe noch etwas was den Taskdialog auch unter XP unterstützt, ich selber habe ich mich aber dagegen entschieden.)

jaenicke 11. Jun 2019 13:32

AW: CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen?
 
Zitat:

Zitat von haentschman (Beitrag 1434288)
Im Prinzip eine stinknormale Form (Modal) mit der Optik, den Buttons und der Logik.

Abgesehen von dem deutlichen Nachteil, dass der Message-Dialog dann nicht mehr nach Message-Dialog aussieht, sollte man dann zumindest Funktionen wie das Kopieren des Inhaltes des Textes hinzufügen, die der Standarddialog hat. Also sprich man drückt Strg + C und hat Überschrift, Text und Buttontexte in der Zwischenablage. Denn diese Funktion wird recht häufig verwendet.

DasWolf 11. Jun 2019 15:25

AW: CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen?
 
Zitat:

Zitat von jaenicke (Beitrag 1434337)
Zitat:

Zitat von haentschman (Beitrag 1434288)
Im Prinzip eine stinknormale Form (Modal) mit der Optik, den Buttons und der Logik.

Abgesehen von dem deutlichen Nachteil, dass der Message-Dialog dann nicht mehr nach Message-Dialog aussieht

Also das verbuche ich jetzt mal unter der Rubrik "Witz des Tages". Deutliche Nachteile existieren nicht.

EWeiss 11. Jun 2019 15:34

AW: CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen?
 
Zitat:

Zitat von DasWolf (Beitrag 1434354)
Zitat:

Zitat von jaenicke (Beitrag 1434337)
Zitat:

Zitat von haentschman (Beitrag 1434288)
Im Prinzip eine stinknormale Form (Modal) mit der Optik, den Buttons und der Logik.

Abgesehen von dem deutlichen Nachteil, dass der Message-Dialog dann nicht mehr nach Message-Dialog aussieht

Also das verbuche ich jetzt mal unter der Rubrik "Witz des Tages". Deutliche Nachteile existieren nicht.

@jaenicke
Manchmal wundere ich mich über einige deiner Aussagen speziell was Optik und Geschmack angeht.
Mache doch so wie ich.. und ja alle Message Dialoge sind vollständig anpassbar.

Zitat:

Aber gibt es eine elegantere Lösung, den übergebenen String wie Windows nach rund 75 Zeichen umzubrechen?
Warum sollte man das tun?
Der User ist König und möchte so viele Zeichen anzeigen wie er will.
Ich halte nichts von Standards ich überlasse es den Anwender wie er diese festlegt und stelle nur die Funktionsweise zur Verfügung.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz