Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2008, 23:21   #1
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
По умолчанию

Добрый день!

Как создать плавно сворачивающийся и раскрывающийся контрол, например панель. Или если можно ссылку на пример.

Всем спасибо!

Я попробывал такой код, но он очень некоррекно разворачивает и сворачивет (Panel1.Height = 127, при создании формы устанавливаю Timer1.Enabled := False; Timer1.Interval := 250 или 1000 - эффект все равно очень плохой зрительно!):

procedure TForm1.Buttom1Click(Sender: TObject);
begin
Timer1.Enabled := True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Button1.ImageIndex = 7 then
begin
Panel1.Height := Panel1.Height + 5;
if Panel1.Height > 127 then
Timer1.Enabled := False;
end
else
begin
Panel1.Height := Panel1.Height - 5;
if Panel1.Height < 1 then
Timer1.Enabled := False;
end;
end;

Подскажите, пожалуйста, лучшее решение может через WinAPI.
Всем спасибо!

Последний раз редактировалось Stilet; 10.04.2008 в 08:53.
SkAndrew вне форума Ответить с цитированием
Старый 10.04.2008, 00:11   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от SkAndrew Посмотреть сообщение
Я попробывал такой код, но он очень некоррекно разворачивает и сворачивет (Panel1.Height = 127, при создании формы устанавливаю Timer1.Enabled := False; Timer1.Interval := 250 или 1000 - эффект все равно очень плохой зрительно!):
Просто прибавлять по пять пикселей - это очень некрасивое решение, скажем так. Если окно будет увеличиваться большими скачками, буквально за 2-4 раза, всё будет намного красивее. Проверьте, не поленитесь.
B_N вне форума Ответить с цитированием
Старый 10.04.2008, 00:19   #3
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
По умолчанию Все равно такой код работает скачками. Нужен код плавного разворачивания и сворачивания контрола!

Спасибо не поленился и попробывал :-)
Все равно такой код работает скачками. Нужен код плавного разворачивания и сворачивания контрола!
Есть еще какие-то мнения на эту тему?
Всем спасибо!
SkAndrew вне форума Ответить с цитированием
Старый 10.04.2008, 09:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну в принципе ничего нового не скажу, но вот если счелкнуть в этом коде по кнопке она плавно свернется:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  procedure t;
var
  Form1: TForm1;

implementation

{$R *.dfm}
  //********* PROCEDURE**********
  procedure t;
  //const
  Var rd:integer;
  begin
  randomize;
  rd:=(random(4));
  while (Form1.Button1.Width>50)and(Form1.Button1.Height>50) do begin
    Form1.Button1.Width:=Form1.Button1.Width-rd;
    Form1.Button1.Height:=Form1.Button1.Height-rd;
    sleep(10);
  end;
  end;
  //********* END PROCEDURE******* {}


procedure TForm1.Button1Click(Sender: TObject);
var ti:cardinal;
begin
CreateThread(nil,0,@t,0,CREATE_NEW,ti);
end;

end.
Плавность вроде путевая.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.04.2008, 09:28   #5
Романнн
Пользователь
 
Регистрация: 04.11.2007
Сообщений: 64
По умолчанию

вот такая штука(только на примере формы)
получается эффект торможения к конечной точке:
form4.Top:=form4.Top-form4.Top div 10;
это всё в таймер.....и скорость торможения зависит от числа после div.
да...и желательно поставить условие типа если форм.топ < 15(например), то форм.топ:=0;

Последний раз редактировалось Романнн; 10.04.2008 в 09:30.
Романнн вне форума Ответить с цитированием
Старый 10.04.2008, 10:22   #6
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
По умолчанию Stilet - спасибо за пример, но он не компилируется.

Stilet - спасибо за пример, но он не компилируется. Ошибки в строке:
CreateThread(nil,0,@t,0,CREATE_NEW, ti);
Что здесь не так?
Спасибо!
SkAndrew вне форума Ответить с цитированием
Старый 10.04.2008, 10:53   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Опа. еще один счастливый обладатель немого компилятора. )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.04.2008, 11:01   #8
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
По умолчанию Ошибка: E2036 Variable required

Извините, в каком плане "рнемого компилятора". Ошибка: E2036 Variable required на строке функции в процедуре кнопки. Спасибо.
SkAndrew вне форума Ответить с цитированием
Старый 10.04.2008, 11:09   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Вот другое дело.
хм... На Д6 все путем... Какая Делфа?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.04.2008, 11:27   #10
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
По умолчанию

Ошибка на codegear rad studio delphi 2007 for win32.
Нашел вот такой вариат, но он ничего не хочет делать с панелью.
Спасибо

Извините пример такой:
AnimateWindow(Panel1.Handle, 200, AW_VER_POSITIVE or AW_HOR_POSITIVE);
Спасибо.

Последний раз редактировалось Stilet; 10.04.2008 в 11:42.
SkAndrew вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дано четырехзначное число, заданное в символьном виде, например, '1954'. Напечатать его текстом, например gred Помощь студентам 13 31.03.2008 22:24
Внедрить контрол в FlexGrid beryllium Общие вопросы .NET 0 21.02.2008 01:09
Плавно выпадающее меню для Mozilla Firefox мЕхаил =) JavaScript, Ajax 6 22.12.2007 23:46
Как создать программу-панель (как панель Msoffice), чтобы была поверх всех окон Romanbl4 Общие вопросы Delphi 6 27.06.2007 17:23
Как плавно поменять цвет формы гера Помощь студентам 1 20.04.2007 15:35