Идёт загрузка страницы...

htp://aptem.net.ru





Delphi 2

Проблемы с FORMS.PAS 2.0

В FORMS.PAS зловредная ошибка!!! Если Borderstyle установить в bsDialog, то невозможно использовать biHelp-BorderIcon. Почему? Ответ в процедуре CreateParams в строке:


   
Icons := Icons * [biSystemMenu];

Данная строка фильтрует все, кроме biSystemMenu. Поэтому флаг biHelp и становится здесь недоступен! Правильная строка должна быть такой:


   
Icons := Icons * [biSystemMenu, biHelp];

Я думаю что отчасти проблема заключается в несоответствии с Win95-MDI-Parent-Form (родительской MDI формы). Родительская форма клиента (Client Parentform) не в 3D (WS_EX_CLIENTEDGE). Любое другое Win95-MDI-приложение имеет 3D-эффект. Решение данной проблемы очень простое. ClientHandle в процедуре CreateWnd должен генерироваться с CreateWindowEx вместо CreateWindow, а ExtendedStyle WS_EX_CLIENTEDGE должен устанавливаться следующим образом:


   
FClientHandle := Windows.CreateWindowEx(WS_EX_CLIENTEDGE,'MDICLIENT', nil, WS_CHILD or WS_VISIBLE or WS_GROUP or WS_TABSTOP or WS_CLIPCHILDREN or WS_HSCROLL or WS_VSCROLL or WS_CLIPSIBLINGS or MDIS_ALLCHILDSTYLES, 0, 0, ClientWidth, ClientHeight, Handle, 0, HInstance, @ClientCreateStruct);

Я надеюсь эта ошибка будет устранена уже в первой заплатке к Delphi2.0.

- Rolf Frei [000959]