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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2007, 11:39   #1
Romanbl4
Форумчанин
 
Аватар для Romanbl4
 
Регистрация: 20.06.2007
Сообщений: 144
Вопрос Как создать программу-панель (как панель Msoffice), чтобы была поверх всех окон

Хочу создать программу-панель, типа панели запуска MSOffice в Office 97 или типа панели задач (меню "пуск"), чтобы она не загораживала ярлыки на рабочем столе, а как бы являлась его частью (находясь при этом справа, или слева, или сверху рабочего стола). Помогите, столько всего пересмотрел, ничего не могу найти.
Romanbl4 вне форума Ответить с цитированием
Старый 21.06.2007, 12:19   #2
strannik
python developer
Пользователь Подтвердите свой е-майл
 
Аватар для strannik
 
Регистрация: 30.11.2006
Сообщений: 81
Сообщение

Укажи в свойствах формы (top, left, position, height, width) где и как она должна отображаться.
Границы расширяет тот, кто выходит за них.
strannik вне форума Ответить с цитированием
Старый 21.06.2007, 12:29   #3
Romanbl4
Форумчанин
 
Аватар для Romanbl4
 
Регистрация: 20.06.2007
Сообщений: 144
По умолчанию

Да саму-то форму-панель я уже сделал. А вот сделать так, чтобы она не загораживала значки на рабочем столе, а как бы заставила уменьшить рабочее пространство на desktope - вот это проблема. Я просто путем не могу объяснить... чего хочу добиться... Пример: попробуй щелкнуть на панели задачь (там где "Пуск") правой клавишей и выбери там "Панели инструментов - Создать...", выбери любую папку. Панель создастся на панели задач. Потом щелкни правой клавишей опять на панели задач и убери галочку "закрепить панель задач". Перетащи созданную панель, "схватив" за подпись (название) панели, например, вверх. Щелкни на ней правой клавишей и поставь галочку "Поверх остальных окон". А теперь попробуй развернуть любое окно, например, проводник, на весь экран - он ее не загородит а встанет с ней в стык. Вот этого эффекта я хочу добиться со своей программой.
Romanbl4 вне форума Ответить с цитированием
Старый 21.06.2007, 17:29   #4
Компоратор
 
Регистрация: 07.05.2007
Сообщений: 4
По умолчанию

Хм... Вероятно нужно иконки как-то сдвигать. Такое возможно, но вот как - этого я не знаю.
Компоратор вне форума Ответить с цитированием
Старый 22.06.2007, 05:59   #5
strannik
python developer
Пользователь Подтвердите свой е-майл
 
Аватар для strannik
 
Регистрация: 30.11.2006
Сообщений: 81
Сообщение

Для отображения формы поверх всех окон используй api функцию SetWindowPos () - например:
На FormCreate кинь это:

with form1 do
SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
Границы расширяет тот, кто выходит за них.
strannik вне форума Ответить с цитированием
Старый 22.06.2007, 10:48   #6
НЕ_АЙС
Форумчанин
 
Регистрация: 18.04.2007
Сообщений: 135
По умолчанию

Так...ну судя по всему нужно брать хэндл ListView рабочего стола и поиграть с его размерами, т.е когда появляется твоя панелька слева, то уменьшить ширину на ширину панели и сдвинуть вправо...
Вот такой вот изврат)
Скорее всего это делается по другому, но это первое мнение
НЕ_АЙС вне форума Ответить с цитированием
Старый 27.06.2007, 17:23   #7
Romanbl4
Форумчанин
 
Аватар для Romanbl4
 
Регистрация: 20.06.2007
Сообщений: 144
По умолчанию

Хендл рабочего стола я взял

function GetDesktopListViewHandle: THandle;
var
S: String;
begin
Result := FindWindow('ProgMan', nil);
Result := GetWindow(Result, GW_CHILD);
Result := GetWindow(Result, GW_CHILD);
SetLength(S, 40);
GetClassName(Result, PChar(S), 39);
if PChar(S) <> 'SysListView32' then Result := 0;
end;

А кокое сообщение нужно послать, чтобы изменить размер
sendmessage(GetDesktopListViewHandl e, LWM_????,?????,????)
Romanbl4 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поверх всех окон delphin100 Общие вопросы Delphi 2 19.04.2008 19:00
Поверх всех окон Патрон Общие вопросы Delphi 1 18.04.2008 16:57
форму поверх всех окон КатенокСПб Общие вопросы Delphi 2 26.07.2007 17:48
Форма поверх всех окон. Kamikadze_666 Общие вопросы Delphi 1 16.05.2007 07:10
чекбокс - поверх всех окон puz Компоненты Delphi 6 11.05.2007 17:58