Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

OnClick по картинке в RichEdit. [D6, XP]


Pavelkq ©   (2009-01-03 11:40:00) 

Вставил в RichEdit картинки с помощью модуля re_bmp. Как отследить событие нажания мыши по рисункам? Отмечу, что сейчас при клике эти рисунки выделяются (рамочка появляется). Я понимаю, что вероятнее всего это необходимо делать в обработчике OnClick самого RichEdit-a, но как понять, что под курсором именно картинка? Пробовал анализировать содержимое по RichEdit1MouseMove с помощью Perform, но удалось лишь выцепить номер строки и номер символа. А как узнать, что там именно картинка?


  (2009-01-24 05:21:00) [1]

Удалено модератором


Pavelkq   (2009-01-07 11:19:00) [2]

Победил задачу! При клике на картинке мышью она выделяется. Остается ее скопировать в буфер обмена и посмотреть его содержимое на предмет картинности. Жаль, что при этом буфер обмена затирает то, что там могло быть до того, но это тоже решаемо, думаю через OleContaner.
procedure TOKBottomDlg.RichEdit1MouseUp(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 RichEdit1.CopyToClipboard;
 if Clipboard.HasFormat(CF_BITMAP) then ...


KilkennyCat   (2009-01-06 00:14:00) [3]

нда... погляди компонент ричедита от Ткаченко.


Pavelkq   (2009-01-05 21:55:00) [4]

Хм, может и так. Но если честно, я это пока не умею. Т.е. открыть сгенерированную страничку в браузере по-умолчанию смогу, а в окне формы... Какой компанент юзать?
А кроме того возникают еще вопросы:
Оригеналы картинок хратятся в БД (акцеса). Если работать с обычными компанентам, то добраться до БД очень легко (я делаю это через АДО). Но как сделать, чтобы ссылка с миниатюры вела на содержимое БД, если это будет ХТМЛ? Или придется извлекать картинки во временную папку, а затем вывешивать ссылки именно на них?
Далее, мне нужен импорт в Ворд. Есть ли такая возможность (не считая открытия ХТМЛ-я прямо в Ворде)? Может буфер обмена поюзать? Или можно как-то средствами Дельфи сконвертировать ХТМЛ в формат Ворда?


KilkennyCat   (2009-01-05 18:05:00) [5]

дык может лучше html?


Pavelkq   (2009-01-05 16:26:00) [6]

Чтобы при нажатии на картинку (это миниатюра) в новой ворме открывалась вся картинка (идентификация по номеру).


KilkennyCat   (2009-01-04 23:34:00) [7]

а зачем?


Pavelkq   (2009-01-04 23:12:00) [8]

Пока удалось раздобыть количество картинок в RichEdite, но как определить, который из них кликнут мышью? Вот код:

[Code]type
 TReobject = record
   cbStruct: DWORD;
   cp: ULONG;
   clsid: TCLSID;
   poleobj: IOleObject;
   pstg: IStorage;
   polesite: IOleClientSite;
   sizel: TSize;
   dvAspect: Longint;
   dwFlags: DWORD;
   dwUser: DWORD;
 end;
...
Function ItBmp(hWnd:HWND) :integer;
var IREO:IRichEditOle;
   ReObject:TReObject;
   Count:Integer;
   Position:LongInt;
begin
  Count:=0;
// получить IrichEditOle интерфейс
  SendMessage(hWnd, EM_GETOLEINTERFACE, 0, Longint(@IREO));
  Count:=IREO.GetObjectCount; // число оле объектов в т.ч. картинок
  ZeroMemory(@ReObject,SizeOf(ReObject));
  ReObject.cbStruct := SizeOf(ReObject);
  if Succeeded(IREO.GetObject(0, ReObject, $00000001)) then
// если удается получить первый объект
  begin
    Result:=Count;
    IREO.????  
  end;
end;[/Code]

Какой метод применить, чтобы узнать, выделен ли он, или находится ли над ним курсор мыши? Или как получить координаты этого рисунка из его свойств (струкруты TReObject)?


Наверх

Титульная страница Поиск, карта сайта Написать письмо