Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.006 c
15-1215868746
deadteachers
2008-07-12 17:19
2008.08.31
не открываются диски


15-1215750791
shlst
2008-07-11 08:33
2008.08.31
А чего это дедушки волнуются -


6-1192736496
DprPasDcu
2007-10-18 23:41
2008.08.31
Как управлять сетевыми подключениями?


2-1216987008
Delphist
2008-07-25 15:56
2008.08.31
Генератор


2-1216790670
vegarulez
2008-07-23 09:24
2008.08.31
Можно ли управлять вольтажом USB порта?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский