Конференция "Corba" » рисование TOleContainer на наследнике TCustomControl [Delphi]
 
  • Unknown user © (20.11.06 11:08) [0]
    подскажите как правильно рисовать содержимое 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 контейнера на заданном контроле, не создавая при этом дополнительный контрол на нем?
 
Конференция "Corba" » рисование TOleContainer на наследнике TCustomControl [Delphi]
Есть новые Нет новых   [134431   +9][b:0][p:0]