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

Вниз

Font ы в свойствах   Найти похожие ветки 

 
Brain   (2003-01-24 17:42) [0]

Люди такой трабл,

{private}
FFontCap:TFont;
procedure SetFFontCap(Value:TFont);

{publish}
property FontCap : TFont read FFontCap write SetFFontCap;

implementation

procedure MyButton.SetFFontCap(Value:TFont);
begin
FFontCap:=Value;
end;

constructor Create(AOwner:TComponent);
begin
---//--
FFontCap:=TFont.Create;
end;

destructor Destroy;
begin
FFontCap.free
end;

И список выбора стандартных шрифтов в Object Inspector не
раскрываеться кучу ERROR"ов кидает.

~~~~~~~~~~~~~~~~~~~~~~~`
Зарание блогодарен .... ;)


 
Юрий Зотов ©   (2003-01-24 18:44) [1]

procedure MyButton.SetFFontCap(Value:TFont);
begin
FFontCap.Assign(Value);
end;

Иначе - глюки и утечка памяти.


 
Brain   (2003-01-27 11:10) [2]

То есть, я так понял, что не только в этом случае, а вообще, если возможно Assign, то лучше Assign.


 
Юрий Зотов ©   (2003-01-27 12:14) [3]

Нет, не так. У Вас FFontCap - это ссылка на ВНУТРЕННИЙ объект, который создается автоматически, в конструкторе. Если написать FFontCap := Value, то ссылка будет переписана и будет указывать уже на какой-то внешний объект, а Ваш внутренний повиснет в памяти (вот она, утечка). Если же теперь этот внешний объект по каким-то причинам окажется уничтоженным, то ссылка на него в FFontCap окажется недействительной и попытка обращения по ней даст ошибку (вот они, глюки).

А если написать FFontCap.Assign(Value), то копируется не ссылка на объект, а его "содержимое" - и все идет нормально. Так нужно поступать всегда, если Ваш объект - внутренний, создаваемый Вашим же кодом.

И наоборот, если Вы вводите именно ссылку на ВНЕШНИЙ объект, создаваемый не Вами, то Assign даст ошибку. В этих случаях нужно именно присвоение. И не помешает предусмотреть механизм автоматического обнуления этой ссылки при удалении объекта, на который она ссылается (у компонентов для этого используются методы Notification и FreeNotification).


 
Brain   (2003-01-28 11:07) [4]

Ок всё понял. Спасибо за объяснения.



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

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

Наверх




Память: 0.47 MB
Время: 0.02 c
3-15460
Kurt_
2003-01-17 18:51
2003.02.06
Люди! можно ли в гриде как то заголовки увеличивать по толщине?


1-15727
xyz
2003-01-20 19:32
2003.02.06
Морфологический анализ слов


1-15703
mgaikin
2003-01-27 14:45
2003.02.06
Вызов метода предка


1-15708
andrew_m
2003-01-24 18:30
2003.02.06
Как в TListBox выделить нужный Item?


3-15442
Stenkz
2003-01-20 09:45
2003.02.06
Перемещение по визуальным компонентам при нажатии клавиши