Вниз
Скачать: CL | DM;

Создание компонент   Найти похожие ветки 

← →
Darrin ©   (2003-06-23 14:39) [0]

ДД. Возникла следующая проблема: создал компонент TGPanel на основе TPanel у которого объявил свойство
private
FImage: TPicture;
published
property Image:Tpicture read FImage write SetImage;

procedure TGPanel.SetImage(Value:Tpicture);
begin
FImage.Assign(value);
end;

Все замечательно, только при компиляции проекта не происходит загрузка той картинки, что я присвоил свойству Image в дизайн-тайме, и соответственно ничего не пашет.


← →
Семен Сорокин ©   (2003-06-23 14:42) [1]

не происходит загрузка той картинки
куда?
и соответственно ничего не пашет
как это проявляется?


← →
Darrin ©   (2003-06-23 14:46) [2]

в ран-тайме не доступна картинка загруженная в дизайн-тайме


← →
Skier ©   (2003-06-23 14:47) [3]

>Darrin © (23.06.03 14:39)
Код всего компанента покажи.


← →
Darrin ©   (2003-06-23 14:48) [4]

в ран-тайме не доступна картинка загруженная в дизайн-тайме


← →
Darrin ©   (2003-06-23 14:54) [5]

> Skier © (23.06.03 14:47)
Это краткий вариант

TDPGToolBar = class(TDPPanel)
private
FImage:Tpicture;
FShowBMP:TbitMap;
procedure SetImage(Value:TPicture);
protected
procedure Paint; override;
public
{ Public declarations }
property canvas;
constructor Create(Owner: TComponent);override;
destructor Destroy; override;
published
{ Published declarations }
property Image:TPicture read FImage write SetImage;
end;

constructor TDPGToolBar.Create(Owner: TComponent);
begin
inherited create(Owner);
FImage:=Tpicture.Create;
FShowBMP:=TbitMap.Create;
end;

procedure TDPGToolBar.Paint;
var RectSource,RectDest:Trect;
begin
inherited;
RectSource.Left:=0;
RectSource.Top:=0;
RectSource.Right:=FShowBMP.Width;
RectSource.Bottom:=FShowBMP.Height;

if FButtonAlign=alLeft then
begin
RectDest.Left:=0;
RectDest.Top:=0;
RectDest.Right:=FShowBMP.Width;
RectDest.Bottom:=FShowBMP.Height;
end else
begin
RectDest.Left:=width-FShowBMP.Width;
RectDest.Top:=0;
RectDest.Right:=FShowBMP.Width;
RectDest.Bottom:=FShowBMP.Height;
end;
// Canvas.CopyRect(RectDest,Fimage.Bitmap.Canvas,RectSource);
Canvas.CopyRect(RectDest,FShowBMP.Canvas,RectSource);

// Canvas.Rectangle(10,10,30,30);
end;

procedure TDPGToolBar.SetImage(Value:Tpicture);
var RectSource,RectDest:Trect;
begin
FImage.Assign(value);
RectSource.Left:=0;
RectSource.Top:=0;
RectSource.Right:=Fimage.Width;
RectSource.Bottom:=trunc(Fimage.Height/3);

RectDest.Left:=0;
RectDest.Top:=0;
RectDest.Right:=RectSource.Right;
RectDest.Bottom:=RectSource.Bottom;
FShowBMP.Width:=Fimage.Width;
FShowBMP.Height:=Fimage.Height;
FShowBMP.Canvas.CopyRect(RectDest,Fimage.Bitmap.Canvas,RectSource);
Repaint;
end;

end;



← →
Семен Сорокин ©   (2003-06-23 15:21) [6]

что это TDPPanel???


← →
Darrin ©   (2003-06-23 15:56) [7]

TDPPanel = class(TPanel), но это не приципиально


← →
Darrin ©   (2003-06-23 15:56) [8]

TDPPanel = class(TPanel)

private
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
procedure CMMouseEnter(var msg: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;

protected
procedure MouseEnter; dynamic;
procedure MouseLeave; dynamic;

public
property Canvas;
constructor Create(AOwner : TComponent); override;

published
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;


← →
Семен Сорокин ©   (2003-06-23 16:01) [9]

Глянь реализацию TImage, возможно здесь какие-то проблемы с канвой. А пробовал задавать TPicture в рантайме? работает?


← →
Darrin ©   (2003-06-23 16:06) [10]

если задать свойство FIMage.bitmap.loadfromfile("..."); в ран-таме все работает


← →
Darrin ©   (2003-06-23 16:07) [11]

а на канве все рисуется нормально


← →
Darrin ©   (2003-06-23 16:17) [12]

почему-то не происходит загрузка ImageData из *.dfm при создании формы, не срабатывает процедура SetImage


← →
Skier ©   (2003-06-23 16:44) [13]

Как используешь DefineBinaryProperty ? Если используешь...



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.017 c
14-7632
Neft
2003-06-15 16:44
2003.07.03
Руководство пользователя


14-7717
Шурик
2003-06-17 17:26
2003.07.03
Indy and Attachments


14-7707
Карлсон
2003-06-15 12:53
2003.07.03
что есть ревность?


3-7288
Саня
2003-06-07 10:59
2003.07.03
Может ли EhLib подсчитать


1-7397
Maxim Pshevlotsky
2003-06-23 04:53
2003.07.03
Перетаскивание формы курсором мыши




   Наверх