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

Вниз

изменение/добавление свойств у стандартных компонентов   Найти похожие ветки 

 
Alex603081   (2006-03-15 19:11) [0]

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

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


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

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


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

Я обычно иду по пути - создание наследника 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;


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

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

uses .... ;  

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

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


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


> 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;


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


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


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


 
Leonid Troyanovsky ©   (2006-04-04 22:07) [6]


> AbrosimovA   (03.04.06 09:29) [5]

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


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

--
Regards, LVT.


 
MPX_NoFear ©   (2006-06-20 15:38) [7]

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


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

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

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

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

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

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

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

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


 
ZeroDivide ©   (2006-06-21 08:28) [9]

Классы хелперы могли бы помочь, но в 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!


 
StriderMan ©   (2006-06-21 19:06) [10]

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

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



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

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

Наверх




Память: 0.49 MB
Время: 0.032 c
2-1173105640
ITineraNT
2007-03-05 17:40
2007.04.01
Компоненты TRz..., Tabc...


2-1173423319
zumm
2007-03-09 09:55
2007.04.01
Неподвижная форма


15-1173166807
Glivera
2007-03-06 10:40
2007.04.01
BIOS ROM Checksum error


15-1173259369
Оззя
2007-03-07 12:22
2007.04.01
DelphiGFX умер?


2-1173468110
Derty_Edd
2007-03-09 22:21
2007.04.01
из Extended в String