Форум: "Базы";
Текущий архив: 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