Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2008, 15:55   #1
papa_serg
Пользователь
 
Регистрация: 01.04.2008
Сообщений: 14
По умолчанию Высота taskbar'a

Здравствуйте, использую в своей программе, т.н. попап окна, по сути, просто отдельная форма, со специальными параметрами top и left.
Код:
popupform.top   :=  Screen.Height-popupform.Height;
popupform.left  :=  Screen.Width-popupform.Width;
popupform.show;
Вопрос в сл. как определить, высоту taskbar'a, что бы форма была над ним?

Спасибо.
papa_serg вне форума Ответить с цитированием
Старый 25.04.2008, 16:07   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пример позволяет узнать координаты расположения панели задач.

Код:
uses .., ShellApi;

var
  AppBarData  : TAppBarData;
  bAlwaysOnTop: Boolean; {Поверх окон}
  bAutoHide   : boolean; {Авт. убирать с экрана}
  ClRect      : TRect;   {Клиентские области}
  Rect        : TRect;
  Edge        : UInt;    {Местоположение TaskBar}

procedure DetectTaskBar;
begin
  AppBarData.hWnd   := FindWindow('Shell_TrayWnd', nil);
  AppBarData.cbSize := sizeof(AppBarData);
  bAlwaysOnTop      := (SHAppBarMessage(ABM_GETSTATE, AppBardata) and  ABS_ALWAYSONTOP) < >  0;
  bAutoHide         := (SHAppBarMessage(ABM_GETSTATE, AppBardata) and  ABS_AUTOHIDE) < > 0;
  GetClientRect(AppBarData.hWnd, ClRect.rc);
  GetWindowRect(AppBarData.hwnd, rect);
  if (Rect.top >  0) Then
   Edge := ABE_BOTTOM
  else
  if (Rect.Bottom <  Screen.Height) Then
   Edge := ABE_TOP
  else
  if Rect.Right <  Screen.Width Then
   Edge := ABE_LEFT
  else
   Edge := ABE_RIGHT;
end;
DelphiWorld (c)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.04.2008, 16:14   #3
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

М-мм.... только не думаю, что здесь важна высота таскбара, скорее координаты рабочей зоны: SystemParametersInfo + SPI_GETWORKAREA
B_N вне форума Ответить с цитированием
Старый 25.04.2008, 16:14   #4
papa_serg
Пользователь
 
Регистрация: 01.04.2008
Сообщений: 14
По умолчанию

Спасибо. Попробую.
papa_serg вне форума Ответить с цитированием
Старый 25.04.2008, 16:44   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

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

Проще помоему включить панель задач поверх окон, и делов то.
P.S. Можно реплику Оффтопиком считать...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Высота таск бара... Altera Win Api 3 28.07.2008 10:41
Деревья. макс высота Fuaran8989 Помощь студентам 4 27.05.2008 09:32
Аццкий треугольник и его высота Crazy D0G Помощь студентам 1 20.01.2008 18:25
Высота RichEdit по количеству строк. Компоратор Компоненты Delphi 2 15.05.2007 23:57