Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Formatieren mit "format" (https://www.delphipraxis.net/108025-formatieren-mit-format.html)

KPBecker 6. Feb 2008 15:10


Formatieren mit "format"
 
Hallo, Delphi-Praktiker,

ich möchte in einer Message-Box mehrere Zeilen mit Text und Zahlen in Spalten sauber untereinander ausgeben.

Meine Versuche, das mit der function "format" zu erreichen, schlugen bisher fehl:
Wahrscheinlich durch die proportionale Schrift stehen die Spalten ziemlich wild untereinander.

Wie kann ich das Ziel erreichen ?

Wie kann ich den Font für die Message-Box notfalls auf Courier ändern (nicht-proportionale Schrift) ?

Kann man evtl. mit einem Tabulator arbeiten, dessen Position und Lage (rechts-, linksbündig) definiert ist ?

Vielen Dank,
Klaus-Peter

marabu 6. Feb 2008 18:01

Re: Formatieren mit "format"
 
Hallo Klaus-Peter,

ich bin ziemlich sicher, dass deine Idee realisierbar ist, aber ich würde das nie so anfassen. Der Aufwand steht einfach in keinem Verhältnis zum Nutzen. Warum baust du dir nicht schnell einen eigenen Dialog mit den gewünschten Fähigkeiten?

Freundliche Grüße

bitsetter 7. Feb 2008 00:05

Re: Formatieren mit "format"
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ansonsten geht es auch etwas komplizierter.
Delphi-Quellcode:
uses ComCtrls, ExtCtrls;

function MessageDlgEx(const MsgCaption, Msg: String; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons; HelpCtx: Longint): Integer;
var
  i, NewHeight: Integer;
  Lv: TListView;
  Dlg: TForm;
  LItem: TListItem;
  LiColumn: TListColumn;
  Img: TComponent;
begin
  Dlg:= CreateMessageDialog(Msg, DlgType, Buttons);
  with Dlg do
  try
    Caption := MsgCaption;
    HelpContext := HelpCtx;
    Lv:= TListView.Create(Dlg);
    Lv.Top := 5;
    Lv.Left := 5;
    Lv.Width := Dlg.ClientWidth-  Lv.Left * 2;
    Lv.Height := 50;
    Lv.Parent := Dlg;
    Lv.Color := Dlg.Color;
    Lv.BorderStyle := bsNone;
    Lv.ViewStyle := vsReport;
    Lv.ShowColumnHeaders := false;
    LiColumn := Lv.Columns.Add;
    LiColumn := Lv.Columns.Add;

    LItem := Lv.Items.Add;
    LItem.Caption := 'Zeile1';
    LItem.SubItems.Add('567');

    LItem := Lv.Items.Add;
    LItem.Caption := 'Zeile2';
    LItem.SubItems.Add('789');

    LItem := Lv.Items.Add;
    LItem.Caption := 'Zeile3';
    LItem.SubItems.Add('679');
    TImage(FindComponent('Image')).Visible:= false;

    for i := 0 to Pred(ComponentCount) do
      if Components[i] is TButton then
      begin
        NewHeight:= (Lv.Top* 2 + Lv.Height)- TButton(Components[i]).Top;
        if NewHeight> 0 then
          TButton(Components[i]).Top := TButton(Components[i]).Top + NewHeight
        else
          NewHeight := 0;
      end;
       Height := Height + NewHeight;
    Result := ShowModal;
  finally
    Free;
  end;
End;

procedure TForm1.Button1Click(Sender: TObject);
begin
if MessageDlgEx('Test', '', mtConfirmation, mbOKCancel   , 0) = mrYes then
   ShowMessage('Ok');
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz