Форум: "Начинающим";
Текущий архив: 2011.07.10;
Скачать: [xml.tar.bz2];
ВнизTAnimate в Windows 7 Найти похожие ветки
← →
harisma © (2011-03-30 18:31) [0]Здравствуйте. Такая проблема. Использую в проекте компоненту TAnimate. Пишу все еще на Д5 (в силу особенностей программы и недостатка знаний для перевода некоторых ее частей на более высокие версии). Так вот, пока работал на WinXP - в этом компоненте при установке CommonAvi = aviCopyFiles и Active = True все отображалось (листики в компоненте летали). Но поставили Win 7 - и никакое встроенное видео в этом компоненте не отображается. Как быть?
В сети и на сайте Эмбаркадеро нашел решение, что надо к проекту подключить модуль ShellAnimations.pas, но это не помогло (хотя я и этот модуль и ресурсные файлы от D2010 к себе перетащил и куда требуется положил). Какие еще будут предложения?
← →
clickmaker © (2011-03-30 18:40) [1]> надо к проекту подключить модуль ShellAnimations.pas
а что в этом модуле? Замена стандартного TAnimate?
← →
harisma © (2011-03-30 19:36) [2]Нет. Там компонента, порожденная от TComponent, но не имеющая ничего нового по сравнению с ним. Только в том модуле подгружаются ресурсные файлы этих общевиндовых авишек.
Собственно вот его исходник:
unit ShellAnimations;
{$WEAKPACKAGEUNIT ON}
interface
uses
SysUtils, Classes;
{$R FindFolder.res }
{$R FindFile.res }
{$R FindComputer.res }
{$R CopyFiles.res }
{$R CopyFile.res }
{$R RecycleFile.res }
{$R EmptyRecycle.res }
{$R DeleteFile.res }
type
TShellResources = class(TComponent)
end;
implementation
end.
← →
harisma © (2011-03-30 19:53) [3]Еще одно замечание. Форма, на которой используется этот компонент, вшита в dll.
← →
clickmaker © (2011-03-30 23:28) [4]так может их цеплять надо через ResName или
← →
clickmaker © (2011-03-30 23:40) [5]или у них ResID совпадает со стандартными виндозными, и он их сам должен подцепить?
Короче, надо в отладчике смотреть с use debug dcu, чем заканчивается вызов в comctrls.pas
Result := Perform(ACM_OPEN, GetActualResHandle, GetActualResId) <> 0;
← →
clickmaker © (2011-03-31 00:11) [6]и еще
if FCommonAVI <> aviNone then Result := GetShellModule
то есть, если грузим свои ресурсы, то и ResHandle должен быть того модуля, к которому прилинкованы эти .res
← →
Anatoly Podgoretsky © (2011-03-31 08:54) [7]
> хотя я и этот модуль и ресурсные файлы от D2010 к себе
А ничего, что 2010 ориентирован на Юникод, а Д5 нет и ужасно устарел.
← →
harisma © (2011-03-31 11:29) [8]
> и еще
> if FCommonAVI <> aviNone then Result := GetShellModule
>
> то есть, если грузим свои ресурсы, то и ResHandle должен
> быть того модуля, к которому прилинкованы эти .res
А можно вот это поподробнее?
← →
harisma © (2011-03-31 11:44) [9]Собственно я нашел другой способ получить то, что мне надо. А именно:
-создал 2 ресурсных файла в каждом из которых находится нужный мне видеоклипик (выкушеный из виндовой Длл Shell32.dll от ВинХР)
-подгружаю эти 2 файла в проект.
- прописываю в коде проекта следующий код:
implementation
{$R *.DFM}
{$R Apply.res}
{$R Cancel.res}
procedure TForm1.Button1Click(Sender: TObject);
begin
Animate1.ResName := "Apply";
Animate1.Active := True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Animate1.ResName := "Cancel";
Animate1.Active := True;
end;
- и тут все бы хорошо, но мне эту конструкцию надо использовать не в экзешнике, а в ДЛЛ, причем эта ДЛЛ обязательно с установленной галочкой "Build with runtime packages". Но именно в таком варианте при присвоенииAnimate1.ResName := "Apply";
ругается на "Cannot open AVI".
Причем если эту галочку снять, то все будет работать.
Как мне добиться работы ДЛЛ и с установленой этой галочкой?
← →
clickmaker © (2011-03-31 11:52) [10]Animate1.ResHandle := HInstance?
← →
harisma © (2011-03-31 12:00) [11]
> Animate1.ResHandle := HInstance?
Не понял.
← →
Anatoly Podgoretsky © (2011-03-31 12:29) [12]> harisma (31.03.2011 11:44:09) [9]
У ДЛЛ такой галочки нет, оно не имеет отношения к пакетам
← →
harisma © (2011-03-31 12:40) [13]Не правда. Есть такая галочка. И мы ее используем.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.07.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.003 c