Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 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.048 c
15-1178093774
Сом
2007-05-02 12:16
2007.05.27
основы


1-1175265506
kodov
2007-03-30 18:38
2007.05.27
Перемещение элементов в ListBox


2-1178525352
delphino
2007-05-07 12:09
2007.05.27
Не могу разобраться с фильтром в delphi


2-1178548742
Regent
2007-05-07 18:39
2007.05.27
Диалог


15-1178102375
Megabyte
2007-05-02 14:39
2007.05.27
Интеграция MS Project и программ на .NET





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский