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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 23.10.2012, 20:31   #1
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
Восклицание Форма как SideBar или systray Windows

Здравствуйте!
Возникла такая проблема, хочу сделать программу которая в развернутом виде приклеивалась бы к краям рабочей области эрана и сдвигала все открытые окна на свой размер подобно системной панеле Windows или SideBara. Весь инет обыскал но ничего не нашел как это сделать.
Как форму приклеплять разобрался достаточно просто поменять свойсто Align на нужное значение, а вот как сделать чтобы форма не перекрывалсь и не перекрывала остальные окна windows, а сдвигала на свой размер.
Если можно с исходничком.




Последний раз редактировалось DIMASIKXXX32; 23.10.2012 в 21:42.
DIMASIKXXX32 вне форума
Старый 23.10.2012, 21:10   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Form style = fsStayOnTop
Человек_Борща вне форума
Старый 23.10.2012, 21:23   #3
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Form style = fsStayOnTop

Спасибо. но это не то совсем это свойство делает просто по верх всех окон но не сдвигает все формы. Обратите внимание на работу системной панели Windows все окна разворачиваются до нее, а не под ней и не сверху нее. Так же надо и мне
DIMASIKXXX32 вне форума
Старый 23.10.2012, 22:16   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

http://programmersforum.ru/showthread.php?t=47638
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 23.10.2012, 22:24   #5
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
если можно поподробнее...
DIMASIKXXX32 вне форума
Старый 23.10.2012, 22:26   #6
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

SystemParametersInfo(SPI_SETWORKARE A,0,@screenRect,SPIF_SENDCHANGE);

Уже пробовал эту функцию таким образом

var
r:trect;
begin
r.left:=0;
r.top:=0;
r.rigth:=1000;
r.bottom:=768;
SystemParametersInfo(SPI_SETWORKARE A,0,@r,0);
end;

но чего то как то криво работает...

Последний раз редактировалось DIMASIKXXX32; 23.10.2012 в 22:34.
DIMASIKXXX32 вне форума
Старый 23.10.2012, 23:14   #7
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

пробовал эту функцию таким образом
Код:
procedure TF_Main.FormCreate(Sender: TObject);
  var
    r:TRect;
    wnd,WndInsertAfter:HWND;
begin
   r:=Rect(0,0,1000,768);
   SystemParametersInfo(SPI_SETWORKAREA,0,@r,SPIF_SENDCHANGE);
   SetWindowPos(Wnd, WndInsertAfter, 0, 0, 1000, 768, SWP_DRAWFRAME);
end;
но чего то как то криво работает...
У меня теперь все окна даже при закрытии моей формы висят криво пока разрешение не сменю

Последний раз редактировалось DIMASIKXXX32; 24.10.2012 в 02:30.
DIMASIKXXX32 вне форума
Старый 23.10.2012, 23:20   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

там уведомление о настройках надо руками броадкастить.
только тогда я смог заставить это работать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 23.10.2012, 23:33   #9
DIMASIKXXX32
Пользователь
 
Регистрация: 26.01.2010
Сообщений: 72
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
там уведомление о настройках надо руками броадкастить.
только тогда я смог заставить это работать.
Я чего то не пойму
как установить рабочую область понял нашел список команд которыми пользуется SystemParametersInfo но вот когда его меняю моя форма тоже изменяет положение в месте с ней.

и опять же моя форма находится в рабочей области так как она останется за ней чего то я не понимаю

и как перерисовать все окна этой функцией SetWindowPos и это надо делать по таймеру постоянно так как окна не будут постоянно висеть одни и те же.

Последний раз редактировалось DIMASIKXXX32; 23.10.2012 в 23:35.
DIMASIKXXX32 вне форума
Старый 24.10.2012, 00:33   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

этой функцией с этим флагом вы задаете рабочую область, а именно, область как развернется окно максимально.
вы должны разослать уведомление всем окнам о том что параметры системы изменены, только тогда они примут новые параметры.
Код:
SendMessage(HWND_BROADCAST,WM_WININICHANGE,0,0);
SetWindowPos не с той степи, это потом было и к другому.

PS: посмотрите на скрин с первого сообщения темы, это то что вы хотите получить?(проигрыватель над панелью задач)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почти Vista SideBar всего 21 kb kachkarvv Софт 4 26.01.2012 22:25
Форма внути формы, или как создать предпросмотр скинов AC? Человек_Борща Общие вопросы Delphi 4 07.04.2011 16:36
С++ гаджет для Windows SideBar PavelGord Общие вопросы C/C++ 0 20.02.2011 21:57
сдвигается sidebar в ie6 coolerS HTML и CSS 0 12.12.2009 15:22
Отчет времени на своей иконке в SYSTray Yuran Общие вопросы Delphi 1 04.06.2008 23:43