Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

изменение/добавление свойств у стандартных компонентов [D7, WinXP]


Alex603081 ©   (2006-03-15 19:11:00) 

Если можно, то как добавить к компоненту TImage новое свойство, например NewProp типа Real или String, чтобы к нему можно было обратьться так: Form1.Image1.NewPropи можно было его и читать и в него записывать.
x:=Form1.Image1.newProp;
Form1.Image1.newProp:=x;

Зарание спасибо


StriderMan   (2006-06-21 19:06:00) [1]

я че-то не пойму о чем спор?

как добавить свойство в компонент не создавая компонент-наследник и не переписывая стандартный?


ZeroDivide   (2006-06-21 08:28:00) [2]

Классы хелперы могли бы помочь, но в D7 их еще небыло.

TTest = class
  procedure SomeProc;
end;

TTestHelper = class helper for TTest
  function SomeFunc : string;
end;

С этим определением класса, мы можем использовать следующий код:

var
  t:TTest;
begin
 t:=TTest.Create;
 t.SomeFunc ;
...
даже несмотря на то, что SomeFunc не была определена в классе TTest!


Юрий Зотов   (2006-06-20 22:01:00) [3]

> MPX_NoFear ©   (20.06.06 15:38) [7]

Предположим, TImage должен рисовать текст на фоне картинки. Идем по вашему пути:

TMyRecord = record
 Image: TImage;
 Text: string
end;

Отлично. Теперь в программе пишу: MyRecord.Text := 'что-то'.

Внимание, вопрос!

Не подскажете, как сделать, чтобы при изменении текста TImage тут же отобразил новый текст? С учетом того, что сегодня текст в коде программы меняется в 100 произвольных местах, а завтра он будет меняться еще в 100 произвольных местах.

Заранее благодарю.


MPX_NoFear   (2006-06-20 15:38:00) [4]

Товарищи, я конечно извеняюсь... Но какого вы па**тесь?
...
Можно подумать, вы какие-то супер серьезные или показательные программы создаете... Сомневаюсь...
А раз так, то в данном конкретном случае можно било бы просто создать запись которая состояла бы из TImage и String или чего-то еще и все...
Все... Ну мы ведь не на уроке информатики...!!!


Leonid Troyanovsky   (2006-04-04 22:07:00) [5]


> AbrosimovA   (03.04.06 09:29) [5]

> Вообще-то это не свойства, а переменные для описываемого
> класса.


Которые принято называть полями (fields).

--
Regards, LVT.


AbrosimovA   (2006-04-03 09:29:00) [6]


> public
> Way : string; // мои свойства
> BootFile : string;// мои свойства
> Programm : string;// мои свойства
> ImText : string;// мои свойства
>  end;


Вообще-то это не свойства, а переменные для описываемого класса.


Наиль   (2006-04-02 23:54:00) [7]


> with  TImageMy.Create(Self) do
> begin
> //здесь задаю необходимые мне свойства
> end;

Так можно делать только в том случае, если не собираешься изменять однажды заданные свойства. В противном случае лучше воспользоваться такой записью:

TForm1=class(TForm)
...
ImageMy:TImageMy;
...
end;
...
ImageMy:=TImageMy.Create(Self);
with ImageMy do begin
//здесь задаю необходимые мне свойства
end;
...
with ImageMy do begin
//здесь изменяю необходимые мне свойства
end;


adre   (2006-04-02 22:31:00) [8]

ещё проще в плане создания наследника -
в public пишу необходимые мне свойства.

uses .... ;  

type
  TImageMy = class(TImage)
public
Way : string; // мои свойства
BootFile : string;// мои свойства
Programm : string;// мои свойства
ImText : string;// мои свойства
 end;

Затем в программе создаю объект данного типа с помощью процедуры
with  TImageMy.Create(Self) do
begin
//здесь задаю необходимые мне свойства
end;
у меня это работает, если что не верно поправте.


AbrosimovA   (2006-03-16 08:55:00) [9]

Я обычно иду по пути - создание наследника TImage.

uses ... , ExtCtrls;

type TMyImage = class(TImage)
 private
   FNewProp: real;
 public
   constructor Create(AOwner: TComponent); override;
 published
   property NewProp: real read FNewProp write FNewProp;
 end;

var
 MyImage: TMyImage;

constructor TMyImage.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FNewProp:=2.3;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
MyImage:=TMyImage.Create(Self);
with MyImage do begin
 Parent:=Self;
 ...
 Label1.Caption:=FloatToStr(NewProp);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MyImage.Free
end;


Кашперук Иван   (2006-03-15 20:52:00) [10]

Насколько я знаю, создать компоненту на основании TImage и добавить свойство.
Стандартные думаю менять нельзя.
Если не прав, поправьте.


Наверх

Титульная страница Поиск, карта сайта Написать письмо