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

Вниз

добавление новых свойств 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.048 c
6-1164030611
Pack
2006-11-20 16:50
2007.05.27
Сохранить веб страничку как jpeg


15-1177569389
Александр Иванов
2007-04-26 10:36
2007.05.27
Видно не только в России есть Жириновский


2-1178520778
Doom-2
2007-05-07 10:52
2007.05.27
Как в ListBox строки местами менять?


2-1178784311
Rolf
2007-05-10 12:05
2007.05.27
Диалог выбора директории.


6-1163756442
MOtoroller
2006-11-17 12:40
2007.05.27
изменить Webbrowser или как выводить баннеры ?!?