Главная страница
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.033 c
2-1178708349
Belorus
2007-05-09 14:59
2007.05.27
TShiftState


6-1163059228
Kr_H|6apa6aH
2006-11-09 11:00
2007.05.27
MAC адрес в offline


3-1173273530
Silver...
2007-03-07 16:18
2007.05.27
Изменить порядок записей в DBGrid


2-1178476020
Kostafey
2007-05-06 22:27
2007.05.27
Как правильно обновлять набор данных


2-1178715396
Вася
2007-05-09 16:56
2007.05.27
Обмен данными между приложениями.