AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Showmessage löst Fehler in Event-Procedure aus

Showmessage löst Fehler in Event-Procedure aus

Ein Thema von AirSpider · begonnen am 17. Jun 2007 · letzter Beitrag vom 17. Jun 2007
Antwort Antwort
AirSpider

Registriert seit: 17. Jun 2007
2 Beiträge
 
Delphi 6 Personal
 
#1

Showmessage löst Fehler in Event-Procedure aus

  Alt 17. Jun 2007, 11:47
Hallo!

Ich schreibe gerade an einer Komponente, die die Kommunikation mit einem Mikrocontroller übernehmen soll.

In dieser Komponente erzeuge ich einen Thread, der mit WaitforSingleObject solange wartet bis etwas passiert. Dann möchte ich ein Event auslösen, sodass der Benutzer es wie jedes andere Event nutzen kann (Bsp. OnClick).

Momentan habe ich es so gelöst, dass ich in der Klasse meines Threads ein Event auslöse, dem ich eine Procedure der Hauptklasse meiner Unit zuordne, die dann wiederum dort das gewünschte Event auslöst. Diese Lösung finde ich persönlich nicht so schön, habe aber bisher keine andere Möglichkeit gefunden, denn ich kann bei einer Komponente ja nicht so einfach vom Thread aus auf z.b Form1.IrgendeineProcdure zugreifen.

Weiteres Problem besteht darin, dass eine Fehlermeldung kommt, wenn in der Procedure, die der Benutzer in dem Programm dem Event zuweist, showmessage verwendet. Es kommt dann die Fehlermeldung "Leinwand/Bild erlaubt kein Zeichnen".

Daher wollte ich fragen ob ich das Auslösen eines Events in einer Komponente einfacher bewerkstelligen kann bzw. woher der Fehler kommt, damit ich ihn vermeiden kann.

Grüße
AirSpider
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Showmessage löst Fehler in Event-Procedure aus

  Alt 17. Jun 2007, 11:50
du hast einfach das syncronisieren vergessen. Du darfst nicht einfach vom Thread aus auf visuelle Dinge zugreifen (ShowMessage etc.). Du musst den Thread zur Ausgabe mit dem Hauptthread (welcher die Fenster erzeugt hat) syncronisieren. Also TThread.Syncronize nutzen
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
AirSpider

Registriert seit: 17. Jun 2007
2 Beiträge
 
Delphi 6 Personal
 
#3

Re: Showmessage löst Fehler in Event-Procedure aus

  Alt 17. Jun 2007, 12:05
Hallo!

Danke für deine Antwort.

Ich habe die Komponente testweise mal auf eine Form gelegt und das Event getestet. Und hier habe ich die showmessage eingetragen. Das verändern eines Label.Caption geht problemlos.
[Edit] Habe das Event mit dem Hauptthread synchronisiert. Nun geht showmessage! Vielen Dank SirThornberry, habe übersehen, dass ich das Event ja gar nicht wie die anderen Funktionen synchronisiert habe! Bleib nun eigentlich nur die Frage ob ich das Event einfacher auslösen kann... [\Edit]

Wie kann ich von einem Thread auf eine Procedure bzw Variable in einer Komponente (Klasse) zugreifen? Also der Thread wird von der Komponente erzeugt, liegt aber in einer anderen Unit. Bei einer Anwendung kann ich ja Form1 benutzen, aber bei einer Komponente gibt es ja sowas nicht...

Grüße
AirSpider
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 21:51 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