Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ungekürzten Link in Meldungsfenster anzeigen (https://www.delphipraxis.net/216687-ungekuerzten-link-meldungsfenster-anzeigen.html)

Helmi 12. Feb 2025 15:31

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:
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;
Anbei drei Bilder der verschiedenen Meldungsfenster.

Dalai 12. Feb 2025 16:19

AW: ungekürzten Link in Meldungsfenster anzeigen
 
Probier mal
Delphi-Quellcode:
Windows.MessageBox(PChar(Format(Msg6, [Link])), 'Fehler', MB_OK or MB_ICONERROR);

himitsu 12. Feb 2025 16:21

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.
> Delphi-Referenz durchsuchenCreateMessageDialog wenn WindowsVersion<6 oder nicht IsNewCommonCtrl oder nicht Delphi-Referenz durchsuchenUseLatestCommonDialogs oder nicht TStyleManager.SystemHooks oder nicht ActiveForm.IsSystemStyle

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.

AuronTLG 12. Feb 2025 16:58

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.

himitsu 12. Feb 2025 17:10

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.

Helmi 12. Feb 2025 17:34

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

himitsu 12. Feb 2025 17:47

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.

jaenicke 12. Feb 2025 18:46

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:
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;
Anhang 57395

Kas Ob. 13. Feb 2025 10:47

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.

dummzeuch 13. Feb 2025 16:33

AW: ungekürzten Link in Meldungsfenster anzeigen
 
Zitat:

Zitat von Kas Ob. (Beitrag 1546148)
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.

You have some very sophisticated end users. Mine always send me a Word document into which they have pasted a screen shot of the whole desktop. This is even though my programs use a custom error dialog which can show detailed information in a memo, including the call stack. But since this requires them to click a "Details" button, I never get the call stack.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:54 Uhr.
Seite 1 von 2  1 2      

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