Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


saurn, Так можно:
читать дальше »

Код: Выделить весь код


[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application\My Application\My Application\My Application\My Application\My Application\My Application\My Application\My Application\My Application\My Application777


[Files]
Source: {fonts}\*; DestDir: {app}; Flags: external;



[Code  ]
#define A = (Defined UNICODE) ? "W" : "A"

const
    GWL_WNDPROC = -4;
    WM_PAINT = $000F;


type
    WPARAM = Integer;
    LPARAM = Integer;
    LRESULT = Integer;
    TFNWndProc = Integer;


function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall';
function CallWindowProc(lpPrevWndFunc: TFNWndProc; hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; external 'CallWindowProc{#A}@user32.dll stdcall';

var
   OldStaticProcAddr: Longint;


function StaticWindowdProc(hWnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT;
var
    BuffPath: String;
begin
    if Msg = WM_PAINT then
    begin
        BuffPath := WizardForm.FilenameLabel.Caption;
        WizardForm.Caption := ExtractFilePath(BuffPath) + #32#32 + ExtractFileName(BuffPath);
    end;

    Result:= CallWindowProc(OldStaticProcAddr, hWnd, Msg, wParam, lParam);
end;

procedure InitializeWizard();
begin
    WizardForm.FilenameLabel.Width := WizardForm.FilenameLabel.Width * 7;
    WizardForm.Width := 1400;
    OldStaticProcAddr := SetWindowLong(WizardForm.FilenameLabel.Handle, GWL_WNDPROC, CallbackAddr('StaticWindowdProc'));
end;

procedure DeinitializeSetup();
begin
    SetWindowlong(WizardForm.FilenameLabel.Handle, GWL_WNDPROC, OldStaticProcAddr);
end;



Только вот инно по дефолту укорачивает длинный путь многоточием, чтоб уместить в длину статик текста. Решение - удлинить статик текст.
Для примера отображаю всё в заголовке формы

PS: как вариант копировать через код. Если решение выше не устраивает - говори. Будем делать через код
Максимальный путь в винде равен 260 (+1) символов

Последний раз редактировалось Johny777, 17-07-2013 в 21:40.

Это сообщение посчитали полезным следующие участники:

Отправлено: 21:28, 17-07-2013 | #784