Главная страница
    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.042 c
15-1170069252
Ломброзо
2007-01-29 14:14
2007.02.18
Свобода слова


6-1158149691
KyRo
2006-09-13 16:14
2007.02.18
Есть ли соединение по сети ?


15-1169667249
FIL-23
2007-01-24 22:34
2007.02.18
Коды Хемминга


2-1170148925
zdm
2007-01-30 12:22
2007.02.18
EhLib 4 bds 2006


11-1148486838
Alexei6021
2006-05-24 20:07
2007.02.18
Перекодировка ANSI-Dos(OEM)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский