CODE 1400 - Ungültiges Fensterhandle
-
class Picture{ public: TForm *Window; TImage *Image; //-------------------------------------------->>>>>> Picture(AnsiString dir){ Window = new TForm(this); Image = new TImage(Window); Image->Picture->LoadFromFile(dir); Image->AutoSize=true; Image->Width=Image->Picture->Width; Image->Height=Image->Picture->Height; Image->Align=alClient; Window->Position=poScreenCenter; Window->Caption=ExtractFileName(dir); Window->BorderStyle=bsToolWindow; Window->Width = Image->Picture->Width; Window->Height = Image->Picture->Height; Window->Show(); } //-------------------------------------------->>>>>> ~Picture(){ delete Window; delete Image; } };Der FEhler beim Ausführen:
Ungültiges Fensterhandle
Bei der Stelle
Window->Show();Wieos das ?
StimmtWindow = new TForm(this);Etwa nicht ?
-
Du mußt dort den Eigentümer des Formulars angeben (im Sinne der VCL). Deine Klasse "Picture" erscheint mir dafür nicht gedacht.
Nimm am besten einfach Application oder 0.Window = new TForm(Application); // oder 0Ähnliches gilt für "Image(this)": du brauchst (und solltest) dann nicht mehr das Image von Hand "delete"n, da das dann der Eigentümer (Owner) selber macht.
P.S: Es fehlt bei dir noch ein "Image->Parent = Window;"...
Schau dir mal in der Hilfe den Unterschied dzwischen "Parent" und "Owner" an!