![]() |
[ Eledigt ]Inkompatible Typen TformClass und Class reference
Ich habe nen Menü Programiert, entsprechend einer von hier heruntergeladenen Demo, das haut bei mir nur leider net ganz hin.
Delphi-Quellcode:
unit Unit_Main;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TFrm_Main = class(TForm) Panel_Menu: TPanel; Panel_Content: TPanel; Btn_Adress_Add: TButton; Btn_Adress_Edit: TButton; Btn_Close: TButton; Button4: TButton; Btn_Adress_Search: TButton; Btn_Adress_Delete: TButton; Btn_Adress_Clear: TButton; Button8: TButton; Button9: TButton; procedure FormCreate(Sender: TObject); private newForm: TForm; procedure ShowForm(aForm: TFormClass); { Private-Deklarationen } public { Public-Deklarationen } Start_first_time:integer; // Variable die den ersten Start des Programmes speichert. end; var Frm_Main: TFrm_Main; implementation uses Unit_Startseite; {$R *.dfm} procedure TFrm_Main.FormCreate(Sender: TObject); begin // Wurde die LadenSeite schon ausgeführt ? If Start_first_time = 1 then begin // Buttens Einblenden. Btn_Adress_Add.Visible:=true; Btn_Adress_Clear.Visible:=true; Btn_Adress_Edit.Visible:=true; Btn_Adress_Delete.Visible:=true; Btn_Adress_Search.Visible:=true; Btn_Close.Visible:=true; end else begin ShowForm(TFrm_Startseite); end; end; procedure TFrm_Main.ShowForm(aForm: TFormClass); var newFormClass: TFormClass; begin newFormClass := NIL; newFormClass := aForm; if Assigned(newFormClass) then begin newForm := newFormClass.Create(self); newForm.BorderStyle := bsNone; newForm.Parent := Panel_Content; // "In diesem Panel" werden die Forms angezeigt. newForm.Align := alClient; newForm.Show; end; end; end. Ich komme einfach net weiter. |
Re: Inkompatible Typen TformClass und Class reference
"newForm" ist vom Typ TForm und nicht "TFormClass". Du solltest also die Zeile 69 (newForm := newFormClass.Create(self);) nochmal überdenken. ;)
|
Re: Inkompatible Typen TformClass und Class reference
öhm wie ich schon sagte habe ich den Code einem Beispiel entnommen, welches auch funktionierte.
Aber jetzt stehe ich wirklich 100% aufem Schlauch. |
Re: Inkompatible Typen TformClass und Class reference
Srry aber ich kann den Fehler einfach nicht finden.
Kann jemand den Code mal bitte richtig posten ?? |
Re: Inkompatible Typen TformClass und Class reference
Soweit ist alles richtig. Mich würde vor allem mal die genaue Zeile interessieren die angemeckert wird.
@freak4fun: Mach dich mal kundig was TFormClass ist. Sein Code ist richtig. |
Re: Inkompatible Typen TformClass und Class reference
ich glaub dein Fehler liegt hier:
Delphi-Quellcode:
denn TFormClass.Create gibt dir ein TForm zurück und kein TFormClass. Dementsprechend kannst du den Rückgabewert von TFormClass.Create nur auf eine Variable vom Typ TForm zuweisen und nicht auf eine Variable vom Typ TFormClass.
procedure TFrm_Main.ShowForm(aForm: TFormClass);
var newFormClass: TFormClass; //<---- hier ist der Fehler begin [...] newForm := newFormClass.Create(self); |
Re: Inkompatible Typen TformClass und Class reference
Zitat:
|
Re: Inkompatible Typen TformClass und Class reference
das es nicht genau eine instanz von TForm ist war mir klar aber eben ein Nachfahre.
|
Re: Inkompatible Typen TformClass und Class reference
Ich habe mir mal die Form.pas angeschaut und entdeckt das TFormClass nicht class(TForm) sondern class of TForm ist.
Deswegen bekomme ich kein Create hin ohne diese Fehlermeldung inkompatible Typen. Was ist denn jetzt der Unterschied zwischen Class(TForm) und Class of TForm ? |
Re: Inkompatible Typen TformClass und Class reference
Hallo,
meine Vermutung ist, dass es sich bei TFrm_Startseite nicht um den Namen einer von TForm abgeleiteten Klasse handelt, sondern beispielsweise um einen TFrame-Nachfolger. In diesem Fall würde der Fehler in der Zeile mit dem Aufruf der Methode ShowForm auftreten. @busybyte Bei einer schnellen Suche habe ich nur ![]() Gruß Hawkeye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:45 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