Конференция "Прочее" » Любителям ретро. Делаем внешний вид Delphi XE8 как в Delphi7
 
  • maxsvt © (07.05.16 22:22) [0]
    Всем привет. Статья не претендует на уникальность, тем не менее, несколько новых вещей есть. Захотелось мне однажды переделать внешний вид Delphi XE8 под свою любимую среду - Delphi7. Полез в интернет, нашел много дельных советов. Итак. Первое. Делаем отстыковку окон. View-Desktop-Classic Unlocked. Дальше - делаем отстыковку дизайнера окон. Тут все сложнее. Опция убрана из настроек дельфи. Нужно изменить ключ HKEY_CURRENT_USER\Software\Embarcadero\BDS\16.0\Form Design\Embedded Designer в False и перезапустить дельфи. Внимание! Отстыковка работает корректно только для VCL форм, для мобильной разработки и FireMonkey все работает корректно только с прикрепленными формами. Но т.к. я работаю только с VCL, то мне гораздо удобнее форму открепить. Дальше - включаем стандартную палитру компонент. Правая кнопка на главном окне - Component. Потом заходим в свойства Tools-Options-Component Toolbar и меняем расположение закладок не по алфавиту, а как в Delphi7. Дальше, убираем лишние кнопки со стандартных тулбаров, добавляем как в Delphi7. Дальше, tools-options-editor options-display-show line numbers убираем галку. tools-options-editor options-color выставляем цвета как привыкли. Теперь Object Inspector. Вот тут они кое-что поломали. Я привык окно дерева обьектов формы пристыковать внутри Object Inspector. То же самое можно сделать и в Delphi XE8. Проблема в том, что в Delphi7 эта пристыковка сохраняется, как и измененные размеры Object Inspector. А в delphi XE8 нет. После каждого перезапуска требуется вручную пристыковать окно, менять размеры. Что бесит. Плюс в самом Object Inspector нельзя убрать настройками панель со ссылкой на Bind Visually и панель, в которой отображается текущее выбранное свойство (которая 100 лет не нужна и только место занимает). Дальше идет уже жесткий хак :) На дельфи7 было написано простое приложение на 15 килобайт. Вот код
    program fixoi;

    uses windows;

    var
     OIHandle: hWnd;
     R: TRect;
     szClass : array[Byte] of Char;

    function EnumChildProc(WndCtrl: HWND; lParam: Longint): Boolean; stdcall;
    begin
     Result := True;
     GetClassName(WndCtrl,szClass,SizeOf(szClass));
     if szClass = 'THotCommands' then
     begin
       GetWindowRect(WndCtrl,R);
       MoveWindow(WndCtrl,R.Left,R.Top,0,0,True);
       ShowWindow(WndCtrl,sw_hide);
     end;
     if szClass = 'TDescriptionPane' then
     begin
       GetWindowRect(WndCtrl,R);
       MoveWindow(WndCtrl,R.Left,R.Top,0,0,True);
       ShowWindow(WndCtrl,sw_hide);
     end;
    end;

    begin
     OIHandle := FindWindow(nil,pchar('Object Inspector'));
     if OIHandle > 0 then
     begin
       GetClassName(OIHandle,szClass,SizeOf(szClass));
       if szClass = 'TPropertyInspector' then
       begin
         GetWindowRect(OIHandle,R);
         MoveWindow(OIHandle,R.Left,R.Top,570,800,True);
         EnumChildWindows(OIHandle,@EnumChildProc,0);
       end;
     end;
     OIHandle := FindWindow(nil,pchar('Structure'));
     if OIHandle > 0 then
     begin
       GetClassName(OIHandle,szClass,SizeOf(szClass));
       if szClass = 'TStructureViewForm' then
       begin
         GetWindowRect(OIHandle,R);
         MoveWindow(OIHandle,R.Left,R.Top,250,800,True);
       end;
     end;
    end.



    Дальше нужно только перетащить окно Structure на окно Object Inspector и получаю что хочу. Кстати, кто подскажет, можно и это программно сделать нормально?

    Итог
    http://s010.radikal.ru/i311/1605/19/51ab050eedda.png
  • maxsvt © (07.05.16 22:25) [1]
    Забыл написать. Собранное приложение на delphi7 я добавил в Tools delphi xe8. После загрузки xe8 просто запускаем оттуда его один раз
  • Игорь Шевченко © (07.05.16 22:41) [2]
    Кулибин
  • Eraser © (08.05.16 00:05) [3]
  • DayGaykin © (08.05.16 00:18) [4]
    Может кто знает как в лазарусе наоборот сделать?)
  • maxsvt © (08.05.16 02:31) [5]
    Чего наоборот?
  • NoUser © (08.05.16 21:20) [6]
    >[4]
    добавить пакет anchordockingdsgn и пересобрать IDE ( Меню-Пакеты )
 
Конференция "Прочее" » Любителям ретро. Делаем внешний вид Delphi XE8 как в Delphi7
Есть новые Нет новых   [134434   +28][b:0][p:0.001]