AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Thread mit Rückgabewert

Offene Frage von "dk3wx"
Ein Thema von dk3wx · begonnen am 30. Jun 2006 · letzter Beitrag vom 30. Jun 2006
Antwort Antwort
dk3wx

Registriert seit: 3. Jan 2005
4 Beiträge
 
#1

Thread mit Rückgabewert

  Alt 30. Jun 2006, 11:14
Hallo,
komme einfach nicht mehr weiter.

Ich starte einen Thread und übergebe ein Bild (Diagrammfläche)

Im Hauptprogramm:
mthd:=Diagramm.Create(PaintBox1);
with mthd do mthd.OnTerminate := ThreadDone;

Im Thread
constructor Diagramm.Create(Box: TPaintBox);

Die Execute-Methode schreibt Messkurven in diese Zeichenfläche und malt diese auch auf den Bildschirm. Dazu benutze ich Synchronize.

Das Funktioniert recht gut.

Mein Problem:
Wenn ich den Thread beende, steht das Bild auch noch auf dem Bildschirm aber ich komme nicht mehr dran um es ggf. auszudrucken.
Was ich brauche ist eine Rückgabe des Bildes aus dem Thread in mein Hauptprogramm. Habe leider keine Idee mehr wie ich das hinbekomme

Tnx Bernd
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Thread mit Rückgabewert

  Alt 30. Jun 2006, 11:18
Lass den Thread in einen TBitmap-Instanz schreiben und dieses Bild kannst Du alle 1/2 Sekunden vom Programm zeichnen lassen (Für Fortschritt) und am Ende der Thread-Lebensdauer kopierst Du es halt ins Hauptprogramm.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
dk3wx

Registriert seit: 3. Jan 2005
4 Beiträge
 
#3

Re: Thread mit Rückgabewert

  Alt 30. Jun 2006, 11:35
Hallo Bernhard,
das habe ich mit

Form1.PaintBox1.Canvas := Diabox.Canvas;

vor dem Beenden versucht. Da meckert der Compiler das er nicht darf

[Fehler] Unit2.pas(163): E2129 Einer Nur-Lesen Eigenschaft kann kein Wert zugewiesen werden

Und wenn der Thread erst mal beendet ist, stehen wohl auch die Variablen nicht mehr zur Verfügung.
ich versuche mal eine Procedure aus dem Hauptprogramm, der ich das Bild übergebe

Bernd
  Mit Zitat antworten Zitat
dk3wx

Registriert seit: 3. Jan 2005
4 Beiträge
 
#4

Re: Thread mit Rückgabewert

  Alt 30. Jun 2006, 11:59
Hallo,
Problem erledigt.

Habe im Hauptprogramm eine

procedure TForm1.getDBmp(Bild : TPaintBox);
begin
PaintBox1:= Bild;
end;

geschaffen, die im Thread gerufen wird

procedure Diagramm.GiveDBmp();
begin
Form1.getDBmp(DiaBox);
end;

Es geht ggf. eleganter, aber nun habe ich eine Lösung.

Danke Bernd
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz