Текущий архив: 2005.07.11;
Скачать: CL | DM;
ВнизПроблема с TFont Найти похожие ветки
← →
Антон Г. (2005-06-21 12:59) [0]Здравствуйте. Воникла следующая проблема. Есть два 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 остается прежним. Буду рад любой помощи.
← →
Eraser © (2005-06-21 13:01) [1]Антон Г. (21.06.05 12:59)
TFont - это структура.
← →
TUser © (2005-06-21 13:03) [2]TFont - это класс, наследник TPersistent"а. Копировать свойства надо методом Assign.
← →
Антон Г. (2005-06-21 13:03) [3]Eraser
А можете подсказать как поменять его у двух TLabel"ов?
← →
Антон Г. (2005-06-21 13:04) [4]Поста [2] не было когда я спрашивал, так что извините. Сейчас попробую.
← →
Юрий Зотов © (2005-06-21 13:06) [5]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;
← →
Eraser © (2005-06-21 13:08) [6]TUser © (21.06.05 13:03) [2]
Мда... TFont действительно класс...я ошибался.
← →
Антон Г. (2005-06-21 13:22) [7]Спасибо всем за ответы. А почему мы здесь (выделенное) не используем 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;
Страницы: 1 вся ветка
Текущий архив: 2005.07.11;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.047 c