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

Вниз

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

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

Наверх





Память: 0.46 MB
Время: 0.012 c
1-1141322952
StriderMan
2006-03-02 21:09
2006.04.09
TBlobField не записывается как NULL


3-1140074393
Корешь
2006-02-16 10:19
2006.04.09
Как выбрать только уникальные записи


8-1129797644
dizard
2005-10-20 12:40
2006.04.09
Проблема с увеличением графических фигур


2-1143500522
Da Stranger
2006-03-28 03:02
2006.04.09
Изменение размера массива


9-1127664949
Trimp
2005-09-25 20:15
2006.04.09
OpenGL и текстуры





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