-
подскажите как правильно рисовать содержимое TOleContainer с прозрачным фоном на DC контрола в его процедуре Paint. В данный момент используется следующий код:
//создание и чтение из потока with Obj.OLE{TMapOLE=class(TOleContainer} do begin Visible:=false; Enabled:=false; BorderStyle:=bsNone; SizeMode:=smStretch; Parent:=Application.MainForm; LoadFromStream(S); end;
//рисование внутри TCustomControl.Paint with Obj.OLE do begin Visible:=false; Parent:=Self; Left:=ObjR.Left; Top:=ObjR.Top; Width:=ObjR.Right-ObjR.Left+1; Height:=ObjR.Bottom-ObjR.Top+1; Visible:=true; end;
//родная процедура ToleContainer.Paint не используется //вместо нее рисуем через OleDraw OleDraw(Obj.OLE.OleObjectInterface, DVASPECT_CONTENT,Obj.OLE.Canvas.Handle,Obj.OLE.ClientRect);
Проблема: как только oleContainer при масштабировании или прокрутке родительского контрола занимает всю клиентскую область родительского контрола последний перестает получать собщения WM_PAINT и отрисовка прекращается.
нет ли более граммотного способа рисовать содержимое OLE контейнера на заданном контроле, не создавая при этом дополнительный контрол на нем?
|