Имя пользователя:
Пароль:
 

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

Аватара для Johny777

Ветеран


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

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


Gnom_aka_Lexander, El Sanchez, ваши выкатывающиеся панели очень классные, но есть один недостаток - после завершения таймера не выгружается оперативка
те после каждого выката прибавляется по 4кб при закате по 4 = 8кб на один закат/выкат


поэтому я прикинул создать похожий код без использования таймеров (на основе циклов с задержкой)
но проблема с закатом во время выката и наоборот
вот ранняя версия (пока что ещё примитивная)

читать дальше »
Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
OutputDir=.

[   Code]
var
  SettingPanel   : TPanel;
  Flag           : boolean;
  Stop: boolean;
  

function GetTickCount: DWORD; external 'GetTickCount@kernel32.dll stdcall';

procedure Delay(dwMilliseconds: Longint);
var
  iStart, iStop: DWORD;
begin
  iStart := GetTickCount;
  repeat
    iStop := GetTickCount;
    Application.ProcessMessages;
  until (iStop - iStart) >= DWORD(dwMilliseconds);
end;

procedure Roll(Ctrl:TControl);
begin
  if Ctrl.Top < 0 then
  begin
    repeat
      Ctrl.Top := Ctrl.Top + ScaleY(1);
      Delay(1);
      if Stop then
      begin
        Stop := False;

        Break;
        Exit;
      end;
    until Ctrl.Top = 0;
    Exit;
  end;
  
  if Ctrl.Top > -Ctrl.Height then
  begin
    repeat
      Ctrl.Top := Ctrl.Top - ScaleY(1);
      Delay(0);
      if Stop then
      begin
        Stop := False;

        Break;
        Exit;
      end;
    until Ctrl.Top = -Ctrl.Height;
    Exit;
  end;
end;

procedure HideShow(Sender: TObject);
begin
  Roll(SettingPanel);
end;



procedure InitializeWizard();
 begin
  Flag:= False;
  Stop := False;

  SettingPanel := TPanel.Create(WizardForm);
  with SettingPanel do
  begin
    Parent := WizardForm;
    SetBounds(ScaleX(0),ScaleY(-315),ScaleX(497),ScaleY(313));
    ParentBackground := False;
  end;

  with TButton.Create(WizardForm) do
  begin
    OnClick:= @HideShow;
    SetBounds(ScaleX(40),ScaleY(327),ScaleX(75),ScaleY(25))
    Caption:='Show';
    Parent:= WizardForm;
  end;
end;


просьба:
кто-нибудь помогите пожалуйста исправить глючность прерывания движения

Отправлено: 19:36, 09-10-2012 | #1100