Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2010.11.14;
Скачать: [xml.tar.bz2];

Вниз

Blob & TOleContainer   Найти похожие ветки 

 
AndrewG ©   (2009-07-13 19:51) [0]

В блоб поле находится файл ворда.

Stream : TMemoryStream;
(datamodule1.IBTCharTest.fieldbyname("Col1")as TBlobField).SaveToStream(stream);
stream.Seek(0, sofrombeginning);
OleContainer1.LoadFromStream(stream);

Выдает ошибку
Invalid stream format.

Подскажите, как правильно загрузить в олеконтейнер?


 
Игорь Шевченко ©   (2009-07-13 20:26) [1]

через файл, например


 
AndrewG ©   (2009-07-13 20:29) [2]

хотелось бы из потока


 
Игорь Шевченко ©   (2009-07-13 20:51) [3]

тогда изучай:
http://delphimaster.net/view/15-1245321411/


 
СовестьДМ ©   (2009-07-13 22:17) [4]

не надо ходить по этой ссылке - там несколько про другое


> AndrewG ©   (13.07.09 19:51) 

дело в том, что файл есть лишь внедренный объект, а не сам контейнер и поэтому потоку нужен контейнерный префикс
uses ActiveX;
...
const s = "BDOC";
...
Stream, stream2 : TMemoryStream;
...
Stream:=TMemoryStream.Create;
(datamodule1.IBTCharTest.fieldbyname("Col1")as TBlobField).SaveToStream(stream);
Stream.Position:=0;

stream2:=TMemoryStream.Create;
stream2.Write(s[1],4);
i:=DVASPECT_CONTENT;
stream2.Write(i,4);
i:=Stream.Size;
stream2.Write(i,4);
stream2.CopyFrom(Stream,Stream.Size);

OleContainer1.LoadFromStream(stream2);
OleContainer1.DoVerb(ovShow);

Stream.Free;
stream2.Free;


 
СовестьДМ ©   (2009-07-13 22:19) [5]

...перед LoadFromStream надо stream2.Position:=0;


 
Amoeba ©   (2009-07-13 23:19) [6]

Готовое решение подойдет?

unit DBOleContainer;
{Author: Sergei V. Trepalin, 27 September 1998
E-mail: trep@trep.home.chg.ru
        trep@ipac1.sherna.msk.su

Free component. If some changes in source code will be made,
                one has to highlight changes by any means}

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 OleCtnrs, DB, DBCtrls;

type
 TDBOleContainer = class(TOleContainer)
 private
   FDataLink: TFieldDataLink;
   FAutoDisplay: Boolean;
   FFocused: Boolean;
   FObjectLoaded: Boolean;
   FDummy:integer;
   FFromActivate:boolean;
   procedure DataChange(Sender: TObject);
   function GetDataField: string;
   function GetDataSource: TDataSource;
   function GetField: TField;
   function GetReadOnly: Boolean;
   procedure SetDataField(const Value: string);
   procedure SetDataSource(Value: TDataSource);
   procedure SetReadOnly(Value: Boolean);
   procedure SetAutoDisplay(Value: Boolean);
   procedure SetFocused(Value: Boolean);
   procedure UpdateData(Sender: TObject);
   procedure CMEnter(var Message: TCMEnter); message CM_ENTER;
   procedure CMExit(var Message: TCMExit); message CM_EXIT;
   procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK;
   procedure CMGetDataLink(var Message: TMessage); message CM_GETDATALINK;
   procedure DoDeactivate(Sender:TObject);
 protected
   procedure Loaded; override;
   procedure Notification(AComponent: TComponent;
     Operation: TOperation); override;
   procedure LoadObject; virtual;
 public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
   property Field: TField read GetField;
   function InsertObjectDialog:boolean;
   procedure DestroyObject;
 published
   { Published declarations }
   property DataSource:TDataSource read GetDataSource write SetDataSource;
   property DataField:string read GetDataField write SetDataField;
   property ReadOnly: Boolean read GetReadOnly write SetReadOnly default False;
   property AutoDisplay: Boolean read FAutoDisplay write SetAutoDisplay default True;
   property AutoActivate:integer read FDummy;
 end;

procedure Register;


 
Amoeba ©   (2009-07-13 23:20) [7]

Удалено модератором
Примечание: Не устраивай помойку из форума, такие объемы кода заменяй ссылкой на внешний ресурс


 
AndrewG ©   (2009-07-14 11:40) [8]

Получилось, но не все.
Компонент установил.
Указал датасоурс.
Но при datasource ondatachange в Dbolecontainer ничего не загружается
При дабл клике открывается окно вставки объекта, что понятно , ведь  
if Assigned(OleObjectInterface) вернет фолс
Подскажите что не так делаю?

Спасибо за верхние ответы.


 
AndrewG ©   (2009-07-15 10:23) [9]

Никаких больше идей в тему???
(((


 
СовестьДМ ©   (2009-07-15 18:58) [10]


> Никаких больше идей в тему???

установи какой-нибудь ещё компонент глядишь полегчает


 
AndrewG ©   (2009-07-15 22:02) [11]

Спасибо 2 СовестьДМ ,будем использовать

> СовестьДМ ©   (13.07.09 22:17) [4]

Еще вопросик возник: как сохранить из олеконтейнера в блоб поле, чтобы после извлечении из блоба.сейвтуфайл документ мог открываться MSWord


 
AndrewG ©   (2009-07-15 22:06) [12]

ПС: без записи на диск получится?


 
Игорь Шевченко ©   (2009-07-16 01:01) [13]

через стрим



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2010.11.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.004 c
4-1241257034
AHTOLLlKA
2009-05-02 13:37
2010.11.14
как сохранить ветку реестра???


15-1280750143
Кеша
2010-08-02 15:55
2010.11.14
Оплата услуг посредством смс


2-1282078522
Jimmy
2010-08-18 00:55
2010.11.14
Компонент Button


2-1282567015
PinDOS
2010-08-23 16:36
2010.11.14
Целочисленные типы с указанием разрядности


15-1281080893
Knight
2010-08-06 11:48
2010.11.14
Как сделать быструю загрузку файла для просмотра?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский