Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.041 c
15-1169997121
Интересующийся
2007-01-28 18:12
2007.02.18
Code templates в Visual Studio


15-1169982180
Ломброзо
2007-01-28 14:03
2007.02.18
Воскресные задачки (для воскресной школы)


1-1167139927
GanibalLector
2006-12-26 16:32
2007.02.18
вложенная структура


15-1169562476
default
2007-01-23 17:27
2007.02.18
Можно ли в .NET малой кровью получить регион


15-1169706061
Ega23
2007-01-25 09:21
2007.02.18
Всех Татьян - с Татьяниным днём!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский