Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.06.2009, 18:06   #1
Djem1991
Форумчанин
 
Аватар для Djem1991
 
Регистрация: 05.01.2009
Сообщений: 130
По умолчанию Потребность в новом свойстве

Добрый день!

Пишу программку и появилась потребность в новом свойстве у имэйджа, такого же как свойство тэг.
Не подскажите,можно ли его создать или придётся писать свой компонент на основе ТИмэйдж?
В жизни нет reset'а, а жаль...
Djem1991 вне форума Ответить с цитированием
Старый 26.06.2009, 20:09   #2
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Вопрос

Это хотели?
Код:
unit ExtrImage;

interface

uses
  Windows, SysUtils, Classes, Controls, ExtCtrls, Jpeg;

type TIntMas = record
    A1,A2,A3,A4 :Integer;
End;

type
  TExtrImage = class(TImage)
  private
    { Private declarations }
  protected
   FMas :TIntMas;
    { Protected declarations }
  public
   Constructor Create(AOwner: TComponent); override;
   Destructor Destroy; override;
    { Public declarations }
  published
   property TagMas : TIntMas Read FMas Write FMas;
    { Published declarations }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Additional', [TExtrImage]);
end;

Constructor TExtrImage.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 ZeroMemory(@FMas, SizeOf(TIntMas));
end;

Destructor TExtrImage.Destroy;
begin
 inherited Destroy;
end;

end.
Пользование:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
 ExtrImage1.TagMas.A1 := 0;
 ExtrImage1.TagMas.A2 := 1;
 ExtrImage1.TagMas.A3 := 2;
 ExtrImage1.TagMas.A4 := 3;
end;
Alter вне форума Ответить с цитированием
Старый 26.06.2009, 20:38   #3
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

В новых делфях можно "на ходу", через хелперы, что-то вроде
Код:
TImageClassHelper = Class Helper For TImage
  private
     fNewProperty: integer;
  published
    property NewProperty: integer read fNewProperty write fNewProperty default 0;
 End;
пыщь
JTG вне форума Ответить с цитированием
Старый 26.06.2009, 21:08   #4
Djem1991
Форумчанин
 
Аватар для Djem1991
 
Регистрация: 05.01.2009
Сообщений: 130
По умолчанию

Большое спасибо всем)
щас попробую разобраться в коде)
+1 вам,спасиб)
В жизни нет reset'а, а жаль...
Djem1991 вне форума Ответить с цитированием
Старый 27.06.2009, 03:05   #5
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

А не, вообще так не выйдет В хелпере можно добавить только свойство или метод, а новые данные (поле) не даёт. Придётся писать потомка
пыщь
JTG вне форума Ответить с цитированием
Старый 27.06.2009, 11:26   #6
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Ну так и добавь в хелпере новое поле и пользуй его =) Хотя вобще использование хелперов вещь далеко не безопасная )
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 27.06.2009, 15:02   #7
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Так нельзя же, [DCC Error] Unit1.pas(20): E2169 Field definition not allowed after methods or properties
пыщь
JTG вне форума Ответить с цитированием
Старый 27.06.2009, 18:39   #8
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Ну не совсем так.
Существуют классовые методы, свойства и поля, поэтому вполне можно написать так:
Код:
TImageClassHelper = Class Helper For TImage
  private
     class var fNewProperty: integer;
  published
    class property NewProperty: integer read fNewProperty write fNewProperty default 0;
 End;
В этом случае мы имеем доступ к св-ву NewProperty и без создания экземпляра класса TImage
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как избежать сужения (уменьшение размера) пикселей изображения, при включенном свойстве Stretch? Лукманов Александр Мультимедиа в Delphi 8 26.10.2009 09:52
в новом окне jone Общие вопросы Delphi 1 05.10.2008 12:25
изменить размер шрифта в свойстве “Caption” формы (Form) Борис2 Компоненты Delphi 8 13.09.2007 20:36
Открытие ссылки в новом окне илья too HTML и CSS 1 14.07.2007 13:31