Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2018, 05:37   #1
Aleksandr94
Пользователь
 
Регистрация: 26.03.2018
Сообщений: 14
По умолчанию Управление картинками в Richedit

Для загрузки картинки в RichEdit я использую этот скрипт Как вставить картинку в richedit.. Первое, что я сделала это перенес все классы и интерфейсы файла re_bmp.pas из implementation в interface, чтобы они стали доступны для главного класса. Теперь я хочу сделать манипуляции над картинками которые будут загружены в RichEdit. Для теста главный код я поместил в кнопку, там автоматически идёт подсчет ole-объектов и срабатывает цикл с условиями. Когда очередь доходит до проверки OLE- объекта именно вот эта процедура OleCheck(DataObject.GetData(FormatE tc,Medium));. То выводит сообщение "Для выполнения операции требуется запустить объект.". В чём может быть проблема, как запустить этот объект?
Вот весь код:
Код:
unit Unit1;

interface

uses
  re_bmp, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtDlgs, StdCtrls, ComCtrls, ExtCtrls,  RichEdit, ComObj, ActiveX;

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Button1: TButton;
    OpenPictureDialog1: TOpenPictureDialog;
    Image1: TImage;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
  protected
   // procedure ActionChange(Sender: TObject; CheckDefaults: Boolean);
     // override;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  
implementation

{$R *.dfm}




procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenPictureDialog1.Execute then
    begin
    Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
    InsertBitmapToRE(RichEdit1.Handle, Image1.Picture.Bitmap.Handle);
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
    IREO:IRichEditOle;
    OleClientSite:IOleClientSite;
    ReObject:TReObject;
    Count:Integer;
    hbmp:HBitmap;
    I:Integer;
    FormatEtc: TFormatEtc;
    DataObject: IDataObject;
    Medium: TStgMedium;
   
begin
  Count:=0;
  hbmp:=0;
  SendMessage(RichEdit1.Handle, EM_GETOLEINTERFACE, 0, Longint(@IREO));
   IREO.GetClientSite(OleClientSite);
   Count:=IREO.GetObjectCount; // число оле объектов
   for I := Count - 1 downto 0 do
    begin
        ZeroMemory(@ReObject,SizeOf(ReObject));
        ReObject.cbStruct := SizeOf(ReObject);
        if Succeeded(IREO.GetObject(I, ReObject, $00000001)) then
        begin
        if ReObject.poleobj.QueryInterface(IDataObject, DataObject) = S_OK then
           FormatEtc.cfFormat := CF_METAFILEPICT;
           FormatEtc.ptd := nil;
           FormatEtc.dwAspect := DVASPECT_CONTENT;
           FormatEtc.lindex := -1;
           FormatEtc.tymed := TYMED_MFPICT;
           OleCheck(DataObject.GetData(FormatEtc,Medium));
        end;
    end;
end;

end.

Последний раз редактировалось Aleksandr94; 27.08.2018 в 05:40.
Aleksandr94 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа с картинками KNIGT C# (си шарп) 10 18.12.2014 21:08
Загрузка в RichEdit текста из файла, и получение его из RichEdit Byurrer Общие вопросы C/C++ 1 09.04.2011 10:17
список с картинками пауэрлифтинг Мультимедиа в Delphi 9 22.03.2010 19:43
Вставка изображения с RichEdit в RichEdit Sensizu Компоненты Delphi 2 01.10.2009 18:11
бд с картинками TaTT DoGG БД в Delphi 3 28.04.2008 08:21