Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Leinwand/Bild erlaubt kein zeichnen (https://www.delphipraxis.net/14480-leinwand-bild-erlaubt-kein-zeichnen.html)

jonny 10. Jan 2004 03:34


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.

jonny 11. Jan 2004 15:41

Re: Leinwand/Bild erlaubt kein zeichnen
 
Hat denn niemand ne Antwort für mich?

Robert Marquardt 11. Jan 2004 16:47

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.

Meflin 11. Jan 2004 16:51

Re: Leinwand/Bild erlaubt kein zeichnen
 
versuchs mal mit
with form1 do begin

Robert Marquardt 11. Jan 2004 16:55

Re: Leinwand/Bild erlaubt kein zeichnen
 
Wie rufst du Create auf. TMyForm.Create oder MyForm.Create? Das zweite ist schlicht Unsinn.

jonny 11. Jan 2004 17:28

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:
Application.CreateForm('TfrmGetFile' TfGF);
auf
und schreibe da nachher so Sachen rein
Code:
TfGF.Name:='GF0';
TfGF.Caption:='Get File';
usw.

Aber warum funktioniert das nicht in der Execute Rutine????

moppelstroppel 13. Jun 2006 10:40

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.

Nisbo 3. Aug 2006 08:29

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:
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 ......
der debugger bleibt bei dieser zeile stehen:
if MessageDlg('Die Liste wurde bereits am '

nur warum ?

Bernhard Geyer 3. Aug 2006 08:51

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.

Nisbo 3. Aug 2006 08:57

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