![]() |
ungekürzten Link in Meldungsfenster anzeigen
Liste der Anhänge anzeigen (Anzahl: 3)
Hallo Zusammen,
ich habe einen Link, den ich in einer Meldung anzeigen lassen möchte. Verwende ich MessageDlg, dann wird mir der Link abgeschnitten. Das selbe bei TaskDialog. Nur bei einer MessageBox funktioniert es. Da sie aber so oldschool ausschaut, möcht ich sie nicht nehmen. Schön wäre entweder MessageDlg oder TaskDialog. Gibt es da Möglichkeiten, den Link komplett anzeigen lassen zu können? Im Forum habe ich ein paar Threads gefunden, aber da kommt wird immer auf MessageBox verwiesen. Schön wäre es den TaskDialog verwenden zu können. Selbst wenn ich den Link TaskDialog.ExpandedText zuweise, wird dieser dort abgeschnitten. Mein Testcode mit dem Link, um die unterschiedlichen Meldungsfenster testen zu können:
Delphi-Quellcode:
Anbei drei Bilder der verschiedenen Meldungsfenster.
procedure TForm3.Button1Click(Sender: TObject);
const // Msg6 = 'Link: "%s" nicht erreichbar!' + sLineBreak + 'Es konnten keine Daten ausgelesen werden!'; Msg6 = '"%s"'; var Link: String; begin Link := 'https://www.benzinpreis.de/statistik.phtml?waehrung=EUR&einheit=Liter'; // Link := 'https://www.benzinpreis.de/statistik.phtml?waehrung=EUR'; // Link := 'safasfasffäldsjflkaösjfklasjfösjfklasöjfaslkdfjlöasjflödsaflködsf'; case RadioGroup1.ItemIndex of 0: begin MessageDlg(Format(Msg6, [Link]), mtError, [mbOk], 0, mbOk); end; 1: begin TaskDialog1.Caption := 'Fehler'; TaskDialog1.Title := Format(Msg6, [Link]); // TaskDialog1.ExpandedText := Link; TaskDialog1.MainIcon := tdiError; TaskDialog1.Execute; end; 2: begin Application.MessageBox(PWideChar(Format(Msg6, [Link])), 'Fehler', MB_OK); // [smbOK] end; end; end; |
AW: ungekürzten Link in Meldungsfenster anzeigen
Probier mal
Delphi-Quellcode:
Windows.MessageBox(PChar(Format(Msg6, [Link])), 'Fehler', MB_OK or MB_ICONERROR);
|
AW: ungekürzten Link in Meldungsfenster anzeigen
Du kannst nur selbst Zeilenumbrüche einbauen.
MessageDlg nutzt standardmäßig den TTaskDialog, außer in uralten Windowsen, oder wenn man es abschaltet, dann wird ein nachgebauter VCL-Dialog auf Basis von TForm generiert. > ![]() ![]() PS: Mit Strg+C bekommst du den ungekürzten Inhalt des Dialogs (egal ob WinAPI oder VCL) ... und dann via Strg+V in irgendeinen Texteditor. |
AW: ungekürzten Link in Meldungsfenster anzeigen
Eine offensichtliche Option wäre es auch, ein eigenes Dialogfenster zu bauen, was sich so verhält und aussieht wie gewünscht.
War bei mir bisher noch nicht nötig, sollte sich vom Aufwand her aber stark in Grenzen halten. |
AW: ungekürzten Link in Meldungsfenster anzeigen
Man könnte bestimmt auf Basis von CreateMessageDialog da etwas machen, ohne all zu viel selbstmachen zu müssen.
Alternativ gibt es in der Objektgalerie auch ein paar Dialog-Templates > Datei > Neu > Weitere > Suche: Dialogfeld bzw. > Datei > Neu > Weitere > Delphi-Projekte > Einzelne Dateien > ... Oder eben eine komplett eigene TForm, mit TLabel, TButton und so. |
AW: ungekürzten Link in Meldungsfenster anzeigen
Irgendwie hab ich solche Antworten schon befürchtet und erwartet.
Ich glaube ich lasse den Link einfach aus der Meldung rausfallen, macht die Sache auch einfacher. Danke an euch alle |
AW: ungekürzten Link in Meldungsfenster anzeigen
Mit TLinkLabel, anstatt TLabel, kannst'e den Link auch anklickbar machen. :stupid:
Wobei ich dachte, dass der TaskDialog sowas auch bieten könnte. Oder einen Knopf, welcher die URL im Browser öffnet. |
AW: ungekürzten Link in Meldungsfenster anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
Biete doch einfach an, den Link in die Zwischenablage zu kopieren.
// EDIT: Oder du verwendest Links im Taskdialog. Dann wird der Link wie ich gerade feststelle auch komplett angezeigt und kann zudem angeklickt werden:
Delphi-Quellcode:
Anhang 57395
uses
Winapi.CommCtrl, Winapi.ShellAPI; const TDF_ENABLE_HYPERLINKS = $0001; function TaskDialogCallback(hwnd: HWND; msg: UINT; wParam: WPARAM; lParam: LPARAM; lpRefData: LONG_PTR): HRESULT; stdcall; begin Result := S_OK; if msg = TDN_HYPERLINK_CLICKED then begin ShellExecute(0, 'open', PChar(lParam), nil, nil, SW_SHOWNORMAL); end; end; procedure ShowTaskDialog(const AContents: string); var Config: TTaskDialogConfig; Res: Integer; begin FillChar(Config, SizeOf(Config), 0); Config.cbSize := SizeOf(Config); Config.hwndParent := 0; Config.dwFlags := TDF_ENABLE_HYPERLINKS; Config.pszWindowTitle := 'Linkbeispiel'; Config.pszMainInstruction := 'Klick bitte hier:'; Config.pszContent := PChar(AContents); Config.pfCallback := @TaskDialogCallback; Res := TaskDialogIndirect(Config, nil, nil, nil); end; procedure TForm281.Button1Click(Sender: TObject); begin ShowTaskDialog('Der Link ist <a href="https://www.benzinpreis.de/statistik.phtml?waehrung=EUR&einheit=Liter">https://www.benzinpreis.de/statistik.phtml?waehrung=EUR&einheit=Liter</a>!'); end; |
AW: ungekürzten Link in Meldungsfenster anzeigen
I used in many projects my own custom message box for notifications and error reporting, found using TMemo is way better than TLabel as it allow copying the content, even though it does copy the content by CTRL+C, but to allow to the end user to select and copy the content is nice feature, and when links/actions are needed, by that i mean either opening a WWW hyper link or a local folder link or an action in the application, i used THtmlPanel from Delphi HTML library, and when it is not possible due the request of the client (no license) i replace the THtmlPanel with TRichEdit.
|
AW: ungekürzten Link in Meldungsfenster anzeigen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 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