![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хитрое свойство
Apollon_604 © (2006-07-03 16:55:00)Привет. Вопрос, по-моему, достаточно тривиальный, но как-то у меня не получается его решить.
Итак, есть тип:
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-04 03:13:00) [1]public
property LayerName[AIndex: Word]: string ...
property IsLayerVisible[AIndex: Word]: boolean ...
Джо (2006-07-03 18:22:00) [2]Ну, еще можно предложить сделать TMLogLayer классом. Если это подходит, конечно.
MBo (2006-07-03 17:45:00) [3]>Вот в этом-то все и дело... :(((
Два отдельных свойства не нравится?
Apollon_604 (2006-07-03 17:42:00) [4]
> SetLayers позволит устанавливать только запись целиком.
> Для доступа к отдельному полю на чтение работает GetLayers,
> а вот записать поле так не выйдет.
Вот в этом-то все и дело... :(((
MBo (2006-07-03 17:32:00) [5]SetLayers позволит устанавливать только запись целиком. Для доступа к отдельному полю на чтение работает GetLayers, а вот записать поле так не выйдет. Возможно, стоит сделать два отдельных индексированных свойства для полей
Apollon_604 (2006-07-03 17:27:00) [6]
> Как процедура с одним целочисленным параметром.
А в теле что должно быть?
Reindeer Moss Eater (2006-07-03 17:24:00) [7]Как процедура с одним целочисленным параметром.
Apollon_604 (2006-07-03 17:18:00) [8]Она-то делает... Как должна выглядеть процедура
SetLayers?
Плохиш (2006-07-03 17:11:00) [9]Фу, блин, не так прочитал :-(
function TForm1.GetLayers(AIndex: Word): TMLogLayer;
begin
Result := fLayers[AIndex];
end;
Разве не делает то что надо?
Плохиш (2006-07-03 17:05:00) [10]
> public
> property Layers[AIndex: Word]: TMLogLayers read GetLayers write SetLayers;
Потом жмёшь Shft+Ctr+C и радуешься результату