AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dialogs.pas - MessageDlg erweitern

Ein Thema von Balu der Bär · begonnen am 11. Okt 2006 · letzter Beitrag vom 11. Okt 2006
Antwort Antwort
Balu der Bär
(Gast)

n/a Beiträge
 
#1

Dialogs.pas - MessageDlg erweitern

  Alt 11. Okt 2006, 15:54
Moin,

folgendes Problem: Und zwar bräuchte ich einen weiteren optionalen Button in einem MessageDlg. Daher versuche ich diesen Dialog etwas zu erweitern. Im Speziellen geht es um den Button mbSaveAll, welchen ich gerne hinzufügen möchte. Also in die Dialogs.pas gesprungen und Zeile 394 entsprechend angepasst:
Delphi-Quellcode:
type
  TMsgDlgType = (mtWarning, mtError, mtInformation, mtConfirmation, mtCustom);
  TMsgDlgBtn = (mbYes, mbNo, mbOK, mbCancel, mbAbort, mbRetry, mbIgnore,
    mbAll, mbNoToAll, mbYesToAll, mbHelp, mbSaveAll); //mbSaveAll hinzugefügt
  TMsgDlgButtons = set of TMsgDlgBtn;
Ebenfalls in den Zeilen um 2074 habe ich entsprechende Änderungen eingefügt:
Delphi-Quellcode:
var
  Captions: array[TMsgDlgType] of Pointer = (@SMsgDlgWarning, @SMsgDlgError,
    @SMsgDlgInformation, @SMsgDlgConfirm, nil);
  IconIDs: array[TMsgDlgType] of PChar = (IDI_EXCLAMATION, IDI_HAND,
    IDI_ASTERISK, IDI_QUESTION, nil);
  ButtonNames: array[TMsgDlgBtn] of string = (
    'Yes', 'No', 'OK', 'Cancel', 'Abort', 'Retry', 'Ignore', 'All', 'NoToAll',
    'YesToAll', 'Help', 'SaveAll');
  ButtonCaptions: array[TMsgDlgBtn] of Pointer = (
    @SMsgDlgYes, @SMsgDlgNo, @SMsgDlgOK, @SMsgDlgCancel, @SMsgDlgAbort,
    @SMsgDlgRetry, @SMsgDlgIgnore, @SMsgDlgAll, @SMsgDlgNoToAll, @SMsgDlgYesToAll,
    @SMsgDlgHelp, @SMsgDlgSaveAll);
  ModalResults: array[TMsgDlgBtn] of Integer = (
    mrYes, mrNo, mrOk, mrCancel, mrAbort, mrRetry, mrIgnore, mrAll, mrNoToAll,
    mrYesToAll, mrSaveAll, 0);
Dein Eintrag in der consts.pas (@SMsgDlgSaveAll) natürlich auch.

Trotzdem erhalte ich beim folgenden Code MessageDlg('Hier kann ein beliebiger Text angegeben werden.', mtInformation, [mbOK, mbSaveAll], 0); immernoch die Meldung das mbSaveAll ein undefinierter Bezeichner sei.

So schwer kann das doch nicht sein, wie kann ich den MessageDlg denn nun wirklich erweitern? Bin über jeden Hinweis glücklich. Danke euch.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Dialogs.pas - MessageDlg erweitern

  Alt 11. Okt 2006, 16:10
Wenn ich einen Dialog brauche, den ich so nicht mit MessageDlg() erreiche, baue ich mir eine Form und zeige diese modal an. Ich habe nix davon Quellen mit fremden Copyright abzuändern um dann beim nächsten Update bzw. die nächste Neuinstallation festzustellen, dass alle Änderungen wieder fehlen. Auch bin ich damit inkompatibel zu allem meinem Mitentwicklern. Du kannst doch Dialoge so einfach bauen mit einer Form und entsprechend frei handhaben und noch über deinen Wunsch hinaus anpassen, daher kann ich es nicht verstehen sich selber mit den Änderung der VCL Quellen in's eigene Abseits zu schiessen.

Und das Problem ist, dass Delphi nicht die Quellen ständig neu übersetzt. Alle als Quellcode gelieferten Dateien liegen als compilierte Version mit vor und diese nutzt Delphi. Die DCU's sind natürlich nicht aktuell und daher kennen sie auch deinen neuen Typ nicht.
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#3

Re: Dialogs.pas - MessageDlg erweitern

  Alt 11. Okt 2006, 16:33
Zitat von Muetze1:
Wenn ich einen Dialog brauche, den ich so nicht mit MessageDlg() erreiche, baue ich mir eine Form [...]
Das ist mir sehr wohl bewusst und zur Zeit mache es auch noch so. Ich finde es aber reichlich unkomfortabel, da ich jedem neuen Projekt dieses Form hinzufügen muss. Weiterhin braucht solch ein Formular mehr Speicher (wenn auch nur minimal), deshalb wollte ich den MessageDlg erweitern.
Zitat von Muetze1:
Und das Problem ist, dass Delphi nicht die Quellen ständig neu übersetzt. Alle als Quellcode gelieferten Dateien liegen als compilierte Version mit vor und diese nutzt Delphi. Die DCU's sind natürlich nicht aktuell und daher kennen sie auch deinen neuen Typ nicht.
Auch das ist mir bewusst, trotz Neukompilierung der Dialogs.pas kennt Delphi den Bezeichner mbSaveAll nicht.
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#4

Re: Dialogs.pas - MessageDlg erweitern

  Alt 11. Okt 2006, 16:48
Okay, ich habe es jetzt anders gelöst.

http://www.delphi-library.de/viewtopic.php?t=22600
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Dialogs.pas - MessageDlg erweitern

  Alt 11. Okt 2006, 16:54
Zitat von Balu der Bär:
Weiterhin braucht solch ein Formular mehr Speicher (wenn auch nur minimal), deshalb wollte ich den MessageDlg erweitern.
Sehr komisch, wo doch die Funktion MessageDlg() intern eine Form instanziiert und entsprechend Elemente darauf platziert.
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#6

Re: Dialogs.pas - MessageDlg erweitern

  Alt 11. Okt 2006, 17:07
Stimmt, dass hatte ich bei meiner Argumentation nicht bedacht. Trotzdem is es immer noch weniger Aufwand (imho) bei jeder Delphi-Neuinstallation eine Dialogs.pas auszutauschen als jedem neuem Projekt dieses Formular hinzuzufügen.

Wenn also doch noch jemand weiß wo mein Fehler lag oder was ich vergessen habe wäre es gut es uns hier mitzuteilen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:47 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