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

Вниз

Окно программы как панель задач   Найти похожие ветки 

 
NightLord ©   (2006-02-17 15:21) [0]

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


 
Tor ©   (2006-02-17 17:03) [1]

Если другие окна этойже программы, то легко. Ложеш на главную форму CoolBar на него ToolBar. При показе другого окна обрабатываешь размер и положение, и добавляешь кнопку в ToolBar. Вот впринципе и все.


 
DVM ©   (2006-02-17 17:17) [2]


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

Это называется AppBar. Все реализуется одной функцией ShAppBarMessage.


 
NightLord ©   (2006-02-17 19:55) [3]


> DVM ©   (17.02.06 17:17) [2]

Спасибо, это то что нужно.


 
rolex   (2006-03-02 19:39) [4]

Хочу сделать боковую панель (типа SideBar).
Сделал так:
var
    ObenBar : TAppBarData;
    ObenBarCreate : Integer;

procedure TForm1.Button1Click(Sender: TObject);
begin
ObenBar.cbSize    := SizeOf(TAppBarData);
       ObenBar.hWnd      := form1.Handle;
       ObenBar.uEdge     := ABE_TOP;
       ObenBar.rc.Left   := Form1.Left;
       ObenBar.rc.Top    := Form1.Top;
       ObenBar.rc.Right  := Form1.Width;
       ObenBar.rc.Bottom := Form1.Height;
       ObenBarCreate := SHAppBarMessage(ABM_NEW, ObenBar);
       if ObenBarCreate <> 0 then begin
          SHAppBarMessage(ABM_QUERYPOS, ObenBar);
          SHAppBarMessage(ABM_SETPOS, ObenBar);
          Application.ProcessMessages;
          MoveWindow(ObenBar.hWnd, ObenBar.rc.Left, ObenBar.rc.Top, ObenBar.rc.Right, ObenBar.rc.Bottom, True);
       end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if ObenBarCreate <> 0 then begin
       SHAppBarMessage(ABM_REMOVE, ObenBar);
       ObenBarCreate := 0;
    end;
end;


Но немного не получается. Попробуйте сами, и увидите косяк.

P.S. в OnShow:
form1.Height:=Screen.WorkAreaHeight;
form1.top:=0;
Form1.width:=170;
form1.Left:=Screen.WorkAreaWidth-Form1.Width;


 
NightLord ©   (2006-03-03 02:44) [5]

Я делел с выравниванием по верхней части, и этот код работает для WinXp точно.

var abd :APPBARDATA;
procedure TfMain.FormCreate(Sender: TObject);
 abd.cbSize := sizeof(abd);
 abd.hWnd := fMain.Handle;
 abd.uCallbackMessage := WM_USER + 100;
 SHAppBarMessage(ABM_NEW, abd);

 abd.uEdge := ABE_TOP ;
 SetRect(abd.rc, 0, 0, GetSystemMetrics(SM_CXSCREEN),
       GetSystemMetrics(SM_CYSCREEN));
 Height:=GetSystemMetrics(SM_CYSCREEN);
 SHAppBarMessage(ABM_QUERYPOS, abd);
 abd.rc.Bottom:=abd.rc.top+Height;

 SHAppBarMessage(ABM_SETPOS, abd);
 Application.ProcessMessages;
 SetWindowPos(abd.hWnd,0, abd.rc.left, abd.rc.top,
    abd.rc.right-abd.rc.left,fMain.Height
    {abd.rc.bottom-abd.rc.top},
    SWP_NOZORDER or SWP_NOACTIVATE);
end;

procedure TfMain.FormDestroy(Sender: TObject);
var i:Integer;
begin
 SHAppBarMessage(ABM_REMOVE, abd);
end;


 
Гошик Кувшинов   (2006-03-03 12:31) [6]

посмотри тут http://rsdn.ru/article/winshell/appbars.xml



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

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

Наверх




Память: 0.46 MB
Время: 0.015 c
1-1141505242
Piter
2006-03-04 23:47
2006.04.09
Как сделать, чтобы Проводник выгрузил DLL


15-1142261860
Boris Marchenko
2006-03-13 17:57
2006.04.09
Делфи - быть или не очень?..


5-1128681817
salexn
2005-10-07 14:43
2006.04.09
Редактор свойств компаненты


2-1143456338
Troan_81
2006-03-27 14:45
2006.04.09
Как засечь время?


2-1143275526
Alex7
2006-03-25 11:32
2006.04.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский