Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.11.09;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.004 c
2-1222670540
Iris
2008-09-29 10:42
2008.11.09
Пробелма записи в файл


15-1221569168
oldman
2008-09-16 16:46
2008.11.09
Кто из Нижнего, помяните товарища.


15-1221191564
Big Joe
2008-09-12 07:52
2008.11.09
12 сентября - День программиста


15-1221252916
RaMoNeZz
2008-09-13 00:55
2008.11.09
Помогите упростить код и проверить правильно ли написан он....


2-1222794081
Petr
2008-09-30 21:01
2008.11.09
О смене пользователя





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский