Autor Beitrag
hRb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79
Erhaltene Danke: 2



BeitragVerfasst: Di 13.06.17 00:16 
Hallo, suche mal wieder Hilfe
Über das MainMenü rufe ich mehrere Bedienhilfe-Texte per MessageDlg auf. Ebenso per MessageDlg Fehlermeldungen oder Abfragen mit den Bedienbuttons: Ok, Abbruch.
Unter Delphi7 war das Anzeigefenster angemessen breit, angepasster Zeilen-Umbruch erfolgte mit #13#10. Etwas längere angezeigte Filepfade erfahren nun unschönen automatischen Umbruch.

Frage:
Wie kann ich auf einfache Art die Fensterbreite festlegen? Bei MessageDlgPos kann man die Pos(x,y)-Ecke festlegen, aber keine Fensterbreite. Habe ich einen entsprechenden Aufruf übersehen?
Sollte es keine "einfache" Lösung geben und der Vorschlag kommt: "erzeuge einen Dialog mit CreateMessageDialog" dann bitte ein funktionsfähiges Beispiel anhängen Habe schon experimentiert, kommen aber nicht zurecht.
hRb
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1455
Erhaltene Danke: 252

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Di 13.06.17 00:50 
Guten Abend hRb,

mit der Funktion SetWindowPos() könnte man einen Dialog anpassen, sofern man an sein Handle käme.

Mit CreateMessageDialog() geht es wie folgt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
// Aufruf
ShowSizedDlg('Überschrift''Meldung', Point(350350), 300150,
             mtInformation, [mbOK]);

procedure ShowSizedDlg(ACaption, AMsg: string; APos: TPoint; AWidth, AHeight: Integer;
  ADlgType: TMsgDlgType; AButton: TMsgDlgButtons);
var
  temp: TForm;
begin
  temp := CreateMessageDialog(AMsg, ADlgType, AButton);
  try
    temp.Caption := ACaption;
    temp.Left := APos.X;
    temp.Top := APos.Y;
    temp.Width := AWidth;
    temp.Height := AHeight;
    temp.ShowModal;
  finally
    temp.Free;
  end;
end;

_________________
„Wo andere blind der Wahrheit folgen, denk daran ... Nichts ist wahr!" (Assassin's Creed I-II)
hRb Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79
Erhaltene Danke: 2



BeitragVerfasst: Mi 14.06.17 18:35 
Hallo Frühlingsrolle,

Lass Dir einfach mal sagen: "DU BIST SPITZE"! Hast für fast alle Probleme eine Lösung.
Funktioniert auf Anhieb und Anpassungsaufwand ist nahezu Null.
Bleibt nur die Frage, warum Embarcadero alte Einstellungen ändert, bzw. solche Funktionen nicht im Standard hat (hoffentlich hört da einer von denen mit).
Herzlichen Dank
hRb

Für diesen Beitrag haben gedankt: Frühlingsrolle
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1455
Erhaltene Danke: 252

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Mi 14.06.17 19:34 
Gern geschehen, und danke! Es kommt nicht oft vor, dass man genau so einen Dialog braucht. Und wenn doch, dann benutzt man die CreateMessageDialog() Methode. Alternativ könnte man noch eine statische Klasse bereitstellen, die alle Möglichkeiten abdeckt, oder eine TForm samt TLabel und TButton zusammenstellen, und bei Bedarf aufrufen.
Da ist die Funktion doch wesentlich bequemer.

_________________
„Wo andere blind der Wahrheit folgen, denk daran ... Nichts ist wahr!" (Assassin's Creed I-II)