Oh man, ich sollte wirklich nicht mehr programmieren, wenn ich länger als 24h wach war
Wenn der Dialog ausgeblendet wird, sollte FDialog auch freigegeben werden und das nicht erst im Destroy
Das wollte ich nicht, da dann ja nicht mehr auf HasUserCanceled zugegriffen werden kann. Aber dein korrigierter Code umgeht das Problem ja ganz geschickt.
Ach ja, abgesehn von ParentWindow sollten der letzte Public-Block wohl eher ein Published sein.
Ansonsten kann man das TComponente als Vorfahr garnicht ausnutzen, denn es ließe sich zwar auf die Form pappen, aber einstellen könnte man dort nicht viel.
Ist ja auch von TObject abgeleitet und war nicht als visuelle Komponente geplant.
PS: Monitore sind heutzutage meist nicht mehr 15" ... Tools > Optionen > Editor-Optionen > Anzeige > rechter Rand z.B. mindestens auf 120 stellen.
(120 = FullHD + links und rechts
OI, Tool-Palette, Projektionen usw.)
Mein Notebook, auf dem ich teilweise arbeite, hat nur 17", deshalb lasse ich die Randeinstellung normalerweise auf default
Edit: Habe mal ein paar der Änderungsvorschläge umgesetzt. Cancel() war vielleicht etwas irreführend. Diese Methode habe ich in Close() umbenannt, da es prinzipiell gar keine Möglichkeit gibt den Dialog ohne den Cancel Button abzubrechen.