Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> AlpphaBlend - не работает прозрачность... 
:(
    Опции темы
SneG0K
Дата 11.1.2008, 16:50 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: 1
Всего: 54



Код

var
i:integer;
h:THandle;
begin
form1.AlphaBlend:=true;
h:=CreateEvent(nil, true, false, 'et');
for i:=1 to 255 do
begin
Form1.AlphaBlendValue:=i;
WaitForSingleObject(h,50);
application.ProcessMessages;
Form1.Repaint;
end;
if i=255 then
Form1.AlphaBlend:=false;
Closehandle(h);

Вот я попробовал украсить свою программу и добавил этот код в формгреат... Поидее форма должна стать из прозрачной непрозрачной, постепенно... но это не происходит=( при запуске форма просто задерживаеться на секунд 15-20 и потом появляеться... что я не так делаю?
PM WWW Skype   Вверх
Alexeis
Дата 11.1.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Советую сначала репаинт, потом процесмессажес и только потом паузу делать.


--------------------
Vit вечная память.

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

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
THandle
Дата 11.1.2008, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Хранитель Клуба
Group Icon
Награды: 1



Профиль
Группа: Админ
Сообщений: 3639
Регистрация: 31.7.2007
Где: Moscow, Dubai

Репутация: 65
Всего: 372



Не знаю. Наверно просто ужасный вариант, но другого не придумал. Вот сожержимое .dpr файла проекта:

Код

program Project1;

uses
  Forms, Windows,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

procedure ShowAB;
var
i:integer;
h:THandle;
begin
  form1.Show;
  form1.AlphaBlend:=true;
  h:=CreateEvent(nil, true, false, 'et');
  for i:=1 to 255 do
    begin
      Form1.AlphaBlendValue:=i;
      WaitForSingleObject(h,50);
      application.ProcessMessages;
    end;
  if i=255 then
  Form1.AlphaBlend:=false;
  Closehandle(h);
end;

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  ShowAB;
  Application.Run;
end.


ЗЫ: form1.AlphaBlend:=true; лучше поставь в design-time, чтобы форма не мелькала.
PM   Вверх
VICTAR
Дата 11.1.2008, 17:19 (ссылка) |    (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1108
Регистрация: 6.10.2006

Репутация: 37
Всего: 80



Может лучше
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  AnimateWindow(Handle, 1000, AW_BLEND);
end;

PM MAIL   Вверх
Vitazi
Дата 27.3.2008, 10:23 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 16.3.2008
Где: г. Оренбург

Репутация: нет
Всего: нет



Код

procedure TForm1.ApplicationEvents1Idle(Sender: TObject;
  var Done: Boolean);
begin
if go then begin
for alpa:=1 to 255 do
   begin
       Form1.AlphaBlendValue:=alpa;
      Application.ProcessMessages;
      Sleep(10);
    end;
    go:=false; // чтоб выполнилось только один раз
 end;
end;

сколько вариантов пробывал это самый нормальный.
естесно в настройках формы 
form1.AlphaBlend:=true;
Form1.AlphaBlendValue:=0;
PM MAIL WWW ICQ   Вверх
Vitazi
Дата 28.1.2009, 23:27 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 16.3.2008
Где: г. Оренбург

Репутация: нет
Всего: нет



Добавлю для новичков.. нужно на форму поместить компонент ApplicationEvents
у него как раз в Object Inspector на вкладке Events  есть свойство OnIdle  в это событие и вставлен предыдущий код!
PM MAIL WWW ICQ   Вверх
Poseidon
Дата 29.1.2009, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(Vitazi @  27.3.2008,  10:23 Найти цитируемый пост)
сколько вариантов пробывал это самый нормальный.
Самый "нормальный" вариант, а точнее самый правильный, это тот, который предложил VICTAR. И нечего изобретать велосипед.

Это сообщение отредактировал(а) Poseidon - 29.1.2009, 09:46


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Vitazi
Дата 29.1.2009, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 16.3.2008
Где: г. Оренбург

Репутация: нет
Всего: нет



Как то не обратил внимания smile 
Действительно отличный вариант! smile 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0729 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.