Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.23;
Скачать: 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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.039 c
2-1151953146
Yegorchic
2006-07-03 22:59
2006.07.23
Длина и высота TListView.Item


3-1148030068
petvv
2006-05-19 13:14
2006.07.23
SQL


15-1151096439
SlyHide
2006-06-24 01:00
2006.07.23
Как зделать компонент содержащий два других


15-1151093723
SlyHide
2006-06-24 00:15
2006.07.23
Как зделать компонент содержащий два других


1-1149794468
GanibalLector
2006-06-08 23:21
2006.07.23
Интерфейсы...