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

Вниз

Выезжающая боковая панель   Найти похожие ветки 

 
TechnoDreamer ©   (2004-05-02 14:07) [0]

Подскажите, есть ли какой-нибуть компонент делающий подобное.
Как например сделано в ICQ4? Или что-нибуть почитать по этому поводу, а даже не знаю по какой фразе это искать!


 
Rouse_ ©   (2004-05-02 16:26) [1]

Вот такое чтоли?

procedure TForm1.Button1Click(Sender: TObject);
var
 F: TForm;
 M: TMemo;
 B: TButton;
 I: Integer;
begin
 F := TForm.Create(Self);
 F.Left := Left - 100;
 F.Width := 100;
 F.Height := Height;
 F.Top := Top;
 F.BorderStyle := bsToolWindow;
 M := TMemo.Create(F);
 M.Parent := F;
 M.Align := alTop;
 B := TButton.Create(F);
 B.Parent := F;
 B.OnClick := Button2Click;
 B.Caption := "Close";
 F.Show;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 TForm(GetParentForm(TButton(Sender))).Close;
end;


 
DVM ©   (2004-05-02 16:32) [2]


> Rouse_ ©   (02.05.04 16:26) [1]

может он про AppBar?


 
Rouse_ ©   (2004-05-02 17:59) [3]

> [2] DVM ©   (02.05.04 16:32)
Не знаю :)
Я асей не пользуюсь, у меня другой клиент :)


 
Polevi ©   (2004-05-02 22:57) [4]

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/functions/shappbarmess age.asp


 
TechnoDreamer ©   (2004-05-02 23:29) [5]

> Rouse_

Не, что то типа этого, но совсем не так.

>Polevi

Ссылка, не рабочая.

В общем смысл такой, есть окно. В правой части окна, расположена панель, по левой стороне панельки (в середине) кнопочка. Нажимаешь эту кнопочку, панель уезжает в сторону освобождая место (не обязательно с анимацией), соответственно кнопочка теперь висит на узкой полоске в на краю окна, нажимешь еще раз, она назад выезжает. Такое в многих программах реализовано.
Может кто подскажет?


 
Rouse_ ©   (2004-05-02 23:55) [6]

Эх - где наша не пропадала :)
Ну вот делать мне сегодня нечего, лови: :)

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 end;

var
 Form1: TForm1;
 Panel: TPanel;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
 if not Assigned(Panel) then
 begin
   Panel := TPanel.Create(Self);
   with Form1 do
   begin
     Left := Left - 100;
     Width := Width + 100;
   end;
   Panel.Left := 96;
   Panel.Top := 0;
   Panel.Height := Height - GetSystemMetrics(SM_CYCAPTION) - 10;
   Panel.Parent := Self;
 end
 else
 begin
   FreeAndNil(Panel);
   Width := Width - 100;
   Left := Left + 100;
 end;
end;

end.


Теперь оно? :)


 
TechnoDreamer ©   (2004-05-03 01:02) [7]

В общем, вот так. Подразумевается что кнопка тонкая и находится в на правой грани формы.

unit Unit1;

interface

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

type
TForm1 = class(TForm)
  Button1: TButton;
  procedure Button1Click(Sender: TObject);
end;

var
Form1: TForm1;
Panel: TPanel;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if not Assigned(Panel) then
begin
  Panel := TPanel.Create(Self);
  Panel.Left := Form1.ClientWidth-100;
  Panel.Top := 0;
  Panel.Height := Height - GetSystemMetrics(SM_CYCAPTION) - 10;
  Panel.Width := 100;
  Panel.Parent := Self;
  Button1.Left:=Button1.Left-100;
end
else
begin
  FreeAndNil(Panel);
  Button1.Left:=Button1.Left+100;
end;
end;

end.


Только в этом примере, все компоненты в панели в реалтайме придется создавать, что не сильно удобно.


 
Rouse_ ©   (2004-05-03 01:15) [8]

А ты создавай в Design и Visible используй, ну и пару процедур для отрисовки и анимации...


 
Andy BitOff ©   (2004-05-03 04:56) [9]

Брось на форму Панель и Таймер. На событие таймра поставь эту процедурку. Интервал таймера на 1.

procedure TForm1.Timer1Timer(Sender: TObject);
var
 y,a:integer;
 po,Cpo:TPoint;
 con:TControl;
begin
 GetCursorPos(po);
 y:=po.y;
 po:=ScreenToClient(po);
 Cpo:=Form1.ClientOrigin;
 con:=Form1.ControlAtPos(po,True,True);
 if (con<>nil) and (y>Cpo.y) and (y<Cpo.y+Form1.ClientHeight) then begin
   if (con.Name="Panel1") or (con.Parent.Name="Panel1") then begin
     if Panel1.Top<0 then
       if Panel1.Top+3<0 then Panel1.Top:= Panel1.Top+3  //показать
       else Panel1.Top:=0;
   end;
 end
 else begin
   a:=7-Panel1.Height;
   if Panel1.Top>a then
     if Panel1.Top-3>a then Panel1.Top:= Panel1.Top-3 //убрать
     else Panel1.Top:=a;
 end;
end;


 
Andy BitOff ©   (2004-05-03 05:25) [10]

А вот тоже самое, только с права

procedure TForm1.Timer1Timer(Sender: TObject);
var
 y,a:integer;
 po,Cpo:TPoint;
 con:TControl;
begin
 GetCursorPos(po);
 y:=po.y;
 po:=ScreenToClient(po);
 Cpo:=Form1.ClientOrigin;
 con:=Form1.ControlAtPos(po,True,True);
 if (con<>nil) and (y>Cpo.y) and (y<Cpo.y+Form1.ClientHeight) then begin
   if (con.Name="Panel1") or (con.Parent.Name="Panel1") then begin
     if Panel1.Left>Form1.ClientWidth-Panel1.Width then
       if Panel1.Left+Panel1.Width-3>Form1.ClientWidth then Panel1.Left:= Panel1.Left-3  //показать
       else Panel1.Left:=Form1.ClientWidth-Panel1.Width;
   end;
 end
 else begin
   a:=Form1.ClientWidth-7;
   if Panel1.Left<a then
     if Panel1.Left+3<a then Panel1.Left:= Panel1.Left+3 //убрать
     else Panel1.Left:=a;
 end;
end;


 
Polevi ©   (2004-05-03 09:19) [11]

> [5] TechnoDreamer ©   (02.05.04 23:29)
ссылка рабочая, если пошевелить мозгами (пробел лишний удалить)



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

Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.035 c
6-1080039228
V@LER@N
2004-03-23 13:53
2004.05.16
Сниффер - не сниффер...


9-1059490261
Rooo
2003-07-29 18:51
2004.05.16
Как поставить GlScene 09b на Delphi 7?


1-1082932406
Мыш
2004-04-26 02:33
2004.05.16
Перестал компилироваться пакет


1-1082973506
Daman
2004-04-26 13:58
2004.05.16
Как получить тег любого объекта кликом на него


14-1083088373
Undert
2004-04-27 21:52
2004.05.16
Мобильный телефон





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский