Главная страница
    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.014 c
1-1141459613
webpauk
2006-03-04 11:06
2006.04.09
Вставка control


1-1141375130
mss
2006-03-03 11:38
2006.04.09
Как это сделать


10-1116491284
MaxxxZor
2005-05-19 12:28
2006.04.09
Как вытащить все картинки из файла Excel


2-1143100184
Bool
2006-03-23 10:49
2006.04.09
FormKeyDown


2-1143436391
pkm
2006-03-27 09:13
2006.04.09
Char и string.





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