AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Leinwand / Bild erlaubt kein Zeichnen
Thema durchsuchen
Ansicht
Themen-Optionen

Leinwand / Bild erlaubt kein Zeichnen

Offene Frage von "maanton"
Ein Thema von maanton · begonnen am 10. Sep 2007 · letzter Beitrag vom 10. Sep 2007
Antwort Antwort
maanton

Registriert seit: 10. Sep 2007
16 Beiträge
 
#1

Leinwand / Bild erlaubt kein Zeichnen

  Alt 10. Sep 2007, 19:00
Hallo !

Da haben wir mal was neues !

Fehlermeldung im Debugger : Leinwand / Bild erlaubt kein Zeichnen ...

Und das Ganze bei einer vorgefertigten MessageDlg

Source :
Delphi-Quellcode:
...
Result := not (MessageDlg('...',mtError,[mbretry],0) = idRetry);
...
Anzumerken wäre vielleicht noch, daß das "aufrufende" Fenster per self.enabled := false; disabled wurde (enable := true bringt aber auch nix)....

Was könnte das sein ?

Gruss
maanton
  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: Leinwand / Bild erlaubt kein Zeichnen

  Alt 10. Sep 2007, 19:19
arbeitest du in deinem Programm irgendwo mit Threads?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
maanton

Registriert seit: 10. Sep 2007
16 Beiträge
 
#3

Re: Leinwand / Bild erlaubt kein Zeichnen

  Alt 10. Sep 2007, 21:40
ja, nahezu die komplette Datenbearbeitung der eingegebenen Daten erfolgt innerhalb eines Threads. Nach Abschluss der
Bearbeitung (deshalb das Fenster vor Eintritt in Thread per self.enabled := false) soll das Fenster wieder durch den User manipulierbar sein.
Im Fehlerfalle soll dem User eine Meldung angezeigt werden - hier haben wir den messagedlg.
Ich habe in einem anderen thread des Forums (da gings um showmessage) etwas von TThread.synchronize gelesen. Da ging es aber darum, dass das Mutterfenster des Threads mit canvas bearbeitet wird.
Hier haben wir aber ein eigenes Fenster -eben den messagedlg?
deshalb versteh ich das nicht ganz...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Leinwand / Bild erlaubt kein Zeichnen

  Alt 10. Sep 2007, 21:50
MessageDlg ist intern auch nur ein TForm. Generell sollte vom Thread aus nichts visuelles geschehen. Das höchste der Gefühle sind Apifunktionen wie MessageBox welche visuelle Ausgaben machen.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#5

Re: Leinwand / Bild erlaubt kein Zeichnen

  Alt 10. Sep 2007, 21:52
Zitat:
Ich habe in einem anderen thread des Forums (da gings um showmessage) etwas von TThread.synchronize gelesen. Da ging es aber darum, dass das Mutterfenster des Threads mit canvas bearbeitet wird.
Hier haben wir aber ein eigenes Fenster -eben den messagedlg?
deshalb versteh ich das nicht ganz...
Das ist aber egal, du musst es trotzdem synchronisieren. Rufe einfach mit Thread.synchronize eine neue Prozedur auf, aus welcher du den MessageDlg aufrufst.

Die Fehlermeldung ist sehr verwirrend und kommt auch, wenn du im Grunde nichts mit einer Leinwand/Canvas machen willst. Intern muss er wohl auch bei einer MessageBox was zeichnen, oder?

Grüße
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Leinwand / Bild erlaubt kein Zeichnen

  Alt 10. Sep 2007, 21:54
oder eben die MessageBox verwenden. Die sollte nicht viel anders aussiehen als der MessageDlg ist aber ThreadSafe.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
maanton

Registriert seit: 10. Sep 2007
16 Beiträge
 
#7

Re: Leinwand / Bild erlaubt kein Zeichnen

  Alt 10. Sep 2007, 23:10
Hey !

Erinnert mich an meine alten Windows 3.0 Programmierzeiten. Dachte, das gibts gar nicht mehr

MessageBox(HWND,...)

und funktioniert auch !

Vielen Dank für die schnelle und präzise Hilfe ...
  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 02:31 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