Works OK here, though I had to delete
DoubleBuffered and
ParentDoubleBuffered from
udlgform.lfm.
There is one potential problem in function
GetUserResponsesDlgOK(): the dialog is never destroyed. Although it's a local var and, supposedly, freed on exit you should either make sure of it:
function GetUserResponsesDlgOK(const aCaption, aHeading: String;
aPrompts: TAnsiStringArray; out UserTexts: TAnsiStringArray;
anEditWidth: Integer): Boolean;
var
dlg: TDialogForm;
i: Integer;
begin
dlg := TDialogForm.Create(aCaption, aHeading, aPrompts, anEditWidth);
try
Result := dlg.ShowModal = mrOK;
case Result of
[. . . etc . . .]
end;
finally
dlg.Free;
end;
end;
or use a global variable--kind of a singleton--in the
implementation part. But then you'd have to take control initialization out of Create or, at least, add setters for the captions.
There are some other things (p.e. I wouldn't assume the owner to be
Application) and all in all I wouldn't have done it like that but there doesn't seem to be any place to point to and say: "here's where it fails" so there may in fact be some bug in Lazarus 2.1 that isn't present in previous versions.
Sorry to not be able to help more.