vitaly_l,
Вот пример кода
- Код: Выделить всё
frame.Free;//? стоит ли? С ним ошибка при повторном нажатии исчезает.))
...
Frame := TFrameFolders.Create(PanelFolders);
Frame.Align:=alClient;
Frame.Parent := PanelFolders;
Form1.Caption:='Папки';
PanelFolders.Visible:=true;
...
Вопрос на засыпку.... зачем первая строчка?
Это я к тому, что любое, даже самое странное решение может быть введено из-за совсем непонятных с первого взгляда причин. И убранная строчка может аукнуться неизвестно где.
Вообще, по логике работы, MoveWindow должна вызывать SetWindowsPos для установки координат, но тогда непонятно их использование в одном и том же куске кода. По манам разница между ними только в том, что вторая может поднять/опустить окно относительно других (изменить его Z-индекс).
В winAPI, к сожалению, как я понял, по историческим причинам такого дублирования функций полно. Судя по всему, лучше убрать MoveWindow.
А насчет того у какой больше шансов выжить в перспективе, так это не скажет никто.
Добавлено спустя 5 минут 10 секунд:Ах да... вот еще одна разница.
SetWindowPos работает в экранных координатах. А MoveWindow в обычных.