![]() |
Leinwand/Bild erlaubt kein zeichnen
Hallo ich bins schon wieder hab mal wieder ein Problem und zwar wenn ich dynamisch ein Formular aufrufe Create bekomme ich die Meldung "Leinwand/Bild erlaubt kein zeichnen" was kann das bedeuten wie kann ich das ändern die Meldung kommt direkt beim Createn des Formulars. In der OnCreate Routine steht nix also kann das nicht der Grund sein aber was ist es dann.
|
Re: Leinwand/Bild erlaubt kein zeichnen
Hat denn niemand ne Antwort für mich?
|
Re: Leinwand/Bild erlaubt kein zeichnen
Irgendwer will noch innerhalb des Create des Formulars schon malen bevor alles initialisiert ist.
Also entweder eine schlecht programmierte Komponente oder du machst doch etwas unerlaubtes im Create. Zeig mal ein bischen Code. |
Re: Leinwand/Bild erlaubt kein zeichnen
versuchs mal mit
with form1 do begin |
Re: Leinwand/Bild erlaubt kein zeichnen
Wie rufst du Create auf. TMyForm.Create oder MyForm.Create? Das zweite ist schlicht Unsinn.
|
Re: Leinwand/Bild erlaubt kein zeichnen
Das Passiert habe ich gerade festgestellt wenn ich die Form in der IndyTCPServer.Execute Rutine aufrufe ansonsten funktioniert das mit dem Gleichen Code.
Ich rufe die Fom mit
Code:
auf
Application.CreateForm('TfrmGetFile' TfGF);
und schreibe da nachher so Sachen rein
Code:
usw.
TfGF.Name:='GF0';
TfGF.Caption:='Get File'; Aber warum funktioniert das nicht in der Execute Rutine???? |
Re: Leinwand/Bild erlaubt kein zeichnen
Also ich habe das gleiche Problem im C++Builder und ich vermute, dass es bei mir an den Komponenten liegt. Denn das Problem ist auf einmal aufgetreten. Kurz davor habe ich ein Update von Komponenten durchgeführt (DevExpress). Ich habe nun alle Komponentenhersteller angeschrieben bei denen letztens Änderungen waren und hoffe, dass einer seinen Finger hebt.
|
Re: Leinwand/Bild erlaubt kein zeichnen
Moin Moin,
bekomme genau die selbe Fehlermeldung, nur weiß ich nicht warum da ich nichts male usw das ganze läuft in einem thread
Delphi-Quellcode:
der debugger bleibt bei dieser zeile stehen:
type
Thread_Nr_01 = class(TThread) procedure Hauptprogramm; procedure Execute; override; end; procedure Thread_Nr_01.Execute; begin while not Terminated do begin Hauptprogramm end; end; procedure Thread_Nr_01.Hauptprogramm; var data : TIdMultiPartFormDataStream; dieurl, line : string; neueinlesen, iRow : Integer; dateistream : TFilestream; begin neueinlesen := 1; // checken ob schon mal runtergeladen wurde if FileExists('artikel_shop_' + Form1.StringGrid1.Cells[2,Form1.stringgrid1.row] + '.txt') then begin if MessageDlg('Die Liste wurde bereits am ' + DateToStr(FileDateToDateTime(FileAge('artikel_shop_' + Form1.StringGrid1.Cells[2,Form1.stringgrid1.row] + '.txt'))) + ' um ' + TimeToStr(FileDateToDateTime(FileAge('artikel_shop_' + Form1.StringGrid1.Cells[2,Form1.stringgrid1.row] + '.txt'))) + ' Uhr vom Server geladen. Möchten Sie die Liste vom Server neu einlesen ?', mtConfirmation, [mbYes,mbNo],0) = IDNo then begin neueinlesen := 0; end; end; ........ code geht noch weiter ...... if MessageDlg('Die Liste wurde bereits am ' nur warum ? |
Re: Leinwand/Bild erlaubt kein zeichnen
Neue Frage -> Neuer Thread :warn:
Und hast Du nicht die Warnhinweise gelesen die bei verwendung des "Wizards" in Delphi in deiner Thread-Unit erzeugt wurden? Die VCL-GUI-Controls dürfen nur im Hauptthread der Anwendung verwendet werden (Thread-Sicherheit usw.). Und da die MessageDlg-Funktion mittels VCL-Hausmitteln den Dialog erstellt bekommst du damit im Thread Probleme. |
Re: Leinwand/Bild erlaubt kein zeichnen
Naja die Frage ist ja genau die selbe Fehlermeldung oder nicht ? Und eine richtige Lösung wurde ja noch nicht gefunden. Aber wenn das hier halt immer so gewünscht wird auch wenn nur ein kleiner Teil anders ist dann kann ich das in Zukunft gerne machen ;)
Wizard ? Habe keine Wizard benutzt aber habe nal mit MessageBox probiert, da gibt es keine Probleme mit diesem Fehler, nur kann ich da dann solange auf OK klicken und das Programm hängt in ner schleife fest, werde diese abfrage wohl nach außerhalb des threads verlagern EDIT: Ich held, ich hatte das terminate vergessen :D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz