
24.10.2010, 12:33
|
 |
Новичок
|
|
Регистрация: 19.11.2009
Сообщения: 73
Репутация: 12
|
|
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Edit1: TEdit;
Edit2: TEdit;
CheckBox1: TCheckBox;
Button1: TButton;
SpeedButton1: TSpeedButton;
BitBtn1: TBitBtn;
Label1: TLabel;
Memo1: TMemo;
ComboBox1: TComboBox;
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.SpeedButton1Click(Sender: TObject);
var i,h: integer;
begin
h:=form1.Panel1.Height+form1.Panel1.Top;
if panel1.Height=160 then // 160 это например высота когда РАскрыто все
begin
panel1.Height:=40; // 40 это например высота когда скрыто все
for i:=0 to form1.ControlCount-1 do
// далее бежим по компонентам, если компоненты ниже нашего "спойлера",
// то сдвигаем их вверх
if form1.Controls[i].Top > h then
form1.Controls[i].Top:=form1.Controls[i].Top-120; // 120 это 160-40
end
else // тут тоже самое только наоборот
begin
panel1.Height:=160;
for i:=0 to form1.ControlCount-1 do
if form1.Controls[i].Top > h then
form1.Controls[i].Top:=form1.Controls[i].Top+120;
end;
end;
end.
скрины:
 
|