AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Customized About MessageBox

Customized About MessageBox

Ein Thema von Luckie · begonnen am 19. Dez 2006 · letzter Beitrag vom 1. Feb 2007
Antwort Antwort
Benutzerbild von Luckie
Luckie
Registriert seit: 29. Mai 2002
Man kennt das ja vielleicht. Man hat ein kleines Tool geschrieben und jetzt will man noch einen About-Dialog anzeigen. Um das Programm nicht noch mit einem zusätzlichen Formular aufzublähen oder um nicht noch einen zusätzlichen Dialog in einer WinAPI-Anwendung erstellen zu müssen, benutzt man eine einfache MessageBox. Jetzt hätte man es aber gerne, dass der Benutzer doch irgendwie die Möglichkeit hat, die Homepage zu besuchen. Entweder man macht nun doch einen zusätzlichen Dialog / Form oder man bohrt die MessageBox etwas auf. Und genau das habe ich gemacht. Rausgekommen ist dabei eine einfach anzuwendende Klasse, um eine Aboutbox anzuzeigen, die eine zusätzliche Schaltfläche enthält, um eine Webseite im standard Browser aufzurufen. Wie das ganze dann aussieht, kann man sich im angehängten Screenshot angucken.
Zusätzlich wird auch noch die Beschreibung der Exe und deren Versionsnummer automatisch aus der Ressource ausgelesen. Man muss sich also nicht mehr um viel selber kümmern.

Im Anhang die Unit MpuAboutMsgBox.pas mit der About-Dialog MessageBox und ausserdem eine Demo-Anwendung.

Ein paar Worte, wie das ganze Funktioniert:
Es wird ein lokaler Hook installiert, wenn die MessageBox aufgerufen und wieder deinstalliert, wenn die MessageBox geschlossen wird. In der Hook-Prozedur werden die beiden Schaltflächen "OK" und "Cancel" einfach nur neu beschriftet und das war es auch schon.
Zu Konflikten mit anderen Messageboxen kann es dabei nicht kommen, da der Hook lokal ist, sich also nicht auf andere Prozesse auswirkt und andere MessageBox, im gleichen Prozess, können auch nicht beeinflusst werden, da der Hook erst installiert wird, wenn die MessageBox angezeigt und wieder deinstalliert wird, wenn die MessageBox geschlossen wird. Eine andere MessageBox kann nicht angezeigt werden, da die AboutMsgBox modal angezeigt wird.

Auf vielfachen Wunsch habe ich die Klasse noch etwas aufgebohrt. man kann jetzt auch ein eigenes Icon anzeigen lassen. Dies muss in der Ressource vorliegen und wird über die ID ausgewählt.

Im Screenshot noch mal alle vier Möglichkeiten die About-Messagebox anzeigen zu lassen.
Miniaturansicht angehängter Grafiken
mpuaboutmsgbox_117.jpg  
Angehängte Dateien
Dateityp: zip demo-tabout_936.zip (44,1 KB, 194x aufgerufen)
Ein Teil meines Codes würde euch verunsichern.
 
Flips

 
Delphi 7 Professional
 
#2
  Alt 20. Dez 2006, 13:54
Hi.

Nette Klasse, der einfache Aufruf gefällt mir wirklich gut
Wie siehts denn mit einem eigenen Icon aus?
Und eigenen Buttontexten?
(Will die Klasse damit nicht kritisieren )

Aber das mit dem zusätzlichen, unnötigen Formular hast du gut erkannt
Philipp F.
  Mit Zitat antworten Zitat
TheAn00bis
 
#3
  Alt 20. Dez 2006, 14:06
Tolle Sache, wirklich nützlich!

Danke.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#4
  Alt 20. Dez 2006, 14:08
Du kannst die Klasse ja nach belieben erweitern, die Sourcen sind deshalb ja dabei. Das Prinzip sollte aus dem Sourcecode hervorgehen, wo du was anpassen musst. Mir reicht die Klasse so, wie sie ist.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

 
Delphi 12 Athens
 
#5
  Alt 20. Dez 2006, 14:17
Ein Icon ... wo?
in der Titelleiste?

Na ja, aufgrunde des Fenstertyps ist dort eh Keines,


also könnte man höchstens noch das "InfoBild" ... dieses (i) im ScreenShot ersetzen,

oder ein eigenes Objekt in das Fenster einbauen (wobei man hier wohl auch gleich eine eigene Form erstellen sollte).


Ich denk daher och mal, das es für die Allgemeinheit total ausreicht, so wie es ist.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#6
  Alt 20. Dez 2006, 14:51
Mit der API-Funktion MessageBoxIndirect kann man auch das Icon anpassen.
Michael
  Mit Zitat antworten Zitat
Flips

 
Delphi 7 Professional
 
#7
  Alt 20. Dez 2006, 14:54
Jap, ich meinte auch das (i).
Philipp F.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#8
  Alt 21. Dez 2006, 10:03
Neue, erweiterte Version:
Zitat:
Auf vielfachen Wunsch habe ich die Klasse noch etwas aufgebohrt. man kann jetzt auch ein eigenes Icon anzeigen lassen. Dies muss in der Ressource vorliegen und wird über die ID ausgewählt.

Im Screenshot noch mal alle vier Möglichkeiten die About-Messagebox anzeigen zu lassen.
Michael
  Mit Zitat antworten Zitat
Flips

 
Delphi 7 Professional
 
#9
  Alt 21. Dez 2006, 12:46
Top

*KomponenteInDenKreisDerOftGenutztenAufnehm*
Philipp F.
  Mit Zitat antworten Zitat
StefanG
 
#10
  Alt 1. Feb 2007, 13:21
kurze Frage zu dem Icon,
wie kann man das Icon Global bei jedem Aufruf von messageBox ändern?

Du holst es ja jetzt aus der Resource heraus.....wenn man den hook Global macht, dann ist die DLL ja in jedem einzelnen Process geladen und greift somit nicht auf DEINE Resource zu, wo das icon drin ist oder?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:27 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