![]() |
Delphi-Version: 10.3 Rio
ShowMessage oder Format kürzt Texte
Ich nutze
Delphi-Quellcode:
ShowMessage(Format('Script für Version "%s" unter "%s" nicht gefunden!' + #10#13#10#13 + 'Abbruch!', [PLC_VER, ScriptName]));
zum Anzeigen einer Datei inkl. Pfad. Da der Pfad aber relativ lang ist, kürzt entweder ShowMessage oder Format den String des Pfades. Die fehlenden Zeichen werden durch "..." dargestellt. Diese sind aber für meine Anwendung die wichtigen Infos, da es viele Parallelpfade gibt, die ähnlich heißen. Kann ich Delphi dazu bringen, den kompletten Pfad anzuzeigen? |
AW: ShowMessage oder Format kürzt Texte
Hallo,
Bau den String normal mit IntToStr zusammen. |
AW: ShowMessage oder Format kürzt Texte
Bei mir wird mit Format() nix abgeschnitten. Das scheint wohl an der Länge zu liegen. IntToStr() bringt da nicht viel. Das Problem ist ShowMessage().
|
AW: ShowMessage oder Format kürzt Texte
Nimm Taskdialog (
![]() |
AW: ShowMessage oder Format kürzt Texte
Leider ein Windows-Problem, was ich auch schon ewig extrem krank finde, aber da gibt es leider keine Lösung.
Nicht-umbrechbare Wörter werden nicht umgebrochen und bei zu breit wird die Zeile abgeschnitten, selbst wenn in der Breite eigentlich noch tausende Pixel plätz wären, würde der Dialog breiter werden. Einige Lösung, du mußt selber Trennzeichen in zu lange Wörter einfügen, also entweder an passenden Stellen einen Zeilenumbruch oder ein Leerzeichen, oder einfach alle x zeichen ein zerospace-whitespace einfpgen, z.B. alle \ durch \+zs ersetzen, wo Windows wieder nach belieben es umbrechen kann, wenn nötig. UND bei dem #10#13#10#13 .... entweder du machst es richtig, oder du lässt es bleiben, denn es heißt #13#10#13#10. Oder einfach immer nur #10, was Delphi und Windows an den meisten Stellen auch versteht. bzw. man nehme die Konstante ![]() Deine Variante sind jedenfalls 3 Zeilenumbrüche #10+#13#10+#13 und hier sogar in allen möglichen Kombinationen, wo gern mal das eine oder andere Programm durchdreht, wenn es sowas bekommt. PS: Delphi-Dialoge haben, so wie auch die Windows-Dialoge, eine Copy-Funktion drin. Strg+C und man bekommt den Inhalt des Dialogs als Text, welcher z.B. in einen Texteditor kopiert werden kann, wo dann der komplette Text drin steht. Das hilft auch bei ungemein vielzuvielen Zeilen, wenn der Dialog keine Scrollbar bietet. |
AW: ShowMessage oder Format kürzt Texte
Zitat:
|
AW: ShowMessage oder Format kürzt Texte
Pssst, Delphi hat eine Abwärtskompatibilität, die auch in neueren Windows manchmal zum Zuge kommt.
ShowMessage bzw. MessageDlg schalten auf VCL um verwenden statt der DialogAPI (MessageBox und Verwadte) eine TForm mit TLabel und paar TButtons, und die kann man auch gezielt verwenden. Witzig ist dort, dass man da z.B. auch die Captions der Buttons ändern kann. Nur bei einem kommt diese Delphi-Funktion nicht ganz dem Windows-Styleguide hinterher, wo z.B. Trennlinen und abgesetzte Farben zu den Buttons existieren oder wie sich im laufe der Jahre die Buttons verschoben. (mitte, links oder rechts) Über die WinAPI hat man den Vorteil immer einen Dialog nach dem aktuellen Design/Style-Guide des OS zu bekommen und bei dem Anderen kann man nach blieben an der Delphi-Form rumpfuschen, bevor/nachdem sie angezeigt wird. ShowMessage -> ShowMessagePos -> MessageDlgPos -> MessageDlgPosHelp -> DoTaskMessageDlgPosHelp bzw. ![]()
Delphi-Quellcode:
function MessageDlgPosHelp(...): Integer;
begin if TOSVersion.Check(6) and UseLatestCommonDialogs and IsNewCommonCtrl and StyleServices.IsSystemStyle then Result := DoTaskMessageDlgPosHelp('', Msg, DlgType, Buttons, HelpCtx, X, Y, HelpFileName) else Result := DoMessageDlgPosHelp(CreateMessageDialog(Msg, DlgType, Buttons), HelpCtx, X, Y, HelpFileName); end; Und ja, bei Datei>Neu gibt es im Delphi auch einige Vorlagen für Dialoge (Panels und Buttons). |
AW: ShowMessage oder Format kürzt Texte
Danke für eure Hinweise. Ich dachte, es gibt bei ShowMessage einen Parameter, der etwas kürzt oder eben nicht.
Im Moment habe ich den String so gekürzt, damit man das besser sieht, aber später muss ich mir mal eure Hinweise näher anschauen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz