AGB  ·  Datenschutz  ·  Impressum  







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

Label Text ändern aus einem Thread heraus

Ein Thema von CreativeMD · begonnen am 25. Sep 2014 · letzter Beitrag vom 27. Sep 2014
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von CreativeMD
CreativeMD

Registriert seit: 11. Okt 2011
127 Beiträge
 
Delphi XE2 Architect
 
#11

AW: Label Text ändern aus einem Thread heraus

  Alt 26. Sep 2014, 19:35
Ob mit der Form was nicht stimmt, kannst Du ja testen, indem Du ohne Thread mal einfach in einem ButtonClick oder so die Beschriftung änderst.
Guter Tipp

OnClick:
Delphi-Quellcode:
procedure TOverviewF.btn1Click(Sender: TObject);
begin
  lblTaskBackground.Caption := '';
  editLabel;
end;
Die editLabel funktion befindet sich in einer anderen Unit:
Delphi-Quellcode:
procedure editLabel;
begin
  OverviewF.lblTaskBackground.Caption := 'Test';
end;
Das Label zeigt keinen Text an, obwohl Test dort stehen müsste, es liegt also nicht am Thread sondern irgendetwas wird da blockiert

EDIT
hier mal mein Sourcecode, die Dateien heißen Overview.pas und Task.pas

Geändert von CreativeMD (26. Sep 2014 um 19:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.617 Beiträge
 
Delphi 12 Athens
 
#12

AW: Label Text ändern aus einem Thread heraus

  Alt 26. Sep 2014, 20:01
Das kann ich zwar in meinem Delphi nicht öffnen, aber setz doch mal einen Haltepunkt ins ButtonClick und steppe durch, ob editLabel auch tatsächlich dorthin springt, wo Du glaubst.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von CreativeMD
CreativeMD

Registriert seit: 11. Okt 2011
127 Beiträge
 
Delphi XE2 Architect
 
#13

AW: Label Text ändern aus einem Thread heraus

  Alt 26. Sep 2014, 20:04
Das kann ich zwar in meinem Delphi nicht öffnen, aber setz doch mal einen Haltepunkt ins ButtonClick und steppe durch, ob editLabel auch tatsächlich dorthin springt, wo Du glaubst.
Jaja tut es, auch der Wert wird geändert und bleibt auch so (alles schon überprüft), aber die Anzeige ändert sich nicht .
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.617 Beiträge
 
Delphi 12 Athens
 
#14

AW: Label Text ändern aus einem Thread heraus

  Alt 26. Sep 2014, 20:20
Dann gehen mir auch die Ideen aus
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.016 Beiträge
 
Delphi 12 Athens
 
#15

AW: Label Text ändern aus einem Thread heraus

  Alt 26. Sep 2014, 20:27
Ein gutes Beispiel für böse globale Variablen.

An deiner Stelle würde ich mal in die Projektoptionen > Formulare schauen (oder in die DPR).
Ich wette fast da versteckt sich der "doppelte" Fehler.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#16

AW: Label Text ändern aus einem Thread heraus

  Alt 26. Sep 2014, 20:31
Die Hautfrage ist hier, wird auch das Label von der Form geändert, die gerade betrachtet wird?

Ich vermute mal eben nicht.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.016 Beiträge
 
Delphi 12 Athens
 
#17

AW: Label Text ändern aus einem Thread heraus

  Alt 26. Sep 2014, 20:57
Oder greift er überhaupt auf die richtige Form zu?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von CreativeMD
CreativeMD

Registriert seit: 11. Okt 2011
127 Beiträge
 
Delphi XE2 Architect
 
#18

AW: Label Text ändern aus einem Thread heraus

  Alt 26. Sep 2014, 22:59
Oder greift er überhaupt auf die richtige Form zu?
Ja das tue ich , ach man mir sind schon alle Ideen ausgegangen
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.685 Beiträge
 
Delphi 2007 Enterprise
 
#19

AW: Label Text ändern aus einem Thread heraus

  Alt 27. Sep 2014, 04:16
Was passiert, wenn du in deinem Test editLabel so änderst?
Delphi-Quellcode:
procedure editLabel;
begin
  if GetForegroundWindow() = OverviewF.Handle then
    ShowMessage('Ja, wirklich das richtige Formular.');
end;
Wenn die MessageBox nicht kommt, dann steht in deiner globalen Variablen "OverviewF" nicht das Fenster mit dem Label.

Wenn doch, dann mal Neuzeichnen erzwingen:
Delphi-Quellcode:
procedure TOverviewF.btn1Click(Sender: TObject);
begin
   lblTaskBackground.Caption := '';
   editLabel;
   Invalidate;
end;
Mit deiner originalen editLabel Prozedur.

Wenn alles nichts bringt, mache den Test bitte mal mit einem frischen, leeren Projekt. Wenn es dort geht, dann ist in deinem eigentlichen definitiv ein Fehler.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von CreativeMD
CreativeMD

Registriert seit: 11. Okt 2011
127 Beiträge
 
Delphi XE2 Architect
 
#20

AW: Label Text ändern aus einem Thread heraus

  Alt 27. Sep 2014, 10:46
Hm, das ist verwirrend,
also es ist die gleiche Form, aber eine andere Instanz (nach meiner Vermutung),
aber ich greife auf die richtige Variable zu:
Delphi-Quellcode:
const
  WM_AFTER_SHOW = WM_USER + 300;
type
  ThreadClass = class of TThread;
  TOverviewF = class(TForm)
    lvInstances: TListView;
    mmMenu: TMainMenu;
    Settings1: TMenuItem;
    Logger1: TMenuItem;
    BugReport1: TMenuItem;
    MinecraftAccounts1: TMenuItem;
    Changelog1: TMenuItem;
    lblVersion: TLabel;
    N1: TMenuItem;
    CheckForUpdates1: TMenuItem;
    SendanEMail1: TMenuItem;
    lblInformation: TLabel;
    lblRetry: TLinkLabel;
    cmdProgressBackground: TCMDProgressBar;
    lblTaskBackground: TLabel;
    btn1: TButton;
    procedure Logger1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure WmAfterShow(var Msg: TMessage); message WM_AFTER_SHOW;
    procedure lblRetryClick(Sender: TObject);
    function createThread(thread : ThreadClass) : TThread;
    procedure setEnabled(Enabled : Boolean);
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  OverviewF: TOverviewF;
  BackgroundThread : TBackgroundThread;
Auf OverviewF, da bin ich mir sicher. Aber wo ist dann der Fehler :O


EDIT

In den Einstellungen (wo man das Hauptformular bestimmen kann) gibt es zwei Forms mit dem Namen OverviewF :O.

Das Problem ist gelöst nach ein paar mal hin und her klicken funktioniert es nun endlich , die eine Form ist dann irgendwann verschwunden. Vielen Dank für eure Hilfe

Geändert von CreativeMD (27. Sep 2014 um 10:55 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      

 

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 00:37 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