Советы по Delphi

         

в bsDialog, то невозможно использовать


В 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]


Содержание раздела