powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно сделать "проброс" параметров класса?
8 сообщений из 8, страница 1 из 1
Как правильно сделать "проброс" параметров класса?
    #39471436
gssbox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Иногда возникает необходимость передать какое то свойство класса внутри класса наружу см. пример ниже:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
type
 TMyClass1 = Class
  private
    FParam1: byte;
  public
   property Param1: byte read FParam1 write FParam1;
 end;

type
 TMyClass2 = Class
  private
    FMyClass1: TMyClass1;
    FParam2: byte;
    function GetParam1: byte;
    procedure SetParam1(const Value: byte);
  public
   property Param1: byte read GetParam1 write SetParam1;
   property Param2: byte read FParam2 write FParam2;
 end;

function TMyClass2.GetParam1: byte;
begin
 Result := FMyClass1.Param1;
end;

procedure TMyClass2.SetParam1(const Value: byte);
begin
 FMyClass1.Param1 := Value;
end;



В приведенном примере мне нужно получить доступ к свойству TMyClass1.Param1 из TMyClass2.
Сейчас я в таком случае делаю это так как привел в примере выше.
Подозреваю что есть более изящные способы передачи.
Может кто подскажет как вы поступаете в таком случае?
...
Рейтинг: 0 / 0
Как правильно сделать "проброс" параметров класса?
    #39471439
gssboxПодозреваю что есть более изящные способы передачи. нет
...
Рейтинг: 0 / 0
Как правильно сделать "проброс" параметров класса?
    #39471456
ma1tus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переформулировать подозрительный "проброс" в изящное "предоставление доступа".
...
Рейтинг: 0 / 0
Как правильно сделать "проброс" параметров класса?
    #39471459
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gssboxИногда возникает необходимость передать какое то свойство класса внутри класса наружу см. пример ниже:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
type
 TMyClass1 = Class
  private
    FParam1: byte;
  public
   property Param1: byte read FParam1 write FParam1;
 end;

type
 TMyClass2 = Class
  private
    FMyClass1: TMyClass1;
    FParam2: byte;
    function GetParam1: byte;
    procedure SetParam1(const Value: byte);
  public
   property Param1: byte read GetParam1 write SetParam1;
   property Param2: byte read FParam2 write FParam2;
 end;

function TMyClass2.GetParam1: byte;
begin
 Result := FMyClass1.Param1;
end;

procedure TMyClass2.SetParam1(const Value: byte);
begin
 FMyClass1.Param1 := Value;
end;



В приведенном примере мне нужно получить доступ к свойству TMyClass1.Param1 из TMyClass2.
Сейчас я в таком случае делаю это так как привел в примере выше.
Подозреваю что есть более изящные способы передачи.
Может кто подскажет как вы поступаете в таком случае?

Это называется композиция или агрегирование. Вполне нормальная реализация.
...
Рейтинг: 0 / 0
Как правильно сделать "проброс" параметров класса?
    #39471468
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gssboxИногда возникает необходимость передать какое то свойство класса внутри класса наружу см. пример ниже:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
type
 TMyClass1 = Class
  private
    FParam1: byte;
  public
   property Param1: byte read FParam1 write FParam1;
 end;

type
 TMyClass2 = Class
  private
    FMyClass1: TMyClass1;
    FParam2: byte;
    function GetParam1: byte;
    procedure SetParam1(const Value: byte);
  public
   property Param1: byte read GetParam1 write SetParam1;
   property Param2: byte read FParam2 write FParam2;
 end;

function TMyClass2.GetParam1: byte;
begin
 Result := FMyClass1.Param1;
end;

procedure TMyClass2.SetParam1(const Value: byte);
begin
 FMyClass1.Param1 := Value;
end;



В приведенном примере мне нужно получить доступ к свойству TMyClass1.Param1 из TMyClass2.
Сейчас я в таком случае делаю это так как привел в примере выше.
Подозреваю что есть более изящные способы передачи.
Может кто подскажет как вы поступаете в таком случае?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
interface

type
 TMyClass1 = Class
  private
  public
    FParam1: byte;
 end;

 TMyClass2 = Class
  private
    FMyClass1: TMyClass1;
  public
    FParam2: byte;
    function GetParam1: byte;
    procedure SetParam1(const Value: byte);
 end;

 TMyClass3 = Class
  private
    FMyClass1: TMyClass1;
  public
    function GetSetParam1: pByte;
 end;

implementation

function TMyClass2.GetParam1: byte;
begin
 Result := FMyClass1.Param1;
end;

procedure TMyClass2.SetParam1(const Value: byte);
begin
 FMyClass1.Param1 := Value;
end;

function TMyClass3.GetSetParam1: pByte;
begin
  Result := @fMyClass1.FParam1
end;



:)_
...
Рейтинг: 0 / 0
Как правильно сделать "проброс" параметров класса?
    #39471472
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
type
 TMyClass1 = Class
  private
    FParam1: byte;
  public
   property Param1: byte read FParam1 write FParam1;
 end;

type
 TMyClass2 = Class(TMyClass1)
  private
    FParam2: byte;
  public
   property Param2: byte read FParam2 write FParam2;
 end;

var
  My : TMyClass2 ;
begin
  My.Param1 := 0 ;
  My.Param2 := My.Param1 ;
end;



Бггг
...
Рейтинг: 0 / 0
Как правильно сделать "проброс" параметров класса?
    #39471476
gssbox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чччДgssboxИногда возникает необходимость передать какое то свойство класса внутри класса наружу см. пример ниже:

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
type
 TMyClass1 = Class
  private
    FParam1: byte;
  public
   property Param1: byte read FParam1 write FParam1;
 end;

type
 TMyClass2 = Class
  private
    FMyClass1: TMyClass1;
    FParam2: byte;
    function GetParam1: byte;
    procedure SetParam1(const Value: byte);
  public
   property Param1: byte read GetParam1 write SetParam1;
   property Param2: byte read FParam2 write FParam2;
 end;

function TMyClass2.GetParam1: byte;
begin
 Result := FMyClass1.Param1;
end;

procedure TMyClass2.SetParam1(const Value: byte);
begin
 FMyClass1.Param1 := Value;
end;



В приведенном примере мне нужно получить доступ к свойству TMyClass1.Param1 из TMyClass2.
Сейчас я в таком случае делаю это так как привел в примере выше.
Подозреваю что есть более изящные способы передачи.
Может кто подскажет как вы поступаете в таком случае?

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
interface

type
 TMyClass1 = Class
  private
  public
    FParam1: byte;
 end;

 TMyClass2 = Class
  private
    FMyClass1: TMyClass1;
  public
    FParam2: byte;
    function GetParam1: byte;
    procedure SetParam1(const Value: byte);
 end;

 TMyClass3 = Class
  private
    FMyClass1: TMyClass1;
  public
    function GetSetParam1: pByte;
 end;

implementation

function TMyClass2.GetParam1: byte;
begin
 Result := FMyClass1.Param1;
end;

procedure TMyClass2.SetParam1(const Value: byte);
begin
 FMyClass1.Param1 := Value;
end;

function TMyClass3.GetSetParam1: pByte;
begin
  Result := @fMyClass1.FParam1
end;



:)_

Да уж в извращенизяществе Вам не откажешь
...
Рейтинг: 0 / 0
Как правильно сделать "проброс" параметров класса?
    #39471482
чччД
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gssbox,

не надо искать проблем там, где их нет.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как правильно сделать "проброс" параметров класса?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]