Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите пожалуйста! Задача в Delphi, как решить ее?

86K
25 января 2013 года
M3thod
7 / / 25.01.2013
a.На форме имеется две конопки lbutton, а такжде объект tlable с именем lname
b.реализован потоковый тип с полем name, который в бесконечном цикле проставляет в lname значение своего поле name.
c.по нажатию первой кнопки создается экземпляр потокового типа (b пункт) c именем name="first". по нажатию второй кнопки создается экземпляр потокового типа (b пункт) c именем name="second"
8
25 января 2013 года
mfender
3.5K / / 15.06.2005
Цитата: ellor!
Сделать всё в точности, как написано в алгоритме.


В точности не получится, никому не известен TLable )))))


Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TLabelThread = class(TThread)
  private
    FName: string;
    FOutControl: TLabel;
    FOutText: string;
  protected
    procedure Execute; override;
    procedure UpdateLabel;
  public
    constructor Create(AName: string;
      var ALabel: TLabel; CreateSuspended: Boolean);
    property Name: string read FName;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    T1, T2: TLabelThread;
    procedure ThreadTerminate(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  if (T1 <> nil) and not T1.Terminated then
    T1.Terminate
  else
  begin
    T1 := TLabelThread.Create('first', Label1, True);
    T1.OnTerminate := ThreadTerminate;
    T1.FreeOnTerminate := True;
    T1.Resume;
    Button1.Caption := 'Begining';
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  if (T2 <> nil) and not T2.Terminated then
    T2.Terminate
  else
  begin
    T2 := TLabelThread.Create('second', Label1, True);
    T2.FreeOnTerminate := True;
    T2.OnTerminate := ThreadTerminate;
    T2.Resume;
    Button2.Caption := 'Begining';
  end;
end;

procedure TForm1.ThreadTerminate(Sender: TObject);
begin
  if TLabelThread(Sender).Name = 'first' then
    Button1.Caption := 'Stopped';
  if TLabelThread(Sender).Name = 'second' then
    Button2.Caption := 'Stopped';
end;

{ TLabelThread }

constructor TLabelThread.Create(AName: string; var ALabel: TLabel;
  CreateSuspended: Boolean);
begin
  inherited Create(CreateSuspended);
  FName := AName;
  FOutControl := ALabel;
  FOutText := FName;
end;

procedure TLabelThread.Execute;
begin
  while not Terminated do
  begin
    sleep(100);
    Synchronize(UpdateLabel);
  end;
end;

procedure TLabelThread.UpdateLabel;
begin
  FOutControl.Caption := FOutText;
end;

end.
20K
25 января 2013 года
ellor!
198 / / 24.05.2012
Сделать всё в точности, как написано в алгоритме.
465
25 января 2013 года
QWERYTY
595 / / 25.03.2012
В чём конкретно проблемы?
Пункт а ты надеюсь можеш выполнить?

По подробней опиши что там за тип и что он в цикле делает
86K
25 января 2013 года
M3thod
7 / / 25.01.2013
Хорошо, спасибо большое. Ну как задание звучит, так и написал
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог