Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Редактирование элементов в TWebBrowser, Запретить изменять некоторые элементы 
:(
    Опции темы
AlexSuv
Дата 19.12.2006, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 8.10.2005

Репутация: нет
Всего: нет



Как запретить редактирование некоторых элементов в TWebBrowser в режиме (DesignMode := 'On').

Т.е. после перехода в режим редактирования вэббраузер позволяет редактировать все элементы, а мне нужно толь определенные (простой текст).

Я вижу 2 варианта:
1). Не переходя в режим редактора разрешить редактирование только определенным элементам
2). Перейти в режим редактирования и запретить редактирование всем кроме определенных

но ни один из них реализовать не получается, помогите пожалуйста.
PM MAIL   Вверх
aktuba
Дата 21.12.2006, 23:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: нет
Всего: 38



Не знаю, поможет или нет, но одно время мне необходимо было запретить изменение размеров для изображений в TWebBrowser в DesignMode. Сделал так:

Код

  THTMLEventNotifyEvent =
    procedure(EventObject: IHTMLEventObj; EventType: string) of object;
  THTMLEvent = class(TInterfacedObject, IDispatch)
  private
    FDocument: IHTMLDocument2;
    FOnEvent: THTMLEventNotifyEvent;
    function GetTypeInfoCount(out Count: Integer): HResult; stdcall;
    function GetTypeInfo(Index, LocaleID: Integer;
      out TypeInfo): HResult; stdcall;
    function GetIDsOfNames(const IID: TGUID; Names: Pointer;
      NameCount, LocaleID: Integer; DispIDs: Pointer):
      HResult; stdcall;
    function Invoke(DispID: Integer; const IID: TGUID; LocaleID:
      Integer; Flags: Word; var Params; VarResult, ExcepInfo,
      ArgErr: Pointer): HResult; stdcall;
    procedure DoEvent;
  public
    constructor Create(Document: IHTMLDocument2);
    property OnEvent: THTMLEventNotifyEvent
      read FOnEvent
      write FOnEvent;
  end;

implementation

function THTMLEvent.GetTypeInfoCount(out Count: Integer): HResult;
begin
  Result := E_NOTIMPL
end;

function THTMLEvent.GetTypeInfo(Index, LocaleID: Integer;
  out TypeInfo): HResult;
begin
  Result := E_NOTIMPL
end;

function THTMLEvent.GetIDsOfNames(const IID: TGUID; Names: Pointer;
  NameCount, LocaleID: Integer; DispIDs: Pointer): HResult;
begin
  Result := E_NOTIMPL
end;

function THTMLEvent.Invoke(DispID: Integer; const IID: TGUID;
  LocaleID: Integer; Flags: Word; var Params; VarResult,
  ExcepInfo, ArgErr: Pointer): HResult;
begin
  DoEvent;
  Result := S_OK;
end;

constructor THTMLEvent.Create(Document: IHTMLDocument2);
begin
  inherited Create;
  FDocument := Document;
  FOnEvent := nil;
end;

procedure THTMLEvent.DoEvent;
var
  EventObj: IHTMLEventObj;
  EventType: string;
begin
  if Assigned(FOnEvent) then
  begin
    EventObj := nil;
    EventType := '';
    if Assigned(FDocument) and Assigned(FDocument.parentWindow) then
    begin
      EventObj := FDocument.parentWindow.event;
      if Assigned(EventObj) then
        EventType := EventObj.type_;
    end;
     FOnEvent(EventObj, EventType);
  end;
end;


Код

procedure TfrmMain.RegEvent(tag: IHTMLElement);
begin
  EventHandler := THTMLEvent.Create(Editor);
  EventHandler.OnEvent := KeyEvent;
  (tag as IHTMLElement3).onresizestart := EventHandler as IDispatch;
end;

procedure TfrmMain.KeyEvent(EventObject: IHTMLEventObj; EventType: string);
begin
  EventObject.cancelBubble := true;
  EventObject.returnValue := false
end;

procedure TfrmMain.LockImages;
var
  Index: Integer;
  tag: IHTMLElement;
begin
    if Editor.images.length <= 0 then Exit;
  for Index := 0 to Editor.Images.Length - 1 do
    begin
     tag := IHTMLElement(Editor.images.item(Index, 0));
      RegEvent(tag);
    end;
end;


У меня работает. 


--------------------
user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.