![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Приветствую.
При частой смене содержимого заголовка FileNameLabel.Caption последний ведет себя, мягко говоря, странно, а именно меняет шрифт+размер шрифта. В прикрепленных скриншотах пояснено. Почему так происходит и как этого избежать?! |
|
#2
|
||||
|
||||
|
загрузка идет в отдельном потоке?
|
|
#3
|
||||
|
||||
|
А я бы код еще привел.
|
|
#4
|
|||
|
|||
|
Да, в отдельном потоке вызывается функция, которая в процессе своей реализации меняет содержимое заголовка. Шрифты сам не меняю
|
|
#5
|
||||
|
||||
|
Ну и сколько раз было сказано что нельзя из потоков обращаться с VCL компонентам... И все мимо ушей
![]() |
|
#6
|
||||
|
||||
|
нельзя с VCL компонентами "напрямую" работать из потока, только через Synchronize метод.
|
|
#7
|
|||
|
|||
|
Цитата:
Подскажите, пожалуйста, как это сделать? |
|
#8
|
||||
|
||||
|
Код:
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
StdCtrls;
type
TTumanThread = class(TThread)
private
procedure UpdateVCL;
protected
procedure Execute; override;
end;
TForm1 = class(TForm)
Label1: TLabel;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TTumanThread }
procedure TTumanThread.Execute;
begin
Synchronize(UpdateVCL);
end;
procedure TTumanThread.UpdateVCL;
begin
Form1.Label1.Caption:='TTumanThread';
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
TTumanThread.Create(False);
end;
end. |