Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Плавное изменение высоты визуального компонента на примере TListBox

Delphi , Компоненты и Классы , Списки

Плавное изменение высоты визуального компонента на примере TListBox

Автор: Novill
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Плавное изменение высоты визуального компенента (пример на ListBox)

Изменение высоты визуального компенента от Min до Max шагом Step
с задержкой на шаге StepSleep миллисекунд. Понравилась краткость.

Зависимости: uses Windows,Classes,Forms,Controls, StdCtrls
Автор:       novill, 2novill@mail.ru
Copyright:   novill
Дата:        19 июля 2002 г.
***************************************************** }

procedure ListBoxFade(ListBox: TListBox; const Flag: Boolean;
  const Min, Max, Step, StepSleep: integer);
begin
  with ListBox do
  begin
    Height := Min + (1 - ord(Flag)) * (Max - Min);
    repeat
      Height := Height + (2 * ord(Flag) - 1) * Step;
      Sleep(StepSleep);
    until (Height <= Min) or (Height >= Max);
  end;
end;

// Пример использования:

implementation

{$R *.DFM}
var
  order: boolean;

procedure ListBoxFade(ListBox: TListBox; const Flag: Boolean;
  const Min, Max, Step, StepSleep: integer);
begin
  with ListBox do
  begin
    Height := Min + (1 - ord(Flag)) * (Max - Min);
    repeat
      Height := Height + (2 * ord(Flag) - 1) * Step;
      Sleep(StepSleep);
    until (Height <= Min) or (Height >= Max);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBoxFade(listbox1, order, 21, 105, 21, 10);
  order := not order;
end;

end.

Этот код-набор на языке Delphi демонстрирует, как изменять высоту визуального компонента (в этом случае, TListBox) от минимального значения до максимального с указанным шагом и задержкой.

Обзор кода:

  1. Процедура ListBoxFade принимает пять параметров:
    • ListBox: компонент TListBox, высоту которого нужно изменить.
    • Flag: булевое значение, определяющее, должна высота увеличиваться или уменьшаться (true для увеличения, false для уменьшения).
    • Min, Max и Step: целые числа, представляющие минимальное, максимальное и шаг изменения высоты соответственно.
    • StepSleep: целое число, указывающее задержку между шагами в миллисекундах.
  2. Процедура использует простую формулу для расчета новой высоты списка в зависимости от значения флага:
    • Если Flag истинно (увеличение), высота увеличивается на Step.
    • Если Flag ложно (уменьшение), высота уменьшается на Step.
  3. Процедура затем вступает в цикл, повторяющийся до тех пор, пока высота не достигнет минимального или максимального значения.
  4. В каждом итерации цикла высота обновляется в зависимости от флага, а затем программа спит на StepSleep миллисекунд с помощью функции Sleep.

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

Замечания по коду:

  • Использование битовых операций (ord(Flag) и 2 * ord(Flag) - 1) может выглядеть необычно, но достигает желаемого эффекта изменения высоты между увеличением и уменьшением.
  • Функция sleep используется для введения задержки между шагами изменения высоты. Это можно настроить, чтобы контролировать скорость анимации.
  • Код использует глобальную переменную order для хранения информации о том, должна высота увеличиваться или уменьшаться. Это может потенциально вызвать проблемы, если несколько потоков одновременно доступны к этой переменной.

Плавное изменение высоты визуального компонента TListBox с помощью процедуры ListBoxFade.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Списки ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-10-08 18:01:35/0.0038409233093262/0