Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

Como não parar uma aplicação Delphi durante um processo longo?

Como não parar a aplicação Delphi durante um processo longo?


> Como não parar a aplicação durante um processo longo?



{
Muitas vezes durante um processo longo nossa aplicação fica paralisada, aguardando o termino de um loop e isso pode causar alguns inconvenientes, como permitir que se tenha acesso a outras partes do programa, bem como, até o término do próprio loop.

Então, o que fazer se o usuário deseja cancelar a execução do loop?

Apenas crie uma thread e faça com que o termino do loop dependa do valor de uma variável (Fcanceled nesta dica), a qual pode ser modificada pelo usuário (com o Button2 nesta dica).

Quando o usuário clicar no Button2, fcanceled será False e a thread irá parar o loop.

Durante o loop, você pode clicar na barra de titulo para mostra o menu do sistema, você pode arrastar o form, etc.
}

unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TBitBtn;
Button2: TBitBtn;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
FCanceled: Boolean;
public
{ Public declarations }
end;

TThread1 = class(TThread)
protected
constructor Create;
procedure Execute; override;
procedure IncreaseNumber;
end;


var
Form1: TForm1;

implementation

{$R *.dfm}

constructor TThread1.Create;
begin
inherited Create(false);
end;

procedure TThread1.Execute;
var success: Boolean;
begin
Self.Priority := tpLowest;
with Form1 do
begin
while not FCanceled do
begin
// call Synchronize so that you can create more threads by clicking
// the Start button and all created threads can run synchronously :)
Synchronize(IncreaseNumber);
end;
end;
end;

procedure TThread1.IncreaseNumber;
begin
with Form1 do
Edit1.Text := IntToStr(Succ(StrToInt(Edit1.Text)));
end;



procedure TForm1.FormCreate(Sender: TObject);
begin
Self.Caption := ''Você pode cancelar o Loop'';
Edit1.Text := ''1'';
Edit1.ReadOnly := True;
Button1.Caption := ''Iniciar'';
Button2.Caption := ''Parar'';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
FCanceled := False; TThread1.Create;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
FCanceled := True;
end;

end
Fonte: http://www.guiadodelphi.com.br/ler.php?codigo=817




    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



[Este post ainda não foi associado a uma sequência]
Autor
Gladstone Matos Gomes

É diretor editorial DevMedia Group (gladstonematos@gmail.com)


Space do autor
Estatísticas #
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível somente para quem possui Créditos DevMedia. (Ele não está associado a nenhuma publicação DevMedia).


  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 0,00 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ -1,00 (assinante) ou R$ -1,00 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ -1,00
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03