Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.09;
Скачать: CL | DM;

Вниз

Сворачивающаяся панель   Найти похожие ветки 

 
serjo ©   (2008-09-29 22:28) [0]

В некоторых программах я видел сбоку такую кнопку в виде полоски, кликая по которой открывается дополнительная панель. Скажите (а лучше, если не затруднит покажите), как сделать такую фишку. Желательно код. Заранее вам благодарен.


 
<Evil>   (2008-09-29 23:44) [1]

panel1.visible := true; ?


 
{RASkov} ©   (2008-09-29 23:53) [2]

Попробуй такой пример:
Создай новый проект, дважды кликни по форме, тем самым добавив обработчик OnCreate.
Затем выдели всё что в окне редактора кода удали и замени его кодом ниже:
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   procedure FormCreate(Sender: TObject);
 private { Private declarations }
   FFrm: TForm;
   procedure FormMove(var Ms: TMessage); message WM_MOVE;
   procedure SetPosFrm(Frm: TForm);
   procedure PnClick(Sender: TObject);
 public { Public declarations }
 end;

var Form1: TForm1;

implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var C, R: Integer;
begin
 Width:=400;
 Height:=250;
 BorderStyle:=bsSingle;
 Tag:=Integer(TPanel.Create(self));
 with TPanel(Tag) do begin
  Parent:=Self;
  Align:=alRight;
  Width:=7;
  Caption:=">";
  OnClick:=PnClick;
 end;
 FFrm:=TForm.Create(Self);
 FFrm.BorderStyle:=bsNone;
 FFrm.Width:=150;
 for R:=1 to 7 do
  for C:=1 to 4 do
  with TButton.Create(FFrm) do begin
   Parent:=FFrm;
   BoundsRect:=Rect(25*C, 25*R, 25*C+25, 25*R+25);
  end;
end;

procedure TForm1.SetPosFrm(Frm: TForm);
begin
 Frm.Left:=Left+Width;
 Frm.Top:=Top+GetSystemMetrics(SM_CYCAPTION);
 Frm.Height:=Height-GetSystemMetrics(SM_CYCAPTION);
end;

procedure TForm1.PnClick(Sender: TObject);
begin
 SetPosFrm(FFrm);
 if FFrm.Visible then begin
  AnimateWindow(FFrm.Handle, 200, AW_SLIDE or AW_HOR_NEGATIVE or AW_HIDE);
  FFrm.Visible:=False;
  TPanel(Tag).Caption:=">";
 end else begin
  AnimateWindow(FFrm.Handle, 200, AW_SLIDE or AW_HOR_POSITIVE);
  FFrm.Visible:=True;
  TPanel(Tag).Caption:="<";
 end;
end;

procedure TForm1.FormMove(var Ms: TMessage);
begin
 if not Assigned(FFrm) or not FFrm.Visible then Exit;
 SetPosFrm(FFrm);
end;

end.

Это не готовое решение, так как тут имеются некоторые косяки и недочеты.... но думаю для старта пойдет.


 
Amoeba ©   (2008-09-30 00:02) [3]

http://www.torry.net/pages.php?id=161
Компонент TWhisperSplitter



Страницы: 1 вся ветка

Текущий архив: 2008.11.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.007 c
2-1222794081
Petr
2008-09-30 21:01
2008.11.09
О смене пользователя


2-1222932887
JohnKorsh
2008-10-02 11:34
2008.11.09
Вопрос по компоненту IdlCmpClient


8-1187616856
Иванн
2007-08-20 17:34
2008.11.09
разделить окружность на равные доли


8-1187600870
leonidus
2007-08-20 13:07
2008.11.09
приложение с GDI+ не запустилось на Win2000, что делать?


3-1209208049
hahol_64_rus
2008-04-26 15:07
2008.11.09
не могу создать тригер