Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 127

Раздел: Delphi » Прочее
/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
В Winamp 5.0 есть выдвижная панель "Настройки". Как можно сделать такую в Delphi?

YPCom Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: YPCom (статус: Посетитель)
Вопрос отправлен: 26 ноября 2008, 14:11
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 16; последнее сообщение — 27 ноября 2008, 10:25; участников в обсуждении: 3.
Вадим К

Вадим К (статус: Академик), 26 ноября 2008, 14:24 [#1]:

Там просто увеличивается размер окна. То есть что то в стиле Height := 200;
Галочка "подтверждения прочтения" - вселенское зло.
YPCom

YPCom (статус: Посетитель), 26 ноября 2008, 14:33 [#2]:

А если нужно открыть вправо?
Вадим К

Вадим К (статус: Академик), 26 ноября 2008, 14:43 [#3]:

width := 300?
Конечно, можно сделать все через таймер и будет плавно открываться
надо только убрать у формы скролы и компоненты, которые не влазят, будут просто скрываться.
Галочка "подтверждения прочтения" - вселенское зло.
YPCom

YPCom (статус: Посетитель), 26 ноября 2008, 14:49 [#4]:

Нужно создавать 2 формы и делать одну невидимой?
Вадим К

Вадим К (статус: Академик), 26 ноября 2008, 14:51 [#5]:

зачем? можно и одной обойтись
Галочка "подтверждения прочтения" - вселенское зло.
YPCom

YPCom (статус: Посетитель), 26 ноября 2008, 14:57 [#6]:

А примерчик можно?
YPCom

YPCom (статус: Посетитель), 26 ноября 2008, 16:47 [#7]:

Ясно, значит либо сами не знаем, либо секретами делиться не хотим.
Вадим К

Вадим К (статус: Академик), 26 ноября 2008, 17:02 [#8]:

просто на работе нет Делфи, а так слёту писать - могу не сделать "красиво".
Галочка "подтверждения прочтения" - вселенское зло.
CaDDaM

CaDDaM (статус: Посетитель), 26 ноября 2008, 21:25 [#9]:

конечно, данный пример не претендует на красоту да и простой слишком, но зато есть простор для фантазии)) :

procedure TForm1.FormCreate(Sender: TObject);
begin
ClientWidth := 230;
Edit1.Visible := false;
Edit1.Width := 50;
Edit1.Left := 230;
Button1.Left := 152
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if Button1.Tag = 0 then
begin
Form1.ClientWidth := 300;
Edit1.Visible := true;
Button1.Tag := 1;
end
else
begin
Edit1.Visible := false;
Form1.ClientWidth := 230;
Button1.Tag := 0;
end;
end;

надеюсь поможет
Вадим К

Вадим К (статус: Академик), 27 ноября 2008, 01:40 [#10]:

Обещал простой пример, сделал:)
На форму надо положить компонент таймер и кнопку, поближе к правому краю. Всё остальное сделат код сам.
Код юнита привожу полностью, смотрим внимательно.
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;
 
type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
    _max:integer;
    _min:integer;
    step:integer;
    direct:integer; // 1 развернуть, -1 свернуть.
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Timer1.Enabled := true;
  Button1.Enabled := false;
  Button1.Caption := 'В процессе';
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  _min := width;           //Минимальный размер формы - текущий размер
  _max := _min + 300;  //Максимальный - на 300 пикселей быстро.
  step := 10;  //шаг изменения размера, меньше - плавнее
  Timer1.Enabled := false;
  Timer1.Interval := 10; //частота изменения размера. больше - медленее будет выежать.
  direct := 1;
  Button1.Enabled := true;
  Button1.Caption := 'Развернуть';
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
  var n:integer;
begin
  n := step * direct + width;
  if n >= _max then begin
     n := _max;
     Timer1.Enabled := false;
     direct := -direct;
     Button1.Enabled := true;
     Button1.Caption := 'Свернуть';
  end;
  if n <= _min then begin
     n := _min;
     Timer1.Enabled := false;
     direct := -direct;
     Button1.Enabled := true;
     Button1.Caption := 'Развернуть';
  end;
  Width := n;
end;
 
end.
Это сделает "плавный выезд право", как отрегулировать скорость - коментарии в коде. Код можно конечно причесать, но писался с тем подходом, что бы было понятно.
В винампа конечно там две части как бы разного размера, и как бы граница есть. Но всё то рисуется - банальный обман зрения. Хотя никто не мешает сделать вторую форму выезжающей.
Разница в размерах делается с помощью "регионов".
Сами компоненты можно разместить на этой части формы. а потом уменьшить форму до нужных размеров.
Галочка "подтверждения прочтения" - вселенское зло.
YPCom

YPCom (статус: Посетитель), 27 ноября 2008, 07:53 [#11]:

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

Вадим К (статус: Академик), 27 ноября 2008, 09:45 [#12]:

Я написал, юзаем регионы! А сделать панель, которая выезжает за пределы своей формы - нельзя.

То есть, для начала, надо сделать форму, которая чуть больше, чем нужное для окна. А потом подрезаем.
Или просто не в курсе, что такое регионы?
Галочка "подтверждения прочтения" - вселенское зло.
YPCom

YPCom (статус: Посетитель), 27 ноября 2008, 09:51 [#13]:

К сожалению не знаю. Опыт работы с Delphi да и вообще программирования - месяц. Вот и ищу помощи на форумах.
YPCom

YPCom (статус: Посетитель), 27 ноября 2008, 09:57 [#14]:

Слышал, что можно часть окна сделать невидимым и отображать анимацию панели в этой части. Только как это сделать?
Вадим К

Вадим К (статус: Академик), 27 ноября 2008, 10:15 [#15]:

Чувствую, что надо в профиле вводить новый пункт - "мой опыт программирования".
Вот прямо на сайте есть статья
Создание непрямоугольных форм в Delphi
Галочка "подтверждения прочтения" - вселенское зло.
YPCom

YPCom (статус: Посетитель), 27 ноября 2008, 10:25 [#16]:

Спасибо, буду разбираться.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:49
Выполнено за 0.03 сек.