Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#14

Re: Threads und Zugreifen auf Controls

  Alt 29. Dez 2005, 01:05
Probiere es mal so (Code funktioniert natürlich nicht 1:1, ein wenig überlegen gehört auch zum Programmieren):
Delphi-Quellcode:
type
  TMyThread = class(TThread)
  private
    FText: string;
  protected
    procedure Execute; override;
  public
    constructor Create(const AText: string);
  end;

{ TMyThread }
constructor TMyThread.Create(const AText: string);
begin
  FText := AText; // initialisieren
  inherited Create(False); // und starten
  FreeOnTerminate := True;
end;

procedure TMyThread.Execute;
begin
  // FText ist hier nun verfügbar

  CalculateQuickbarArray(FText); // FText statt myMemo.Text an ParseRegExpr() übergeben
  Synchronize(ParseQuickBar); // ParseQuickBar sollte nicht mehr viel machen!
end;

...

type
  TForm1 = class(TForm)
  ...
  private
    FMyThread: TMyThread;
    procedure MyThreadTerminated(Sender: TObject);
  end;

procedure TForm1.MyThreadTerminated(Sender: TObject);
begin
  FMyThread := nil; // neuen Thread in MyMomeKeyDown() erlauben
end;

procedure TForm1.MyMemoKeyDown(...)
begin
  if not Assigned(FMyThread) then // wenn im Moment kein anderer Thread läuft ...
  begin
    FMyThread := TMyThread.Create(myMemo.Text); // ... einen neuen Thread starten
    FMyThread.OnTerminate := MyThreadTerminate;
  end;
end;
  Mit Zitat antworten Zitat