Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

Всплывающие сообщения   Найти похожие ветки 

 
Ksenom   (2006-03-09 10:33) [0]

Есть вопрос…. Многие видели вплывающие сообщения Miranda, Qip, Opera и.д.
Подскажите пожалуйста каким образом это реализовано и есть ли для этого нормальные компоненты.
Уже неделю в сети таскаюсь а так и не нашёл нормального ответа на данный вопрос.


 
Жуков Олег   (2006-03-09 10:51) [1]

Это можно сделать простой формой, показывать с флагом SW_SHOWNOACTIVATE;

PopupForm: TForm;
...
ShowWindow(PopupForm.Handle, SW_SHOWNOACTIVATE);
...
Прятать можно по таймеру.


 
Ksenom   (2006-03-09 11:11) [2]

Просто форма не устраивает... Нужно что то посимпотичнее... Как у Миранды....
О... может у кого есть листинг мирандовского плагина для окошек всплывающих


 
AbrosimovA   (2006-03-09 14:11) [3]

Компонент WPTaskbarNotifier


 
Eraser ©   (2006-03-09 15:29) [4]


> Ksenom   (09.03.06 11:11) [2]

[1] + TArtForm (ищи на torry.net)


 
Ksenom   (2006-03-09 16:17) [5]

Жаль... всё не то...


 
Cash ©   (2006-03-09 16:41) [6]

Е мое!!! :(((
Delphi  это же не набор VCL и плагинов - это среда разработки!!!!
Если кто еще не просвещен в эту истину - офицательно уведомляю!

Если чего то нет, или то, что есть не устраивает - берем, достаем руки из
карманов, кладем их на устройство интерпритации мыслей и интерпретируем
все, что только вздумается! ;)
А иначе любитель какой то получается (хочу чтобы было но не хочу учиться)

Если надо всплывающее окошко в проге, т. е. на территории формы,
там куча всяких методов.
А если надо, чтоб message вылезал на рабочем столе, на еще и небось
со всякими там картинками или еще какими фичами, то берем форму,
если не устраивает вид заголовка - ставим BorderStyle в dsNone,
переписываем у нее процедуру обработки сообщений (из поста [1]),
а в обработчике OnShow ставим координаты и говорим, что делать.
И все!!! :Р
Форму можно убирать по рецепту [1] или по клику на кнопочке, для
этого тоббой приделанной.


 
kernel ©   (2006-03-09 17:59) [7]

Это что-ли как в Касперском?


 
Ksenom   (2006-03-10 12:17) [8]

Cash, будте уверенны, виды формы, появление и фичи мне знакомы.
Показать окно я могу, и не только показать ))
По поводу "любитель", согласен... не все богами рождаются... но учиться желание есть и именно за этим сюда я и пришёш...
Критиковать каждый может... я же прошу научить... и подсказать...


 
antonn ©   (2006-03-10 13:27) [9]

Ksenom   (10.03.06 12:17) [8]
хоть скриншот то покажи, этих "окошек Марандовских" :)
может нужно с альфаканалом, вот примерчик есть: http://kladovka.net.ru/index.cgi?pid=list&rid=318


 
Cash ©   (2006-03-10 14:56) [10]

Ksenom   (10.03.06 12:17) [8]:
Такой ответ меня более чем радует (наверное и других тоже),
а то я уж думал, что тут еще один последователь Ken-а завелся. :)))

Присоединяюсь к мудрейшей мысли antonn-а, надо бы визуально
осязаемый образ того вида, а то прям глазы разбегаются от
обилия идей, что посоветовать! :)


 
Кашперук Иван   (2006-03-10 17:39) [11]

По-меому, если я правильно понимаю как работают эти окошки в Миранде, у них просто меняется последовательно прозрачность с полностью прозрачного до полностью непрозрачного.
За счет этого достигается красивый эффект его появления на экране.

Правда, их там может появлятся много - одно над другим - для этого, просто создавайте формы динамически - и перед отображением [1] рассчитывайте координаты их расположения.

Удачи!


 
Кашперук Иван   (2006-03-10 17:56) [12]

Скажу даже больше - рассчет координат сводится к двум строкам, а все отображение - к 5

     Form := TYourFormClass.Create(nil);
     Form.Top := Screen.WorkAreaHeight - Form.Height;
     Form.Left := Screen.WorkAreaWidth - Form.Width;
     ShowWindow(Form.Handle, SW_SHOWNOACTIVATE);
     Application.ProcessMessages;

Работает прекрасно :)
Правда без прозрачности


 
antonn ©   (2006-03-10 18:21) [13]

да, в общем то, и прозрачность не сложно

type
 TSetLayeredWindowAttributes = function(hWnd : HWND; crKey : DWORD;bAlpha : Byte; dwFlags : DWORD) : BOOL; stdcall;

procedure TMainForm.trans(i:byte);
var
 SetLayeredWindowAttributes : TSetLayeredWindowAttributes;
 hUser32 : HINST;
begin
  SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED);
 hUser32 := LoadLibrary("user32.dll");
 if hUser32 <> 0 then
 begin
   try
     SetLayeredWindowAttributes := GetProcAddress(hUser32, "SetLayeredWindowAttributes");
     if Assigned(@SetLayeredWindowAttributes) then
       SetLayeredWindowAttributes(Handle, 0, i,  LWA_ALPHA);
   finally                                            
     FreeLibrary(hUser32);
   end;
 end;  
end;


 
Кашперук Иван   (2006-03-11 21:56) [14]

2 antonn: Да уж, это по-моему уже довольно сложно.

я обычно обхожусь просто установкой AlphaBlend и AlphaBlandValue (в 130)


 
Ksenom   (2006-03-17 17:19) [15]

Всех благодарю... вы мне помогли советом...
Отдельное спасибо "Кашперук Иван" и "antonn"



Страницы: 1 вся ветка

Текущий архив: 2006.04.23;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.037 c
3-1141045807
toha
2006-02-27 16:10
2006.04.23
Помогите новичку. Работа с БД в Делфи


2-1144664227
Рафик
2006-04-10 14:17
2006.04.23
Подскажите компонент для работы с DBASE локально, без BDE


4-1137759065
som
2006-01-20 15:11
2006.04.23
Добавлeние учетных записей


15-1143637602
Yegorchic
2006-03-29 17:06
2006.04.23
Программа для моделирования дворов


15-1144042450
Ega23
2006-04-03 09:34
2006.04.23
С Днём рождения! 2 апреля