Ana formun üstünde bir buton var. Basılınca 2. form açılıyor. 2. formun üzerinde bir button var. Basılınca thread çalışıyor ve Label1.Caption'a saati yazıyor.
Eğer 2. form AutoCreated olarak bırakılırsa sistem çalışıyor. Fakat dinamik olarak yaratılırsa (Ana formdaki buttona her basışta), 2. formdaki Label güncellenmiyor.
Aşağıda kodu aktarıyorum.
Kod: Tümünü seç
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Unit2;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
//var Form2:TForm2;
begin
//Form2:=TForm2.Create(nil);
Form2.Show;
end;
end.
Kod: Tümünü seç
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
Label1: TLabel;
Button1: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
Txxx = class(TThread)
private
{ Private declarations }
public
procedure Execute; override;
procedure yaz;
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TForm2.Button1Click(Sender: TObject);
var xxx : Txxx;
begin
xxx:= Txxx.Create(False);
end;
procedure Txxx.Execute;
var i:integer;
begin
for i := 1 to 10 do begin
Synchronize(yaz);
sleep(500);
end;
end;
procedure Txxx.yaz;
begin
Form2.Label1.Caption:=DateTimeToStr(now);
end;
end.