Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.02.18;
Скачать: CL | DM;

Вниз

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

 
legion33 ©   (2007-01-29 20:12) [0]

Создать компонент BrdImage, имеющий рамку, заданных толщины и цвета. Толщину и цвет рамки задавать с помощью свойств.
 За основу береться готовый компонент Image.


 
Юрий Зотов ©   (2007-01-29 21:09) [1]

> legion33 ©   (29.01.07 20:12)

И что?

Это Вы такое задание выдали? А кому?


 
RASkov   (2007-01-30 00:53) [2]

> [0] legion33 ©   (29.01.07 20:12)

 TBrdImage = class(TImage)
....
 published
   property BorderColor: TColor read FBorderColor write SetBorderColor;
   property BorderWidth: Byte read FBorderWidth write SetBorderWidth;
.......
 end;
.............
procedure TBrdImage.Paint;
begin
 Inherited Paint;
 Canvas.Pen.Width:=BorderWidth;
 Canvas.Pen.Color:=BorderColor;
 Canvas.Rectangle(Canvas.ClipRect);
end;


Ну и в этом духе...


 
Рамиль ©   (2007-01-30 11:45) [3]

Достаточно TGraphicControl, TImage тут не нужен и даже вреден.


 
legion33 ©   (2007-01-31 20:41) [4]

Народ сделал вроде как, но наверноу мне кажется что что-то неправильно, пишет ошибки непонимаю что он хочет от меня. Подскажите

unit BrdImage1;

interface

uses
 SysUtils, Classes, Controls, ExtCtrls, Windows, Messages,
 Graphics, Forms, Dialogs, StdCtrls;

type
 TBrdImage1 = class(TImage)
 private
   { Private declarations }
 protected
   { Protected declarations }
 public
   { Public declarations }
   procedure TPaint;
 published
   { Published declarations }
   property BorderColor: TColor read FBorderColor write FBorderColor;
   property BorderWidth: byte read FBorderWidth write FBorderWidth;
   Constructor Create (aowner:TComponent); override;

 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("MyComponents", [TBrdImage1]);
end;

constructor TBrdImage1.Create(aowner:Tcomponent);
begin
inherited create(Aowner);
end;

procedure TBrdImage1.TPaint;
begin
inherited Paint;
Canvas.Pen.Width := BorderWidth;
Canvas.Pen.Color := BorderColor;
Canvas.Rectangle(Canvas.ClipRect);
end;

end.


 
Olivetti   (2007-01-31 22:18) [5]

пишет ошибки непонимаю что он хочет от меня.

Вот так прям и пишет "ошибки"?

Поменяй:
procedure TPaint;
на
procedure Paint; override;


 
Olivetti   (2007-01-31 22:21) [6]

property BorderColor: TColor read FBorderColor write FBorderColor;
property BorderWidth: byte read FBorderWidth write FBorderWidth;


замени на:

property BorderColor: TColor read FBorderColor write SetBorderColor;
property BorderWidth: byte read FBorderWidth write SetBorderWidth;


и напиши методы соответствующие (SetXXXX), а то у тебя на изменение свойств не будет реакции. В методах этих вызывай Invalidate;


 
legion33 ©   (2007-02-01 22:04) [7]

Люди добрые вроде сделал как сказали, все получилось как-бы, но почему то я когда делаю новый ПРОЕКТ и ставлю этот компонент на форму то у меня начинает зависать DELPHI 7.
Вод код этой программы, посмотрите знающие люди в чем здесь проблема !!!

unit BrdImage2;

interface

uses
 SysUtils, Classes, Controls, ExtCtrls, Windows,
 Messages, Graphics, Forms, Dialogs, StdCtrls;

type
 TBrdImage2 = class(TImage)

 private
   { Private declarations }
   FBorderColor : TColor;
   FBOrderWidth : byte;

 protected
   { Protected declarations }
   procedure SetBorderColor(Value : TColor); //Ïðîöåäóðà çàïèñè
   procedure SetBorderWidth(Value : byte);   //Ïðîöåäóðà çàïèñè

 public
   { Public declarations }
   procedure Paint; override;

 published
   { Published declarations }
   property BorderColor: Tcolor read FBorderColor write SetBorderColor;
   property BorderWidth: byte read FBorderWidth write SetBorderWidth;
   constructor Create (aowner : TComponent); override;

 end;

procedure Register;

implementation

procedure Register;
begin
 RegisterComponents("MyComponents11", [TBrdImage2]);
end;

Constructor TBrdImage2.Create(aowner:TComponent);
begin
inherited create(Aowner);
end;

procedure TBrdImage2.Paint;
begin
inherited Paint;
Canvas.Pen.Width := BorderWidth;
Canvas.Pen.Color := BorderColor;
Canvas.Rectangle(Canvas.ClipRect);
end;

procedure TBrdImage2.SetBorderColor(Value : TColor);
begin
inherited Invalidate;
end;

procedure TBrdImage2.SetBorderWidth(Value : byte);
begin
inherited Invalidate;
end;

end.


 
Olivetti   (2007-02-01 22:28) [8]

procedure TBrdImage2.SetBorderColor(Value : TColor);
begin
inherited Invalidate;
end;

procedure TBrdImage2.SetBorderWidth(Value : byte);
begin
inherited Invalidate;
end;


Ты зачем везде пишешь inherited? Ты бы, прежде чем компоненты писать, изучил бы основы ООП. А то как-то нехорошо получается...

procedure TBrdImage2.SetBorderColor(Value : TColor);
begin
 if (Value <> FBorderColor) then
 begin
   FBorderColor := Value;
   Invalidate;
 end;
end;

procedure TBrdImage2.SetBorderWidth(Value : byte);
begin
 if (Value <> FBorderWidth) then
 begin
   FBorderWidth := Value;
   Invalidate;
 end;
end;


 
legion33 ©   (2007-02-01 23:18) [9]

Извени конечно,  но c ним (inherited) и без него одно и тоже! Это я так просто экспериментировал и ООП у меня плохо практики очень мало, преподы вредные.



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

Текущий архив: 2007.02.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.037 c
6-1158228046
KyRo
2006-09-14 14:00
2007.02.18
Тайм аут индифтп клиента


15-1169990206
Eraser
2007-01-28 16:16
2007.02.18
Название DLL и копирайт


15-1169883327
Piroxyline
2007-01-27 10:35
2007.02.18
На каком языке?


15-1170081313
Cyrax
2007-01-29 17:35
2007.02.18
Протокол Y-modem


9-1144144001
антонио
2006-04-04 13:46
2007.02.18
[GLScene] Создание объекта