Jump to content
Korean Random

UI3

Newbie
  • Content Count

    2
  • Joined

  • Last visited

Community Reputation

0 Noob
  1. Добрый вечер, помогите переделать условие выполнения скрипта. Именно, данный скрипт позволяет увеличивать окно инсталлятора, с учетом отступов, единственное что нужно поменять это значения "GrowWizard(ScaleX(100), ScaleY(80))"; Вопрос: Как прописать условие, чтобы настройки которые мы изменяем в "GrowWizard" применялись НЕ ДЛЯ ВСЕГО инсталлятора, а ТОЛЬКО для определенной страницу (В моём случае это страница компонентов). ПОМОГИТЕ изменить условия выполнения алгоритма. Как я полагаю за это отвечает секция "procedure GrowWizard". P.S: Мне нужен данный скрипт, т.к он максимально кратко расписан, без лишних наворотов. P.S.S: Если изменять WizardForm, то скрипт не понимает к какой именно странице обращается пользователь, т.к нарушается последовательность обращения DeltaX и Y. procedure ShiftDown(Control: TControl; DeltaY: Integer); begin Control.Top := Control.Top + DeltaY; end; procedure ShiftRight(Control: TControl; DeltaX: Integer); begin Control.Left := Control.Left + DeltaX; end; procedure ShiftDownAndRight(Control: TControl; DeltaX, DeltaY: Integer); begin ShiftDown(Control, DeltaY); ShiftRight(Control, DeltaX); end; procedure GrowDown(Control: TControl; DeltaY: Integer); begin Control.Height := Control.Height + DeltaY; end; procedure GrowRight(Control: TControl; DeltaX: Integer); begin Control.Width := Control.Width + DeltaX; end; procedure GrowRightAndDown(Control: TControl; DeltaX, DeltaY: Integer); begin GrowRight(Control, DeltaX); GrowDown(Control, DeltaY); end; procedure GrowRightAndShiftDown(Control: TControl; DeltaX, DeltaY: Integer); begin GrowRight(Control, DeltaX); ShiftDown(Control, DeltaY); end; procedure GrowWizard(DeltaX, DeltaY: Integer); begin GrowRightAndDown(WizardForm, DeltaX, DeltaY); with WizardForm do begin GrowRightAndShiftDown(Bevel, DeltaX, DeltaY); ShiftDownAndRight(CancelButton, DeltaX, DeltaY); ShiftDownAndRight(NextButton, DeltaX, DeltaY); ShiftDownAndRight(BackButton, DeltaX, DeltaY); GrowRightAndDown(OuterNotebook, DeltaX, DeltaY); GrowRight(BeveledLabel, DeltaX); { WelcomePage } GrowDown(WizardBitmapImage, DeltaY); GrowRight(WelcomeLabel2, DeltaX); GrowRight(WelcomeLabel1, DeltaX); { InnerPage } GrowRight(Bevel1, DeltaX); GrowRightAndDown(InnerNotebook, DeltaX, DeltaY); { LicensePage } ShiftDown(LicenseNotAcceptedRadio, DeltaY); ShiftDown(LicenseAcceptedRadio, DeltaY); GrowRightAndDown(LicenseMemo, DeltaX, DeltaY); GrowRight(LicenseLabel1, DeltaX); { SelectDirPage } GrowRightAndShiftDown(DiskSpaceLabel, DeltaX, DeltaY); ShiftRight(DirBrowseButton, DeltaX); GrowRight(DirEdit, DeltaX); GrowRight(SelectDirBrowseLabel, DeltaX); GrowRight(SelectDirLabel, DeltaX); { SelectComponentsPage } GrowRightAndShiftDown(ComponentsDiskSpaceLabel, DeltaX, DeltaY); GrowRightAndDown(ComponentsList, DeltaX, DeltaY); GrowRight(TypesCombo, DeltaX); GrowRight(SelectComponentsLabel, DeltaX); { SelectTasksPage } GrowRightAndDown(TasksList, DeltaX, DeltaY); GrowRight(SelectTasksLabel, DeltaX); { ReadyPage } GrowRightAndDown(ReadyMemo, DeltaX, DeltaY); GrowRight(ReadyLabel, DeltaX); { InstallingPage } GrowRight(FilenameLabel, DeltaX); GrowRight(StatusLabel, DeltaX); GrowRight(ProgressGauge, DeltaX); { MainPanel } GrowRight(MainPanel, DeltaX); ShiftRight(WizardSmallBitmapImage, DeltaX); GrowRight(PageDescriptionLabel, DeltaX); GrowRight(PageNameLabel, DeltaX); { FinishedPage } GrowDown(WizardBitmapImage2, DeltaY); GrowRight(RunList, DeltaX); GrowRight(FinishedLabel, DeltaX); GrowRight(FinishedHeadingLabel, DeltaX); end; end; procedure InitializeWizard(); begin GrowWizard(ScaleX(100), ScaleY(80)); end;
  2. Дорогие форумчане, а так же: @AtotIK, @night_dragon_on Уже с неделю делаю модпак, и вот возникла проблема. Хочу прикрутить (без ботвы) отображение картинки вблизи курсора (при выборе компонента), который не будет привязан к инсталлятору. Нашел (на другом сайте) пример такого кода (прикреплю его ниже вместе с картинкой). [code] #ifdef UNICODE #define A "W" #else #define A "A" #endif const UNDEF_INDEX = -777; ALPHA_BLEND_LEVEL = 128; // max=Byte=255 WS_EX_LAYERED = $80000; WS_EX_TRANSPARENT = $20; LWA_COLORKEY = 1; LWA_ALPHA = 2; GWL_EXSTYLE = (-20); var InfoPic: TBitmapImage; LastIndex: Integer; TempPath: String; PicForm: TForm; type COLORREF = DWORD; function GetCursorPos(var lpPoint: TPoint): BOOL; external 'GetCursorPos@user32.dll stdcall'; function SetLayeredWindowAttributes(Hwnd: THandle; crKey: COLORREF; bAlpha: Byte; dwFlags: DWORD): Boolean; external 'SetLayeredWindowAttributes@user32.dll stdcall'; function GetWindowLong(hWnd: HWND; nIndex: Integer): Longint; external 'GetWindowLong{#A}@user32.dll stdcall'; function SetWindowLong(hWnd: HWND; nIndex: Integer; dwNewLong: Longint): Longint; external 'SetWindowLong{#A}@user32.dll stdcall'; function SetFocus(hWnd: HWND): HWND; external 'SetFocus@user32.dll stdcall'; procedure ShowPicHint(const PicFilePath: String); var pt: TPoint; begin if not GetCursorPos(pt) then Exit; InfoPic.Bitmap.LoadFromFile(PicFilePath); try with PicForm do begin SetBounds(ScaleX(pt.x + 50), ScaleY(pt.y - InfoPic.Height), InfoPic.Width, InfoPic.Height); Show; end; finally SetFocus(WizardForm.Handle); end; end; procedure CompOnItemMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea); var UndefPic: String; begin if Index = -1 then Exit; if Index = LastIndex then Exit; try case TNewCheckListBox(Sender).ItemCaption[Index] of 'Half-Life 2': UndefPic := '404_preview.bmp'; 'Half-Life 2 Episode One': UndefPic := '404_preview.bmp'; 'Half-Life 2 Episode Two': UndefPic := '404_preview.bmp'; 'Portal': UndefPic := '404_preview.bmp'; else begin LastIndex := UNDEF_INDEX; PicForm.Hide; Exit; end; end; if not FileExists(TempPath + UndefPic) then ExtractTemporaryFile(UndefPic); ShowPicHint(TempPath + UndefPic); finally LastIndex := Index; end; end; procedure CompOnMouseLeave(Sender: TObject); begin PicForm.Hide; LastIndex := -1; end; procedure InitInfo(); begin WizardForm.ComponentsList.OnItemMouseMove := @CompOnItemMouseMove; WizardForm.ComponentsList.OnMouseLeave := @CompOnMouseLeave; TempPath := AddBackslash(ExpandConstant('{tmp}')); LastIndex := UNDEF_INDEX; PicForm := TForm.Create(WizardForm) with PicForm do begin BorderStyle := bsNone; FormStyle := fsStayOnTop; InfoPic := TBitmapImage.Create(PicForm) with InfoPic do begin Parent := PicForm; AutoSize := True; end; end; SetWindowLong(PicForm.Handle, GWL_EXSTYLE, GetWindowLong(PicForm.Handle, GWL_EXSTYLE) or WS_EX_LAYERED); SetLayeredWindowAttributes(PicForm.Handle, 0, ALPHA_BLEND_LEVEL, LWA_ALPHA); end; procedure InitializeWizard(); begin InitInfo(); end; Вопросы: 1) Как пофиксить утечку памяти в данном скрипте? Поясняю: При быстром перемещении курсора между компонентами (к которым привязана картинка) увеличивается нагрузка на проц. 2) Как убрать мерцание (я так полагаю он автообновляется при каждом выборе компонента). images.rar
×
×
  • Create New...