Главная страница
    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.014 c
15-1142853447
Rentgen
2006-03-20 14:17
2006.04.09
для чего нужна ISaGRAF ?


9-1127930102
Conferno
2005-09-28 21:55
2006.04.09
Настройки качества текстур


15-1142634527
hgd
2006-03-18 01:28
2006.04.09
Delphi for .NET Compact Framework Technology Preview


2-1143033318
sanich
2006-03-22 16:15
2006.04.09
Как динамически формировать имя переменной?


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