Вниз
Скачать: CL | DM;

Хитрое свойство   Найти похожие ветки 

← →
Apollon_604   (2006-07-03 16:55) [0]

Привет. Вопрос, по-моему, достаточно тривиальный, но как-то у меня не получается его решить.
Итак, есть тип:


type
 TMLogLayer =  record
   Name:     String;
   Visible:  Boolean;
 end;


есть поле:


 private
   fLayers: array[0..1] of TMLogLayer;


необходимо описать свойство для доступа к этому полю:


 public
   property Layers[AIndex: Word]: TMLogLayers read GetLayers write ???;


так, чтобы можно было написать, например


 MyForm.Layers[0].Visible := True;

Как должна выглядеть процедура для записи?
И можно ли решить этот вопрос каким-либо другим методом (например, с помощью указателей)?


← →
Плохиш ©   (2006-07-03 17:05) [1]


>  public
>    property Layers[AIndex: Word]: TMLogLayers read GetLayers write SetLayers;

Потом жмёшь Shft+Ctr+C и радуешься результату


← →
Плохиш ©   (2006-07-03 17:11) [2]

Фу, блин, не так прочитал :-(

function TForm1.GetLayers(AIndex: Word): TMLogLayer;
begin
 Result := fLayers[AIndex];
end;


Разве не делает то что надо?


← →
Apollon_604   (2006-07-03 17:18) [3]

Она-то делает... Как должна выглядеть процедура SetLayers?


← →
Reindeer Moss Eater ©   (2006-07-03 17:24) [4]

Как процедура с одним целочисленным параметром.


← →
Apollon_604   (2006-07-03 17:27) [5]


> Как процедура с одним целочисленным параметром.


А в теле что должно быть?


← →
MBo ©   (2006-07-03 17:32) [6]

SetLayers позволит устанавливать только запись целиком. Для доступа к отдельному полю на чтение работает GetLayers, а вот записать поле так не выйдет. Возможно, стоит сделать два отдельных индексированных свойства  для полей


← →
Apollon_604   (2006-07-03 17:42) [7]


> SetLayers позволит устанавливать только запись целиком.
> Для доступа к отдельному полю на чтение работает GetLayers,
>  а вот записать поле так не выйдет.


Вот в этом-то все и дело... :(((


← →
MBo ©   (2006-07-03 17:45) [8]

>Вот в этом-то все и дело... :(((
Два отдельных свойства не нравится?


← →
Джо ©   (2006-07-03 18:22) [9]

Ну, еще можно предложить сделать TMLogLayer классом. Если это подходит, конечно.


← →
ЮЮ ©   (2006-07-04 03:13) [10]

public
 property LayerName[AIndex: Word]: string ...
 property IsLayerVisible[AIndex: Word]: boolean ...



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

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.04 c
15-1150788242
SergeyG
2006-06-20 11:24
2006.07.23
А будет ли на КарманномПК работать программа,


2-1151698228
Adil
2006-07-01 00:10
2006.07.23
Открыть ParamStr(1) и не загрузить программу заново.


15-1150942348
TUser
2006-06-22 06:12
2006.07.23
Верховный суд трактует законы под диктовку МВД


15-1151135169
Verg
2006-06-24 11:46
2006.07.23
Задачка. Надой найти кратчайшее решение.


2-1152013219
Juice
2006-07-04 15:40
2006.07.23
Опережающее описание




   Наверх