Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi MessageDlg : Anzeigetext mit Datenbankfeldern - Code kürzen? (https://www.delphipraxis.net/80786-messagedlg-anzeigetext-mit-datenbankfeldern-code-kuerzen.html)

Ines 15. Nov 2006 11:05


MessageDlg : Anzeigetext mit Datenbankfeldern - Code kürzen?
 
Hallo,

ich gebe in meinem Programm an verschiedenen Stellen Fehlermeldungen / Hinweistext
nach folgendem "Strickmuster" aus:

Delphi-Quellcode:
if MessageDlg('Der (Vor-/Nach)Name wurde geändert.' + #13#10#10 +
      'alter Eintrag :' + Patname_Oldvalue + ' ' + VName_Oldvalue +
      #13#10 + 'neuer Eintrag :' + SQL_PatientPATNAME.AsString +
      ' ' + SQL_PatientVNAME.AsString + #13#10#10 +
      'Soll diese Änderung rückgängig gemacht werden? ' + #13#10,
      mtWarning, [mbYes, mbNo], 0) = mrYes then....
Es ist möglich, einen Text als Konstante zu definieren, und dann den Code
folgendermasen zu verkürzen:

Delphi-Quellcode:
if MessageDlg (Ausgabetext,mtWarning,[mbYes,mbNo],0...
Gibt es eine Möglichkeit eine Konstante o.ä. zu definieren und die variablen Teile
nachträglich einzutragen? Oder lös' ich das Problem mit einer Funktion?
Hintergrund: Der Code ist inzwischen sehr unübersichtlich - aber ich muß bei
verschiedenen Fehlern richtige Romane schreiben....!

Vielen Dank für Eure Hilfe
Ines

SirThornberry 15. Nov 2006 11:09

Re: MessageDlg : Anzeigetext mit Datenbankfeldern - Code kür
 
wenn du mit Format arbeitest könntest du den Formatstring als Constante declarieren.

hoika 15. Nov 2006 11:12

Re: MessageDlg : Anzeigetext mit Datenbankfeldern - Code kür
 
Hallo,

schreibe eigene Funktion MBError,
die intern das gewünschte tut.

Delphi-Quellcode:
procedure MBError(const Msg1: String);
begin
  Screen.Cursor:= crDefault;

  MessageDlg(Msg1, mtError, [mbOk], 0);
end;
Und die Funktino kannst du dann überladen,
um ähnliche Sachen anzuzeigen.


Heiko

Muetze1 15. Nov 2006 11:16

Re: MessageDlg : Anzeigetext mit Datenbankfeldern - Code kür
 
Delphi-Quellcode:
ResourceString/Const
  coForenameChanged = 'Der (Vor-/Nach)Name wurde geändert.'#13#10#10'alter Eintrag : %s %s'#13#10 + 
                      'neuer Eintrag : %s %s'#13#10#10'Soll diese Änderung rückgängig gemacht werden? '#13#10;

...

Begin
  if MessageDlg(Format(coForenameChanged, [Patname_Oldvalue, VName_Oldvalue, SQL_PatientPATNAME.AsString,
                                           SQL_PatientVNAME.AsString]), mtWarning, [mbYes, mbNo], 0) = mrYes then....
Um den Vorschlag mit Format mal etwas zu präzisieren.

Ines 15. Nov 2006 11:46

Re: MessageDlg : Anzeigetext mit Datenbankfeldern - Code kür
 
Vielen Dank für Eure schnelle Hilfe!
Den Hinweis von Sir Thornberry habe ich dank des Codes von Muetze1 bereits in mein Programm eingebaut.

Heiko: Das mit dem Überladen der Funktion muß ich mir nochmals durch den Kopf gehen lassen - ganz verstanden hab' ich es noch nicht.

Grüße
Ines


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 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