Ik vermoed dat het komt doordat de handle van de dropdown niet wordt bijgewerkt. Het scherm, de combobox en de dropdown zijn eigenlijk aparte onderdelen met hun eigen Window handle. Als je iets fundamenteels doet zoals het veranderen van de formStyle, kan het zijn dat de controls ook hun handle moeten vernieuwen.
Waarom dat veranderd is tussen D7 en later weet ik niet, maar je kan het oplossen door zelf een message naar de DBLookupCombobox te sturen.
Ik had het eerst getest door de parent geforceerd aan te passen (dat triggert ook de nodige handle-magie), maar de message is denk ik netter.
Het control heeft ook een RecreateWnd method die ook deze message stuurt, maar die method is protected en kan je dus niet zomaar aanroepen.
Delphi Code:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
if Checkbox1.Checked then FormStyle := fsStayOnTop
else FormStyle := fsNormal;
// DBLookupComboBox1.Parent := nil;
// DBLookupComboBox1.Parent := self;
DBLookupComboBox1.Perform(CM_RECREATEWND, 0, 0);
end;
Bookmarks