Форум: "Компоненты";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Внизизменение/добавление свойств у стандартных компонентов Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.031 c