Форум: "Компоненты";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
Вниздобавление новых свойств webbrowser Найти похожие ветки
← →
anton773 © (2006-07-31 21:44) [0]Здравствуйте все прочитавшие это сообщение!С делфи работаю два года но ранее своих компонентов не создавал и вот решил попробовать.Недавно в интернете нашел код,позволяющий включать и отключать отображение рисунков в конкретном веббровзере(не меняя настроек стандартного эксплорера).Создал на основе этого кода компонент imgwebbrowser Благополучно откомпиллировал и установил его.Вроде работает,но некоторые свойства некорректно работают.Например свойство Sielent невозможно присвоить значение true ни программно не через инспектор объектов,вернее свойство устанавливается но на практике(при работе программы оно все равно false)Есть так же и прочее чудеса,но это не так важно. Плиз помогите разобраться где ошибка.Ведь по идее все свойства стандартного веббровзера должны перейти к моему imgwebbrowser.Или я не прав? Вот код:
unit imgwebbrowser1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, SHDocVw, OleCtrls, ActiveX, StdCtrls;
type
Timgwebbrowser1 = class(TWebBrowser, IDispatch)
private
FImageEnabled: boolean;
procedure SetImageEnabled(const Value: boolean);
{ Private declarations }
protected
{ Protected declarations }
function IDispatch.Invoke = Invoke;
function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult;
stdcall;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
published
{ Published declarations }
property ImageEnabled: boolean read FImageEnabled write SetImageEnabled default true;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("anton", [Timgwebbrowser1]);
end;
{ Timgwebbrowser1 }
constructor Timgwebbrowser1.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FImageEnabled := true;
end;
function Timgwebbrowser1.Invoke(DispID: Integer; const IID: TGUID;
LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo,
ArgErr: Pointer): HResult;
const
DISPID_AMBIENT_DLCONTROL = -5512;
DLCTL_DLIMAGES = $00000010;
begin
if (Flags and DISPATCH_PROPERTYGET <> 0) and (VarResult <> nil) then
begin
Result := S_OK;
case DispID of
DISPID_AMBIENT_DLCONTROL:
if FImageEnabled then
PVariant(VarResult)^ := Integer(DLCTL_DLIMAGES)
else
PVariant(VarResult)^ := Integer(not DLCTL_DLIMAGES);
else
Result := DISP_E_MEMBERNOTFOUND;
end;
end else
result := inherited invoke(dispid, iid, localeid, flags, params, varresult,
ExcepInfo, argerr);
end;
procedure Timgwebbrowser1.SetImageEnabled(const Value: boolean);
var
path:OleVariant;
begin
if (assigned(Document)) then begin
FImageEnabled := Value;
path:=OleObject.document.location;
RecreateWnd;
Navigate(path);
end;
end;
end.
← →
Джо © (2006-07-31 21:56) [1]А где в приведенном коде свойство Sielent?
← →
anton773 © (2006-07-31 22:10) [2]
> А где в приведенном коде свойство Sielent?
Я наследуюсь от стандартного веббровзера это свойство есть у него.и по идее должно перейти к моему imgwebbrowser или я не прав?
← →
Джо © (2006-07-31 22:23) [3]> .и по идее должно перейти к моему imgwebbrowser или я не
> прав?
Должно. Но, опять же, в вашем исходном коде я не вижу ни одного обращения ни к Sielent, ни к Silent.
← →
Джо © (2006-07-31 22:30) [4]Т.е, я хочу сказать, непонятно зачем приведен код, если все-равно приходится "верить на слово", что, мол, свойство не присваивается.
← →
anton773 © (2006-07-31 22:39) [5]
> я не вижу ни одного обращения ни к Sielent, ни к Silent.
Это исходный текст компонента.А я полагаю что грабли где то здесь. А обращаюсь я к нему примерно так: по клику батона imgwebbrowser1.Silent:= true; со стандартным веббровзером это прокатывало
← →
StriderMan © (2006-08-01 11:28) [6]попробуй отследить в какой момент Silent превращается в false. Начни прям с конструктора
← →
anton773 © (2006-08-02 19:15) [7]
> в какой момент Silent превращается в false
Сейчас проверял.Самое интересное что превращения вообще не происходит.то есть свойство Silent как его установил в инспекторе объектов в значение true, так оно и остается true но почему-то не действует.Вот и верь после этого умным книгам в которых говориться что если новый компонент наследуется от чего- нибудь,то все свойства переходят от предка к потомку.Или я чего не понимаю?
Страницы: 1 вся ветка
Форум: "Компоненты";
Текущий архив: 2007.05.27;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c