Originally Posted by
cpri
Sorry mijn fout het component heet Tsplitview en zit standaard in delphi
(het voorbeeld programma dat ik gevonden had heet slideview vandaar de verwarring)
Ja, bij de TSplitView is het allemaal wel logisch.
Heb je al eens naar de code van TCustomSplitView.Open gekeken?
Dan wordt het je wel duidelijk.
Delphi Code:
procedure TCustomSplitView.Open;
begin
if FUseAnimation then
SetState(svsOpening)
else
SetState(svsOpened);
end;
Zie je die FUseAnimantion?
Samen met mijn hint van Application.ProcessMessages zou er al een lampje moeten gaan branden.
Die TSplitView doet een animatie van sluiten en openen.
Dus als hij direct na Open of Close de breedte opvraagt dan zal deze nog niet gewijzigd zijn.
Dit gaat n.l. in stappen van animationstep aantal pixels per animationdelay.
Oplossing is dus of een delay inbouwen voordat je die breedte opvraagt, of TSplitView.UseAnimation op false zetten.
De delay zou ongeveer gelijk moeten zijn aan Width / (AnimationDelay * AnimationSteps) ms.
Of je maakt een loopje om te controleren of SV.Width reeds de OpenWidth bereikt heeft.
Bookmarks