AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen?
Thema durchsuchen
Ansicht
Themen-Optionen

CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen?

Ein Thema von DieDolly · begonnen am 10. Jun 2019 · letzter Beitrag vom 11. Jun 2019
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

CreateMessageDialog Message zu lang. Zeilenumbruch nach 75 Zeichen?

  Alt 10. Jun 2019, 15:21
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.
 MsgStr := WrapText(MsgStr , sLineBreak, ['.', ' ', #9, '-'], 75);

Geändert von DieDolly (10. Jun 2019 um 15:55 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 10. Jun 2019, 16:15
Moin...
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.

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.
Miniaturansicht angehängter Grafiken
dialog.png  
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 10. Jun 2019, 16:21
In System.SysUtils gibt es eine Funktion WrapText. Vielleicht ist die hier hilfreich?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.444 Beiträge
 
Delphi 11 Alexandria
 
#4

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

  Alt 11. Jun 2019, 12:21
Vorteile:
1. Corporate Design
Das halte ich eher für einen Nachteil
Noch etwas in die Runde werf: wie wärs mit Taskdialog?
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#5

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

  Alt 11. Jun 2019, 13:01
Ich bin eine von wenigen die noch XP unterstützen. Daher nein.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.444 Beiträge
 
Delphi 11 Alexandria
 
#6

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

  Alt 11. Jun 2019, 13:57
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.)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#7

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

  Alt 11. Jun 2019, 14:32
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.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
DasWolf

Registriert seit: 7. Jun 2016
76 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8

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

  Alt 11. Jun 2019, 16:25
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.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

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

  Alt 11. Jun 2019, 16:34
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

Geändert von EWeiss ( 9. Jul 2019 um 09:31 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 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