Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.08.2007, 18:49
Аватар для X-rem
X-rem X-rem вне форума
Начинающий
 
Регистрация: 06.04.2007
Адрес: Питер
Сообщения: 119
Репутация: 10
Печаль Прозрачность

Ув. Программисты . Помоги мне сдлеать форму прозрачную

Вообщем есть Form1 , На ней очень много визуальных объектов.
Беда лишь в одном. Форма прозрачная а объекты нет.

Если можно то подкиньте функцию. Что то типа :

Код:
 
function Trans( СилаПрозрачности : byte , КакуюФорму : String );
begin
??????
end;
__________________
[ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ]
Delphi 7 user
  • Indy 10.5.5
  • AbfEffects & Controls
  • LockBox
  • AlphaControls
  • Eagle CDK

ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738)
Ответить с цитированием
  #2  
Старый 19.08.2007, 01:41
Аватар для zip000
zip000 zip000 вне форума
Начинающий
 
Регистрация: 24.07.2007
Сообщения: 194
Репутация: 25
По умолчанию

У формы есть свойства AlphaBlend и AlphaBlendValue (точно не помню, поправьте если что). Первое ставишь True, второе собсно коэффициент прозрачности от 0 до 255. Работает только под Win 2k\XP. Насчет Висты не знаю.
__________________
Не профи, но и не чайник . D6 - лучше не придумали. Пока.
Ответить с цитированием
  #3  
Старый 19.08.2007, 03:23
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Переводил из асма, мог ошибиться:
Код:
var
 pSLWA: Double;
 hHandle: THandle;
begin

 //... тут добавляем к стилю окна WS_EX_LAYERED

  hHandle := GetModuleHandleA('User32.dll');
  pSLWA := GetProcAddress(hHandle,'SetLayeredWindowAttributes');
  asm
        push LMA_ALPHA
        push 240 // это уровень непрозрачности
        push 0
        push hWin
        call pSLWA
  end;

А вот оригинал (MASM), на всяк случай:
Код:
        invoke GetWindowLongA,hWin,GWL_EXSTYLE
        or eax,WS_EX_LAYERED
        invoke SetWindowLongA,hWin,GWL_EXSTYLE,eax
        invoke GetModuleHandleA,ADDR User32
        invoke GetProcAddress,eax,ADDR SLWA
        mov pSLWA,eax
        push LMA_ALPHA
        push 240 
        push 0
        push hWin
        call pSLWA
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
  #4  
Старый 20.08.2007, 14:54
Аватар для X-rem
X-rem X-rem вне форума
Начинающий
 
Регистрация: 06.04.2007
Адрес: Питер
Сообщения: 119
Репутация: 10
Смех

Цитата:
Сообщение от 4kusNick
Переводил из асма, мог ошибиться:
Код:
 
var
 pSLWA: Double;
 hHandle: THandle;
begin
 
 //... тут добавляем к стилю окна WS_EX_LAYERED
 
  hHandle := GetModuleHandleA('User32.dll');
  pSLWA := GetProcAddress(hHandle,'SetLayeredWindowAttributes');
  asm
        push LMA_ALPHA
        push 240 // это уровень непрозрачности
        push 0
        push hWin
        call pSLWA
  end;

А вот оригинал (MASM), на всяк случай:
Код:
        invoke GetWindowLongA,hWin,GWL_EXSTYLE
        or eax,WS_EX_LAYERED
        invoke SetWindowLongA,hWin,GWL_EXSTYLE,eax
        invoke GetModuleHandleA,ADDR User32
        invoke GetProcAddress,eax,ADDR SLWA
        mov pSLWA,eax
        push LMA_ALPHA
        push 240 
        push 0
        push hWin
        call pSLWA

А как добавить WS_EX_LAYERED ???
__________________
[ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ]
Delphi 7 user
  • Indy 10.5.5
  • AbfEffects & Controls
  • LockBox
  • AlphaControls
  • Eagle CDK

ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738)
Ответить с цитированием
  #5  
Старый 21.08.2007, 18:20
Аватар для Keygenmusic
Keygenmusic Keygenmusic вне форума
Активный
 
Регистрация: 24.10.2005
Адрес: Там
Сообщения: 201
Репутация: 20
По умолчанию

X-rem
написано же на масме как
мысленно конвертим в делфи:
Код:
SetWindowLong(Form1.Handle,GWL_EXSTYLE,GetWindowLong(Form1.Handle,GWL_EXSTYLE) or WS_EX_LAYERED);
наверное, так
Ответить с цитированием
  #6  
Старый 22.08.2007, 15:05
Аватар для X-rem
X-rem X-rem вне форума
Начинающий
 
Регистрация: 06.04.2007
Адрес: Питер
Сообщения: 119
Репутация: 10
По умолчанию

Спс народ . Проблема решена. zip000 Thanks вери мачь .
Жаль что сразу не использовал его вариант.
__________________
[ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ]
Delphi 7 user
  • Indy 10.5.5
  • AbfEffects & Controls
  • LockBox
  • AlphaControls
  • Eagle CDK

ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738)
Ответить с цитированием
  #7  
Старый 23.08.2007, 00:32
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Цитата:
Сообщение от X-rem
Спс народ . Проблема решена. zip000 Thanks вери мачь : .
Жаль что сразу не использовал его вариант.
Ну не стоит об этом сразу так жалеть, так как все зависит от поставленных целей. Тот вариант конечно более удобный и простой, но он потребует гораздо больше системных ресурсов и добавит больше мусора в программу, т.к. в VCL прозрачность реализована так же криво, как и Application.ProcessMessages...
Как я сказал, все зависит от поставленных задач: еслу нужна скорость работы и маленький размер exe, то лучше искать замену некоторым ф-ям VCL, а если важно скорость разработки и не важен размер программы и объем требуемой оперативной памяти, то можно смело пользоваться VCL...
Это моё мнение, оно может быть ошибочно, но я это утверждаю лишь основываясь на своем опыте...
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
  #8  
Старый 24.08.2007, 09:21
Аватар для X-rem
X-rem X-rem вне форума
Начинающий
 
Регистрация: 06.04.2007
Адрес: Питер
Сообщения: 119
Репутация: 10
По умолчанию

Гы , Филосов ))
Лана все тема закрыта
__________________
[ Ты не сможешь никому помочь до тех пор, пока не поможешь себе ]
Delphi 7 user
  • Indy 10.5.5
  • AbfEffects & Controls
  • LockBox
  • AlphaControls
  • Eagle CDK

ICQ: 570224849 / JID: x-rem@jabber.ru|no / Skype: ukc-rem / VK: ukc_rem.vk.com (ID: 27703738)
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:14.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025