Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.137.187.233] |
|
Сообщ.
#1
,
|
|
|
Есть RichView, хочу добавить рисунок туда.
Через AddPictureEx. Туда нужно передать TGraphic Я сделал на форме Image1 и скормил через Image1.Picture.Graphic. Картинка добавляется, но при закрытии формы Access violation. работает вот так: var ListIcon: TBitmap; begin ListIcon := TBitmap.Create; ListIcon.LoadFromFile('C:\User.bmp'); End; но мне-бы хотелось все рисунки иметь в контейнере. Нашел PictureContainer от TMS со вкладки html. Там можно взять TGraphic через PictureContainer1.Items[1].Picture; Но там то-же все работает до закрытия. при закрытии Access violation. |
Сообщ.
#2
,
|
|
|
Возможно скажу глупость, но, если самому деструктить сначала Rich компонент, а уже потом ресурсы? (может он грохает ресурсы первым, от этого RichViewer и пытается получить доступ к высвобожденной памяти)
|
Сообщ.
#3
,
|
|
|
Цитата ^D^ima @ Туда нужно передать TGraphic Я сделал на форме Image1 и скормил через Image1.Picture.Graphic. Зачем?! TBitmap является наследником TGraphic (как и прочие типы рисунков TPicture). Поэтому нужно использовать простое приведение типов TGraphic(ListIcon)или ListIcon as TGraphic. Цитата ^D^ima @ Картинка добавляется, но при закрытии формы Access violation. Ясен пень, т.к. в описании AddPictureEx черным по белому сказано: "By default, this picture will be owned by TRichView control, and you must not free it". А Image1 и PictureContainer1 сами удаляют рисунки => двойное удаление и AV Цитата ^D^ima @ но мне-бы хотелось все рисунки иметь в контейнере Если картинки имеют одинаковый размер (иконки), то можно использовать обычный TImageList и добавлять рисунки в RichView методом AddBulletEx (в этом случае RichView не будет удалять картинки). В противном случае можно после вставки рисунка через AddPictureEx, делать его неудаляемым в RichView вызовом RichView1.SetItemExtraIntProperty(RichView1.ItemCount-1, rvepShared, 1); |
Сообщ.
#4
,
|
|
|
leo
Снимаю шляпу. Последний вопрос. для AddBulletEx как то можно в качестве TCustomImageList скормить PictureContainer1? ImageList нормально скармливается, а PictureContainer нет Сам компонент описан так: TPictureContainer = class(TComponent) private FItems: TPictureCollection; procedure SetItems(const Value: TPictureCollection); function GetVersion: string; procedure SetVersion(const Value: string); function GetVersionNr: Integer; { Private declarations } protected { Protected declarations } function CreateItems: TPictureCollection; virtual; public { Public declarations } constructor Create(AOwner: TComponent); override; destructor Destroy; override; function FindPicture(s: string): TGraphic; virtual; published { Published declarations } property Items: TPictureCollection read FItems write SetItems; property Version: string read GetVersion write SetVersion; end; |
Сообщ.
#5
,
|
|
|
Цитата ^D^ima @ мне-бы хотелось все рисунки иметь в контейнере http://flylib.com/books/en/1.228.1.161/1/ |
Сообщ.
#6
,
|
|
|
Цитата ^D^ima @ для AddBulletEx как то можно в качестве TCustomImageList скормить PictureContainer1? Нет, нельзя. TCustomImageList основан на виндовом контроле и имеет кучу своих специфических свойств и методов. Просто если твои картинки (по всей видимости иконки) имеют одинаковый размер, то можно (попробовать) использовать в качестве контейнера TImageList. Если же размер картинок разный (или не хочется cвязываться с TImageList), то можно использовать любой другой контейнер, а для предотвращения двойного удаления картинок запрещать их удаление в RichView |
Сообщ.
#7
,
|
|
|
|