Вниз
Скачать: CL | DM;

TFont и Exception   Найти похожие ветки 

← →
eLVik ©   (2002-10-07 18:58) [0]

Добрый вечер, МАСТЕРА!!!
Помогите разобраться с проблемой!
Есть такой код (Сразу оговорюсь - Syntax Check не жалуется):

interface
...
var
MyFont: TFont;

implementation
...
procedure TForm1.FormCreate(Sender: TObject);
begin
MyFont := TFont.Create;
...//далее считываю параметры фонта из ini-файла (Color, Size etc.)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if FontDialog1.Execute then MyFont := FontDialog1.Font;
// здесь задаю новые параметры через диалог (!) ERROR
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
MyFont.Free; // Если убрать эту строку, ошибки НЕТ,но память то не освобждается 8(
...
end;


Теперь собственно зачем я пришёл...
1.Параметры фонта при загрузке формы считываются из ini нормально.
2.Если закрыть форму, не нажимая Button1, тоже всё OK.
3.Но, если нажать кнопку Button1, задать новые параметры, то при закрытии формы вылетает EExternalExeption (код ошибки непредопределён). Вопрос - ПОЧЕМУ!!!

Я выкрутился, объявив

var
MyFont: TFontDialog;

и внеся соответствующие изменения в конструктор Create и прочее. Затем использовал MyFont.Font, но всё-таки мне нужен "чистый" TFont.

ВСЕ, КТО СТАЛКИВАЛСЯ С ПОДОБНОЙ ПРОБЛЕМОЙ, ПОМОГИТЕ ПОЖАЙЛУЙСТА.
СПАСИБО ЗА ВНИМАНИЕ.


← →
Best Before 2024   (2002-10-07 19:00) [1]

procedure TForm1.Button1Click(Sender: TObject);
begin
if FontDialog1.Execute then MyFont.Assign(FontDialog1.Font);end;



← →
Юрий Зотов ©   (2002-10-08 01:17) [2]

> Вопрос - ПОЧЕМУ!!!

Потому что в Button1Click Вы переопределяете ссылку, причем неверно. В итоге и память теряется, и MyFont ссылается в никуда - а отсюда и ошибка в FormDestroy. Используйте Assign, как уже было сказано Best Before 2024.


← →
eLVik ©   (2002-10-08 17:09) [3]

ВСЁ ПОНЯЛ!!!
СПАСИБО



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.011 c
1-56082
yaJohn
2002-10-08 16:10
2002.10.17
Проверить доступность МИДАС - сервера.


1-56115
Павел Хабаров
2002-10-09 10:38
2002.10.17
Как избавиться от ошибки при инсталляции?


14-56343
Alx2
2002-09-20 12:24
2002.10.17
Если бы люди водили автомобили также, как они работают на


3-55963
cypher
2002-09-11 22:07
2002.10.17
ODBC & BDE


3-55950
Daniil
2002-09-22 09:30
2002.10.17
Простой механизм доступа к БД




   Наверх