Форум: "Начинающим";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];
ВнизСоздание компонента Найти похожие ветки
← →
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
Set
BorderColor;
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c