Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.31;
Скачать: CL | DM;

Вниз

Классы: как присвоить свойствам значения по-умолчанию?   Найти похожие ветки 

 
textExpanser   (2008-07-23 12:07) [0]

Нужно для сокращения кодинга и повышения удобочитаемости присваивать свойствам класса значения по-умолчанию прямо в описании этого класса.
Типа как константы-переменные (инициализируемые переменные).
А в классе это могло бы выглядеть так:
type
 MyClass = class
   Width :Integer = 1000;
   Height :Integer = 700;
 end;

Такое уже прикрутили в Delphi или еще нет? Если прикрутили, то с какой версии работает?


 
Dennis I. Komarov ©   (2008-07-23 12:18) [1]

в VCL есть много таких, надо бы глянуть, аль лень?


 
Vlad Oshin ©   (2008-07-23 12:18) [2]

Конструктор этого класса может проще написать?


 
{RASkov} ©   (2008-07-23 12:19) [3]

> [0] textExpanser   (23.07.08 12:07)

До D7 - нет.
А присваивать значения по умолчанию нужно в конструкторе..... а если класс еще и компонент, то для "умалчиваемых" свойств есть деректива(или как ее там, комманда) default ххх.... Она(default) нужна только для ИО... еще можно указать целиком свойство default(оффтоп), т.е. свойство по умолчанию, пример: Lst: TStringList; Txt: String; Txt:=Lst.String[5] а можно и так: Txt:=Lst[5] Свойство String по умолчанию, но это уже не по теме.... сорри.


 
Тын-Дын ©   (2008-07-23 12:19) [4]


> Dennis I. Komarov ©   (23.07.08 12:18) [1]
> в VCL есть много таких


Например?


 
Anatoly Podgoretsky ©   (2008-07-23 12:19) [5]

> textExpanser  (23.07.2008 12:07:00)  [0]

Свойства


 
Медвежонок Пятачок ©   (2008-07-23 12:23) [6]

присваивать свойствам класса значения по-умолчанию прямо в описании этого класса.

Такое невозможно без откровенных и кривых костылей. Объекты в D динамические и не создаются компилятором.


 
textExpanser   (2008-07-23 12:26) [7]

А в записях (record)?


 
Dennis I. Komarov ©   (2008-07-23 12:26) [8]

> [4] Тын-Дын ©   (23.07.08 12:19)


TMemo =
...
property BevelKind default bkNone;
...
В каком конструкторе присваевается - не нашел (лень)


 
Медвежонок Пятачок ©   (2008-07-23 12:27) [9]

А в записях (record)?

а в букварь?


 
Anatoly Podgoretsky ©   (2008-07-23 12:31) [10]

Наверно с букваря и надо начинать, что бы мог отличать свойства от полей.


 
textExpanser   (2008-07-23 12:37) [11]

Ок. Нужно именно для полей.


 
Медвежонок Пятачок ©   (2008-07-23 12:38) [12]

Для полей тоже самое что и для свойств.
[6]


 
{RASkov} ©   (2008-07-23 12:46) [13]

> [8] Dennis I. Komarov ©   (23.07.08 12:26)
> property BevelKind default bkNone;

default никуда ничего не присваивает... В данном случае нужно только для ИО(инспектора объектов)


 
Медвежонок Пятачок ©   (2008-07-23 12:52) [14]

А инспектору-то он зачем сдался?


 
palva ©   (2008-07-23 12:53) [15]

> default никуда ничего не присваивает...
> В данном случае нужно только для ИО(инспектора объектов)

При динамическом создании компонента - присваивает.


 
Медвежонок Пятачок ©   (2008-07-23 12:54) [16]

При динамическом создании компонента - присваивает.

Чего только не услышишь в жару


 
Dennis I. Komarov ©   (2008-07-23 12:54) [17]

> [13] {RASkov} ©   (23.07.08 12:46)

Я в курсе, просто не стал рыть в конструктре какого предка он присваивается. Пусть будет задание для автора...


 
jack128_   (2008-07-23 12:55) [18]


> В данном случае нужно только для ИО(инспектора объектов)

не только.


> А инспектору-то он зачем сдался?
Инспектор продсвечивает жирным свойства, значения которых не равны, чем что по умолчаниюю идут.


 
{RASkov} ©   (2008-07-23 12:58) [19]

> [14] Медвежонок Пятачок ©   (23.07.08 12:52)

Для того, что бы не выделять жирным изменившееся свойство.... Т.е. если будет
property Width: Integer .... default 100;

В конструкторе:
 Width:=100;

Для компонентов в таком случае ИО будет считать, что свойство по умолчанию и не выделит его жирным...


 
Медвежонок Пятачок ©   (2008-07-23 13:01) [20]

Ну я бы все равно не сказал, что дефолт нужен инспектору.


 
Anatoly Podgoretsky ©   (2008-07-23 13:02) [21]


