Ich erzeuge in meinem Programm mit CreateMessageDialog() einen Dialog.
Ich mache den selber, da ich meinen Buttons eigene Beschriftungen und vieles mehr anbieten möchte. Die Positionierung der Buttons funktioniert ebenfalls einwandfrei, wenn es auch einen ganz kleinen wenig umständlich ist.
Da kam mit das TGridPanel in den Sinn.
Also zur Laufzeit eines in der Prozedur erzeugt, wo ich auch den Dialog erzeuge, Rows, Columns, Width, Height und Top Left angepasst.
Soweit sogut. Das Grid war genau da wo es sein sollte.
Dann kam der spannende Moment:
Delphi-Quellcode:
// Button des CreateMessageDialog-Dialogs ins Grid packen
for i := 0 to MsgDialog.ControlCount - 1 do
begin
if MsgDialog.Controls[i] is TButton then
begin
with TButton(MsgDialog.Controls[i]) do
begin
// viel Code und am Ende ...
end;
TButton(MsgDialog.Controls[i]).Parent := MsgDlgGridPanel;
end;
end;
Die Zeile in der das Parent des Buttons geändert wird resultiert in einer Zugriffsverletzung.
Das mit dem GridPanel lasse ich jetzt komplett sein, da meine aktuelle Lösung gut genug ist.
Die abschließende Frage ist für mich aber: warum kann man das Parent eines Buttons eines mit CreateMessageDialog erzeugten Dialogs nicht ändern?