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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2010, 13:03   #1
BredoGen
 
Регистрация: 02.02.2010
Сообщений: 6
По умолчанию Плавающее окошко

Приветствую всех
Делаю следующим образом. Создал маленькое окошко, оно не главное. Поэтому для того, чтобы окошко было всегда поверх остальных окон и при сворачивании главной формы оно оставалось:
Код:
/* FormShow */
SetWindowLong(Handle, GWL_HWNDPARENT, GetDesktopWindow);
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
//Потом задаю, где появляться окошку
Left:= Screen.WorkAreaWidth-PopUp.Width;
Top:= Screen.WorkAreaHeight-PopUp.Height;
//Анимация
AnimateWindow(Handle, 300, AW_VER_POSITIVE or AW_SLIDE);
Всё устраивает, кроме одного... У этого окошка появляется значок на панели задач, что очень не желательно...
Собственно вопрос:
Как лучше убрать этот значок или, возможно, задачу можно решить другим способом?

Заранее благодарен за помощь.
BredoGen вне форума Ответить с цитированием
Старый 19.03.2010, 15:43   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

это давно пройденный вопрос по работе с панелью задач при помощи апи
сидим и гуглим...
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 19.03.2010, 16:55   #3
BredoGen
 
Регистрация: 02.02.2010
Сообщений: 6
По умолчанию

Сидел... Гуглил. Стандартный
Код:
ShowWindow(Handle, SW_HIDE);
не помогает, даже есть сделать:
Код:
Application.MainFormOnTaskbar := False;
У главной формы иконка отсутствует, а у формы, для которой
Код:
SetWindowLong(Handle, GWL_HWNDPARENT, GetDesktopWindow);
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
иконка всё равно появляется...
Может я делаю чего не так... Уж помогите советом
BredoGen вне форума Ответить с цитированием
Старый 19.03.2010, 17:30   #4
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

От какой функции точно появляется иконка, если от
SetWindowLong(Handle, GWL_HWNDPARENT, GetDesktopWindow);
то что-то с делфи.
TwiX вне форума Ответить с цитированием
Старый 19.03.2010, 17:59   #5
BredoGen
 
Регистрация: 02.02.2010
Сообщений: 6
По умолчанию

Да, появляется из-за этой функции...

Дельфи 2009
Ума не приложу, что может быть не так...

18:01

Попробую сделать простенькую форму, чтобы точно понять в чем может быть проблема..

У нас принято пользоваться кнопочкой "Правка", дабы не плодить посты подряд, друг за другом.
Читаем правила. Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Уважайте форумчан, и они ответят вам взаимностью...
Модератор

Последний раз редактировалось mihali4; 21.03.2010 в 02:54.
BredoGen вне форума Ответить с цитированием
Старый 19.03.2010, 18:27   #6
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

А я вот не пойму, что за - Плавающее окошко ? Может быть окошко типа как в квипе, то что всплывает при сообщении?
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 19.03.2010, 19:13   #7
BredoGen
 
Регистрация: 02.02.2010
Сообщений: 6
По умолчанию

Нет, нужно как в Download Master. Чтобы даже при свернутом приложении оно не сворачивалось, а висело поверх всех окон. Там будет отображаться некоторая информация...

20:53

Сделал простое приложение, там всё пашет...
А у меня тут программа на >5к строк кода, семью формами, сложным интерфейсом... Где то я намутил и не пашет как нужно...
Может кто намекнуть, куда можно копнуть, чтобы исправить? Хотя бы примерно

P.S. Иконка появляется только у формы, которая становится поверх остальных при помощи этой функции...С остальными шести формами всё нормально...

У нас принято пользоваться кнопочкой "Правка", дабы не плодить посты подряд, друг за другом.
Читаем правила. Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Уважайте форумчан, и они ответят вам взаимностью...
Модератор

Последний раз редактировалось mihali4; 21.03.2010 в 02:55.
BredoGen вне форума Ответить с цитированием
Старый 02.04.2010, 14:45   #8
BredoGen
 
Регистрация: 02.02.2010
Сообщений: 6
По умолчанию

С появлением иконки на панеле задач разобрался. Точнее оно само разобралось как-то ) Просто перестало появляться и всё.
Тут следующая проблема:
Нужно сделать прозрачность у этого окошка. При его активации (то есть, когда юзер щелкает на это окошко - OnActivate) оно должно терять прозрачность.
Как только юзер переключается на другие окна (OnDeActivate) - оно снова становится прозрачным.

Делаю так:
Код:
procedure TPopUp.FormActivate(Sender: TObject);
begin
AlphaBlendValue := 255;
end;

procedure TPopUp.FormCreate(Sender: TObject);
begin
SetWindowLong(Handle, GWL_HWNDPARENT, GetDesktopWindow);
SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOSIZE or SWP_NOMOVE);
Left:= Screen.WorkAreaWidth-PopUp.Width;
Top:= Screen.WorkAreaHeight-PopUp.Height;
end;

procedure TPopUp.FormDeactivate(Sender: TObject);
begin
AlphaBlendValue := 100;
end;
Работает, но только между главным окном и этим всплывающим. То есть, когда переключается на главное - оно становится прозрачным, когда возвращается к всплывающему - оно вновь становится непрозрачным.
Так и нужно, но только не внутри этого приложения... главное окно сворачивается, всплывающее остаётся на экране и не работает события DeActivate, когда переключаюсь на другие окна, не связанные с приложением... А нужно, чтобы реагировало, когда переключаются на другие окна и становилось прозрачным.
Вот как то так...)
Спасибо заранее всем

p.s. Извиняюсь за нарушение правил форума
BredoGen вне форума Ответить с цитированием
Старый 02.04.2010, 16:12   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

попробуйте OnExit/OnEnter а про ваши сообщения почитайте сначало стандартный хелп
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.04.2010, 17:02   #10
BredoGen
 
Регистрация: 02.02.2010
Сообщений: 6
По умолчанию

Решил через WM_ACTIVATE. Спасибо
BredoGen вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плавающее сообщение agregator Microsoft Office Excel 2 11.02.2010 14:21
Бегающее окошко. Gon Фриланс 5 24.06.2009 17:05
Как изменить окошко? DANIЯR Общие вопросы Delphi 4 02.12.2008 01:00
Всплывающее окошко Micha Помощь студентам 3 30.03.2008 13:58
Плавающее окошко Маркъ Общие вопросы Delphi 2 02.04.2007 18:42