Wat is 't?


NLDMessageBox is een standaard MessageBox, maar met toegevoegde functionaliteit. Een klein overzichtje van de toegevoegde functies:



  • Eigen icon aan de hand van een handle of simpelweg met de Icon property (niet meer afhankelijk van MessageBoxIndirect's icon-resource-only mogelijkheid die driekwart van de tijd niet eens werkt)
  • Toevoeging van een checkbox onder de dialog
  • Positioneren (centreren ten opzicht van de Parent of absolute positie op het scherm)
  • Centreren van tekst
  • Automatisch sluiten van MessageBox na x seconden




Dit had ik natuurlijk met CreateMessageDialog kunnen doen, maar PsychoMark is vrij eigenwijs en wou heel graag de knoppen en sneltoetsen in de taal van het systeem, in tegenstelling tot de taal van Delphi die CreateMessageDialog aanhoudt. Dit heeft geresulteerd in een flink aantal regels hooking en subclassing code, netjes in een component gestopt zodat ie toch makkelijk te gebruiken is...


Wij willen een screenshot!

Dat mag:





To-do

Ik merk net dat er nog een bugje in zit, onder Windows XP heeft een MessageBox blijkbaar ook een interne timer, waardoor een Auto-Close messagebox altijd binnen 1 seconde zal verdwijnen. Ik zal hier morgenavond naar kijken... dit heeft geen effect op de rest van de features...



Download

Uiteraard staat het project in FreeVCS (NLDMBD6, NLDMBD6D en NLDMsgBoxDemo), maar je kan ook de hele mikmak in een keer downloaden: klik hier...


Het geldt eigenlijk voor de meeste componenten, maar ik zal 't toch nog maar een keer herhalen:

NLDMBD6.dpk openen en op Compile drukken, NLDMBD6D.dpk openen en op Install drukken. De packages zijn voor D6, maar werken misschien nog in vorige en waarschijnlijk in volgende versies. Voor de demo is het installeren van het component wel vereist, voor je eigen projecten kan je TNLDMessageBox uiteraard ook gewoon in runtime aanmaken, dan hoef je alleen NLDMsgBox te usen . In alle gevallen: vergeet niet je Library Path in te stellen bij Tools -> Environment Options!



Zijn er nog vragen / opmerkingen / bugreports dan kan je die uiteraard kwijt in een nieuw threadje . Veel plezier ermee!