![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с TFont [D7, WinXP]
Антон Г. © (2005-06-21 12:59:00)Здравствуйте. Воникла следующая проблема. Есть два TLabel, у каждого свое значение Font'a. Задача обменять у них эти значения. Пишу код
procedure TForm1.Button1Click(Sender: TObject);
var
F:Tfont;
begin
F:=TFont.Create;
F:=Label1.Font;
Label1.Font:=Label2.Font;
Label2.Font:=f;
f.free;
end;
Вылетает ошибка :Acsess Evolation (пишется вроде так)
Иду по шагам (F7) ошибка вылетает после end.
Если закомментировать строка f.free;, то ошибки нет, но Label1 имеет TFont как у Label2, но TFont у Label2 остается прежним. Буду рад любой помощи.
Антон Г. (2005-06-21 13:22:00) [1]Спасибо всем за ответы. А почему мы здесь (выделенное) не используем Assign?
procedure TForm1.Button1Click(Sender: TObject);» Юрий Зотов: » Потому что F - это переменная, а Label1.Font - это СВОЙСТВО. При назначении СВОЙСТВА Assign вызывается автоматически (см. SetFont в VCL), а при назначении ПЕРЕМЕННОЙ это надо делать самому.
var
F: TFont;
begin
F := TFont.Create;
try
F.Assign(Label1.Font);
Label1.Font := Label2.Font;
Label2.Font := F
finally
F.free
end
end;
Eraser (2005-06-21 13:08:00) [2]TUser © (21.06.05 13:03) [2]
Мда... TFont действительно класс...я ошибался.
Юрий Зотов (2005-06-21 13:06:00) [3]procedure TForm1.Button1Click(Sender: TObject);
var
F: TFont;
begin
F := TFont.Create;
try
F.Assign(Label1.Font);
Label1.Font := Label2.Font;
Label2.Font := F
finally
F.free
end
end;
Антон Г. (2005-06-21 13:04:00) [4]Поста [2] не было когда я спрашивал, так что извините. Сейчас попробую.
TUser (2005-06-21 13:03:00) [5]TFont - это класс, наследник TPersistent'а. Копировать свойства надо методом Assign.
Антон Г. (2005-06-21 13:03:00) [6]Eraser
А можете подсказать как поменять его у двух TLabel'ов?
Eraser (2005-06-21 13:01:00) [7]Антон Г. (21.06.05 12:59)
TFont - это структура.