> А инспектору-то он зачем сдался?

F1


 
Тын-Дын ©   (2008-07-23 13:06) [22]


> Dennis I. Komarov ©   (23.07.08 12:26) [8]
> > [4] Тын-Дын ©   (23.07.08 12:19)
>
>
> TMemo =
> ...
> property BevelKind default bkNone;
> ...
> В каком конструкторе присваевается - не нашел (лень)


А зря лень. тогда бы увидел, что присваиваются значения в конструкторе, а не в поле класса.


 
Тын-Дын ©   (2008-07-23 13:09) [23]


> jack128_   (23.07.08 12:55) [18]
> Инспектор продсвечивает жирным свойства, значения которых
> не равны, чем что по умолчаниюю идут.
>
> {RASkov} ©   (23.07.08 12:58) [19]
> Для того, что бы не выделять жирным изменившееся свойство.
>
> Для компонентов в таком случае ИО будет считать, что свойство
> по умолчанию и не выделит его жирным...


Только для BDS.


 
Медвежонок Пятачок ©   (2008-07-23 13:12) [24]

не только для БДС, зато только для ординал тайп


 
Тын-Дын ©   (2008-07-23 13:18) [25]


> Медвежонок Пятачок ©   (23.07.08 13:12) [24]
> не только для БДС, зато только для ординал тайп


В D6 нет такого для любых типов. В D5 тоже. Остается D7?


 
textExpanser   (2008-07-23 13:19) [26]

Раньше default использовалось для того, чтобы не сохранять в dfm значения свойств, которые равны "default". Что-то изменилось?

Запутался я в ваших комментариях. Так можно как-то инициализировать свойство или поле класса прямо в описании класса?


 
Медвежонок Пятачок ©   (2008-07-23 13:19) [27]

остается


 
Медвежонок Пятачок ©   (2008-07-23 13:23) [28]

Так можно как-то инициализировать свойство или поле класса прямо в описании класса?

уже сказали.


 
Тын-Дын ©   (2008-07-23 13:25) [29]


> textExpanser   (23.07.08 13:19) [26]
>Так можно как-то инициализировать
> свойство или поле класса прямо в описании класса?


Нет.


 
Anatoly Podgoretsky ©   (2008-07-23 13:47) [30]

> textExpanser  (23.07.2008 13:19:26)  [26]

Изменилось, но и раньше поведение зависило от других модификаторов.
А сейчас кроме того что было, он еще и другие вещи делает, например подсветка в ИО


 
Dennis I. Komarov ©   (2008-07-23 14:16) [31]

> [22] Тын-Дын ©   (23.07.08 13:06)

А разве я где-то утверждал обратное? Или [0] оно это мне надо было. На какого, мне его искать, если я и так знаю, что гдемто оно там.


 
Тын-Дын ©   (2008-07-23 14:21) [32]


> Dennis I. Komarov ©   (23.07.08 14:16) [31]
> > [22] Тын-Дын ©   (23.07.08 13:06)
>
> А разве я где-то утверждал обратное?


Твои слова:


> Dennis I. Komarov ©   (23.07.08 12:18) [1]
> в VCL есть много таких, надо бы глянуть, аль лень?


Или нет?


 
Dennis I. Komarov ©   (2008-07-23 14:28) [33]

> [32] Тын-Дын ©   (23.07.08 14:21)

Мои и что?

Subj: "Классы: как присвоить свойствам значения по-умолчанию?"


 
Тын-Дын ©   (2008-07-23 16:08) [34]


> Dennis I. Komarov ©   (23.07.08 14:28) [33]
> > [32] Тын-Дын ©   (23.07.08 14:21)
>
> Мои и что?


И то. Топик читай внимательнее.


 
Vlad Oshin ©   (2008-07-23 16:27) [35]

CL=class
  const
   CI:char="5";
  var
   FI:string[2];
 end;

var
 Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
var
CL1:CL;
begin
 cl1:=cl.Create;
 showmessage(CL1.fi+"--"+CL1.CI);
 CL1.CI:="3";
 showmessage(CL1.fi+"--"+CL1.CI);
end;



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

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

Наверх




Память: 0.55 MB
Время: 0.038 c
4-1194955541
Tahion2
2007-11-13 15:05
2008.08.31
Смена иконки папки в Висте


15-1215775699
Andy BitOff
2008-07-11 15:28
2008.08.31
Прогресс бар при сохранении документа в Ворде


1-1195976284
DmT
2007-11-25 10:38
2008.08.31
Как засунуть форму в TaskBar, ввиде отдельной панельки


8-1184845530
ZMRaven
2007-07-19 15:45
2008.08.31
Захват


2-1216816296
lavgirls
2008-07-23 16:31
2008.08.31
Програ для отображения трафика