ShowMessage

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
tolleware
Beiträge: 9
Registriert: Fr 1. Mär 2024, 13:45

ShowMessage

Beitrag von tolleware »

Hallo,
ich möchte einen Info-Text ausgeben und benutze dazu "ShowMessage(textmeldung)", wobei "textmeldung" vom Type String ist, und mit +sLineBreak formatiert ist.
D.h. die Zeilenende lege ich mit sLineBreak fest : textmeldung:='lange textzeile'+sLineBreak+'noch eine lange textzeile'+sLineBreak+'eine weitere lange textzeile'+sLineBreak;
Nun ist eine Textzeile breiter als 80 Zeichen und die Meldung wird automatisch umgebrochen.
Wie bekomme ich eine breitere Textausgabe hin
Oder was für Alternativen habe ich ?
Gruß
Uli

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6770
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: ShowMessage

Beitrag von af0815 »

Erstmal ist das Problem, das das Widgetset/Betriebssystem spezifisch ist, ob und wo umgebrochen wird.

Was man machen kann, ist sich einen solchen Dialog selbst zu erstellen, dann hast du alles in der Hand. Ansonsten fällt mir einmal nichts dazu ein.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

tolleware
Beiträge: 9
Registriert: Fr 1. Mär 2024, 13:45

Re: ShowMessage

Beitrag von tolleware »

Hallo,
Danke für die Antwort.
Selber einen Dialog zu machen, ist mir aber zu aufwändig.
Gibt es sowas nicht schon fertig irgendwo (möglichst umsonst) ?

Bei der Gelegenheit:
Wie muss ich es machen, dass der Dialog sich automatisch schließt ?
Beispiel:
Programm startet
Meldungsbox "Initialisierung läuft, bitte warten..."
Wenn Prog.Init. fertig ist, soll sich die Messagebox automatisch schließen

Gruß
Uli

Benutzeravatar
kralle
Lazarusforum e. V.
Beiträge: 1196
Registriert: Mi 17. Mär 2010, 14:50
OS, Lazarus, FPC: Manjaro Linux, Mint und Windows 10 ,Lazarus 3.99, FPC-Version: 3.3.1
CPU-Target: 64Bit
Wohnort: Bremerhaven
Kontaktdaten:

Re: ShowMessage

Beitrag von kralle »

Moin,
tolleware hat geschrieben: Fr 13. Sep 2024, 15:06 Gibt es sowas nicht schon fertig irgendwo (möglichst umsonst) ?
Du könntest eine TMemo nehmen und den Text dort reinschreiben (Immer so viele Zeichen pro Zeile wie Du möchtest.
Dann schaltetest Du die Editierbarkeit ab und spielst noch ein wenig mit den Eigenschaften des Rahmen.
tolleware hat geschrieben: Fr 13. Sep 2024, 15:06 Bei der Gelegenheit:
Wie muss ich es machen, dass der Dialog sich automatisch schließt ?
Beispiel:
Programm startet
Meldungsbox "Initialisierung läuft, bitte warten..."
Wenn Prog.Init. fertig ist, soll sich die Messagebox automatisch schließen

Code: Alles auswählen

TMemo1.Close;
Gruß Kralle
OS: Manjaro Linux, Linux Mint und Windows 10
FPC-Version: 3.3.1 , Lazarus 3.99
+ Delphi XE7SP1

wp_xyz
Beiträge: 5142
Registriert: Fr 8. Apr 2011, 09:01

Re: ShowMessage

Beitrag von wp_xyz »

Nimm den TaskDialog. Schreibe den Text in die gleichnamige Property und ändere Width vom Defaultwert 0 auf einen Wert entsprechend deiner Stringlänge (in Pixeln). Darüber bietet TTaskDialog eine Vielzahl von Möglichkeiten (https://specials.rejbrand.se/TTaskDialog/):

Code: Alles auswählen

procedure MyShowMessage(AMsg: String; AWidth: Integer = 0; ACaption: String = ''; ATitle: String = '');
var
  T: TTaskdialog;
begin
  T := TTaskDialog.Create(nil);
  try
    T.Text := AMsg;
    T.Width := AWidth;
    T.Caption := ACaption;
    T.Title := ATitle;
    T.Execute;
  finally
    T.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  msg: string =
    'Das ist eine sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr, sehr lange Meldung.' + LineEnding +
    'Und noch eine Zeile.' + Lineending +
    'Und noch eine...';
begin
  MyShowMessage(msg, 600, 'Meldung', 'Meldungstext');
  MyShowMessage(msg);
end; 

Antworten