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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запретить растягивание картинки, HtmlEdit 
V
    Опции темы
yahaha
  Дата 18.5.2006, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




Код
Doc := (HTMLEdit1.DOM as IHTMLDocument2);
EventHandler := THTMLEvent.Create(Doc);
EventHandler.OnEvent := MyEvent;

Doc.onmousedown := EventHandler as IDispatch; // Нажатие мыши в документе
for i:=1 to Doc.all.length do begin
 HTMLElement:=Doc.all.item(NULL,i) as IHTMLElement;
 HTMLElement.onmousedown:=EventHandler as IDispatch; // Нажатие мыши в элементах
end;

procedure TForm1.KeyEvent(EventObject: IHTMLEventObj;
  EventType: string);
begin
 EventObject.cancelBubble:=true; // Отмена "вторичных" событий
 EventObject.returnValue:=false; // Отмена действия
end;


Смысл в том, что пользователь нажимает мышкой на картинку, она (по умолчанию) выделяется, и её потом можно растягивать. А я этого не хочу, и пытаюсь блокировать все нажатия...

Но картинка всё равно выделяется... В чём дело?

Кто знает, подскажите!..  smile 
 
PM MAIL   Вверх
aktuba
Дата 19.5.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Я тоже пытался сделать такое, не получилось. Сделал следующее: перехватываю выделенный элемент, если это картинка-удаляю размеры и стиль.
Теперь, если изменять размер картинки, она изменяется, но тут же возвращается в исходную позицию... 


--------------------
user posted image
PM MAIL WWW Skype   Вверх
yahaha
Дата 19.5.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всё, ответ уже нашёл...  smile 

2 aktuba: 

Всё очень просто, используй интерфейс IHTMLElement3.
Там есть событие onresizestart (начало растягивания), его перекрываешь и задаёшь ResultValue:=False, т.е. действие отменить.

P.S. Для этого надо иметь IE 5.5 или выше.
 
PM MAIL   Вверх
aktuba
Дата 19.5.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Дай полный код. Не могу разобраться... 

Это сообщение отредактировал(а) aktuba - 19.5.2006, 17:09


--------------------
user posted image
PM MAIL WWW Skype   Вверх
yahaha
Дата 19.5.2006, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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




Код
uses ...MSHTML_TLB...;
...
var
HTMLElement: IHTMLElement;
HTMLElement2: IHTMLElement2;
HTMLElement3: IHTMLElement3;
...
Doc := (HTMLEdit1.DOM as IHTMLDocument2);
EventHandler := THTMLEvent.Create(Doc);
EventHandler.OnEvent := MyEvent;
...
for i:=1 to Doc.all.length do begin // Для всех элементов (картинок, таблиц...)
 HTMLElement:=Doc.all.item(NULL,i) as IHTMLElement;
 HTMLElement2:=HTMLElement as IHTMLElement2;
 HTMLElement3:=HTMLElement as IHTMLElement3;
 HTMLElement3.onresizestart:=EventHandler as IDispatch; // Перекрываешь событие
end;
...
procedure TForm1MyEvent(EventObject: IHTMLEventObj;
  EventType: string);
begin
 EventObject.returnValue:=false; // Отмена действия
end;


--------------------------------------------------------------------------------------------------------

Т.е. у всех объектов обработчиком события onresizestart будет TForm1MyEvent.
Как только попытаешься начать растягивание - оно сработает, а действие всегда будет отменяться.

--------------------------------------------------------------------------------------------------------

З.Ы. http://msdn.microsoft.com/workshop/browser...tmlelement3.asp 
PM MAIL   Вверх
aktuba
Дата 20.5.2006, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Все равно не понял. Я так понял, ты используешь DHTMLEdit, а я EmbeddedWB и у меня нет THTMLEvent. Как мне перекрыть событие? 


--------------------
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.0432 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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