1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

DLL VCL Styles for Inno Setup 1.5.4.1

VCL стили для Inno Setup

  1. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    530
    Симпатии:
    639
    Пол:
    Мужской
    Пользователь YURSHAT разместил новый ресурс:

    VCL Styles for Inno Setup - VCL стили для Inno Setup

    Узнать больше об этом ресурсе...
     
    sergey3695, Krinkels и Comancheros нравится это.
  2. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.318
    Симпатии:
    851
    поспешил я написать что все работает. у созданных форм рамку не рисует. :nea:
     
  3. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    530
    Симпатии:
    639
    Пол:
    Мужской
    Хм, вроде все нормально рисуется
     

    Вложения:

    • VclStyles.rar
      Размер файла:
      677,2 КБ
      Просмотров:
      102
    sergey3695 нравится это.
  4. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.318
    Симпатии:
    851
    YURSHAT,
    Код (Text):
    var
    //  TestForm: TSetupForm;
      TestForm: TForm;

    procedure CreateTestForm(Sender: TObject);
    begin
      TestForm := TForm.Create(WizardForm);
      with TestForm do
      begin
        ClientWidth := ScaleX(400);
        ClientHeight := ScaleY(80);
        Position:= poScreenCenter;
        Caption := 'Test Form';
        ShowModal;
        Free;
      end;
    end;
     
    я ж про это. // спасибо. можно и TSetupForm везде задействовать.
    Код (Text):
    #define AW = (Defined UNICODE) ? "W" : "A"

    [Setup]
    AppName=VCL Styles
    AppVersion=1.5
    DefaultDirName={pf}\VCL Styles
    Compression=none
    OutputDir=.

    [Languages]
    Name: "RU"; MessagesFile: "compiler:Languages\Russian.isl"

    [Files]
    Source: "VclStylesinno.dll"; Flags: dontcopy
    Source: "Amakrits.vsf"; Flags: dontcopy

    [Code]
    var
      TestForm: TSetupForm;
      Timer: TTimer;
      OldProc: Longint;

    procedure LoadVCLStyle(VClStyleFile: String); external 'LoadVCLStyle{#AW}@files:VclStylesinno.dll stdcall';
    procedure UnLoadVCLStyles; external 'UnLoadVCLStyles@files:VclStylesinno.dll stdcall';

    function GetDC(hWnd: HWND): LongWord; external 'GetDC@user32 stdcall';
    function BitBlt(DestDC: LongWord; X, Y, Width, Height: Integer; SrcDC: LongWord; XSrc, YSrc: Integer; Rop: DWORD): BOOL; external 'BitBlt@gdi32 stdcall';
    function ReleaseDC(hWnd: HWND; hDC: LongWord): Integer; external 'ReleaseDC@user32.dll stdcall';
    function DwmIsCompositionEnabled(var pfEnabled: BOOL): Longint; external 'DwmIsCompositionEnabled@dwmapi.dll stdcall delayload';

    function isWin6: boolean;var ver: TWindowsVersion;
    begin
      GetWindowsVersionEx(ver);
    if (ver.Major >= 6) then result:=true
    else result:=false;
    end;

    function CompositionEnabled: boolean;var r: bool;
    begin
    if isWin6 then
    if DwmIsCompositionEnabled(r) = 0 then
      result:=r else result:=false;
    end;

    procedure FormT(Sender: TObject);
    var
      FormDC, DC: LongWord;
    begin
      DC:= GetDC(TestForm.Handle);
      FormDC := GetDC(WizardForm.Handle);
      BitBlt(DC, 0, 0, WizardForm.ClientWidth, WizardForm.ClientHeight, FormDC, 0, 0, $00CC0020);
      ReleaseDC(TestForm.Handle, DC);
      ReleaseDC(WizardForm.Handle, FormDC);
    end;

    procedure FormM(Sender: TObject);
    begin
    if CompositionEnabled then
      Timer.Enabled:= false;
    end;

    procedure FormR(Sender: TObject);
    begin
    if CompositionEnabled then
      Timer.Enabled:= True;
    end;

    const
      GWL_STYLE = -16;
      WS_MAXIMIZEBOX = $10000;
      GWL_WNDPROC = -4;
      WM_MOVE = $3;

    function SetWindowLong(Wnd: HWnd; Index: Integer; NewLong: Longint): Longint; external 'SetWindowLongA@user32.dll stdcall';
    function GetWindowLong(Wnd: HWnd; Index: Integer): Longint; external 'GetWindowLongA@user32.dll stdcall';
    function CallWindowProc(lpPrevWndFunc: Longint; hWnd: HWND; Msg: UINT; wParam, lParam: Longint): Longint; external 'CallWindowProcA@user32.dll stdcall';

    procedure OnCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      Timer.Free;
      SetWindowlong(TestForm.Handle, GWL_WNDPROC, OldProc);
      TestForm.Free;
      CanClose:= True;
    end;

    function InitializeSetup(): Boolean;
    begin
      ExtractTemporaryFile('Amakrits.vsf');
      LoadVCLStyle(ExpandConstant('{tmp}\Amakrits.vsf'));

    if CompositionEnabled then begin
      TestForm := CreateCustomForm;
      with TestForm do
      begin
        BorderStyle:= bsSingle;
        SetWindowLong(handle, GWL_STYLE, GetWindowLong(handle, GWL_STYLE)and(not WS_MAXIMIZEBOX));
        Left:= -1000;
        ClientWidth:= ScaleX(497);
        ClientHeight:= ScaleY(363);
        Caption := 'Test Form';
        OnCloseQuery:= @OnCloseQuery;
        Show;
      end;
    end;
      Result := True;
    end;

    function MyProc(h: HWND; Msg, wParam, lParam: longint): Longint;
    begin
    if Msg=WM_MOVE then
    begin
      TestForm.Left:= WizardForm.Left;
      TestForm.Top:= WizardForm.Top;
    end;
      Result:= CallWindowProc(OldProc, h, Msg, wParam, lParam);
    end;

    procedure InitializeWizard();
    begin
    with WizardForm do
    begin
      ClientWidth:= ScaleX(497);
      ClientHeight:= ScaleY(363);
    end;
    if CompositionEnabled then begin
      TestForm.Caption:= WizardForm.Caption;
      TestForm.Left:= WizardForm.Left;
      TestForm.Top:= WizardForm.Top;
      OldProc:= SetWindowLong(WizardForm.Handle, GWL_WNDPROC, CallbackAddr('MyProc'));
      Timer := TTimer.Create(MainForm);
    with Timer do
    begin
      Interval:= 1;
      OnTimer:=  @FormT;
    end;
      Application.OnMinimize:= @FormM;
      Application.OnRestore:= @FormR;
    end;
    end;

    procedure DeinitializeSetup();
    begin
      UnLoadVCLStyles;
    end;
     
    Круто, с ботвой дружит, стили окна поддерживает :clapping:
     
    Последнее редактирование: 7 дек 2014
  5. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    530
    Симпатии:
    639
    Пол:
    Мужской
    Да я понял, что про "это" :), только смысла использовать конкретно TFORM я не вижу ибо есть аналог...
     
    sergey3695 нравится это.
  6. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.318
    Симпатии:
    851
    На XP кнопка свернуть не всегда сворачивает форму. Добавив это будет норм.
    Код (Text):
     procedure FormM(Sender: TObject);
    begin
      WizardForm.Left:= WizardForm.Left-10000;
    end;

    procedure FormR(Sender: TObject);
    begin
      WizardForm.Left:= WizardForm.Left+10000;
    end;

    //
    Application.OnMinimize:= @FormM;
      Application.OnRestore:= @FormR;
     
    У SelectLanguageForm и UninstallProgressForm рамку не рисует.
    А в остальном все супер :happy:Попрошу протестить что получилось.
     
    Последнее редактирование: 9 дек 2014
  7. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    530
    Симпатии:
    639
    Пол:
    Мужской
    МБ скин такой? На скине Amakrits.vsf такого не заметил
    Есть такое. Нужно писать разрабам
     
  8. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.318
    Симпатии:
    851
    на нем смотрел. У меня Windows XP Professional SP3 VL build 2600 [Ru] UPD 18.10.2013 [Clear Чистая] (nnm) на VirtualBox стоит. Там и глядел. Сейчас возможно, ну это же виртуальная машина... но и на ней все должно быть в порядке, хотя кто его знает. Ошибка сворачивания раз из шести. Как бы установщик свернулся но форма осталась и минимизация больше не работает. Даже если я ошибся, то добавив на
    Код (Text):
    Application.OnMinimize:= @FormM;
    Application.OnRestore:= @FormR;
    убирание за экран формы ничего страшного вроде.
    твитнул.
     
    YURSHAT нравится это.
  9. Старожил

    Регистрация:
    13 фев 2012
    Сообщения:
    269
    Симпатии:
    112
    YURSHAT нравится это.
  10. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    530
    Симпатии:
    639
    Пол:
    Мужской
  11. Старожил

    Регистрация:
    13 фев 2012
    Сообщения:
    269
    Симпатии:
    112
    YURSHAT нравится это.
  12. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.318
    Симпатии:
    851
    Кстати
    С последней версией
    У UninstallProgressForm рамку рисует.
    p.s. Забыл написать :D
     
    Adil нравится это.
  13. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    530
    Симпатии:
    639
    Пол:
    Мужской
  14. Пользователь

    Регистрация:
    21 июн 2011
    Сообщения:
    153
    Симпатии:
    55
    Пол:
    Мужской
    Вышло обновление 1.4.1.0
     
    YURSHAT и sergey3695 нравится это.
  15. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.318
    Симпатии:
    851
    Issue 103: Vcl.Styles.Hooks - incorrect TEdit background color in some styles - fixed.
     
  16. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    530
    Симпатии:
    639
    Пол:
    Мужской
  17. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.318
    Симпатии:
    851
    YURSHAT, может не ядро, а "incorrect TEdit background color in some styles" - Исправлено некорректное отображение заднего фона TEdit'а в некоторых стилях.
     
  18. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    530
    Симпатии:
    639
    Пол:
    Мужской
    Это где ты увидел такое?
     
  19. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.318
    Симпатии:
    851
    Последнее редактирование: 21 янв 2015
  20. Тех. админ Администратор

    Регистрация:
    26 дек 2011
    Сообщения:
    530
    Симпатии:
    639
    Пол:
    Мужской
    Ну по ссылочке issue тоже по Delphi версии вроде. А по инновскому плагину там всего одна новая ревизия (r54) с текстом коммита про общее обновление либы. Потому не стал писать еще что-то, так как точно непонятно, что конкретно сделано.
     
    Последнее редактирование: 22 янв 2015
    sergey3695 нравится это.

Поделиться этой страницей