AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi [ Eledigt ]Inkompatible Typen TformClass und Class reference

[ Eledigt ]Inkompatible Typen TformClass und Class reference

Ein Thema von Newbi · begonnen am 3. Apr 2008 · letzter Beitrag vom 4. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2   
Newbi

Registriert seit: 2. Apr 2008
15 Beiträge
 
#1

[ Eledigt ]Inkompatible Typen TformClass und Class reference

  Alt 3. Apr 2008, 10:54
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.
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Inkompatible Typen TformClass und Class reference

  Alt 3. Apr 2008, 11:00
"newForm" ist vom Typ TForm und nicht "TFormClass". Du solltest also die Zeile 69 (newForm := newFormClass.Create(self) nochmal überdenken.
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Newbi

Registriert seit: 2. Apr 2008
15 Beiträge
 
#3

Re: Inkompatible Typen TformClass und Class reference

  Alt 3. Apr 2008, 11:22
öhm wie ich schon sagte habe ich den Code einem Beispiel entnommen, welches auch funktionierte.

Aber jetzt stehe ich wirklich 100% aufem Schlauch.
  Mit Zitat antworten Zitat
Newbi

Registriert seit: 2. Apr 2008
15 Beiträge
 
#4

Re: Inkompatible Typen TformClass und Class reference

  Alt 3. Apr 2008, 16:52
Srry aber ich kann den Fehler einfach nicht finden.


Kann jemand den Code mal bitte richtig posten ??
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: Inkompatible Typen TformClass und Class reference

  Alt 3. Apr 2008, 17:23
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.
  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: Inkompatible Typen TformClass und Class reference

  Alt 3. Apr 2008, 18:05
ich glaub dein Fehler liegt hier:
Delphi-Quellcode:
procedure TFrm_Main.ShowForm(aForm: TFormClass);
var
  newFormClass: TFormClass; //<---- hier ist der Fehler
begin
[...]
newForm := newFormClass.Create(self);
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: Inkompatible Typen TformClass und Class reference

  Alt 3. Apr 2008, 19:57
Zitat von SirThornberry:
ich glaub dein Fehler liegt hier:
Delphi-Quellcode:
procedure TFrm_Main.ShowForm(aForm: TFormClass);
var
  newFormClass: TFormClass; //<---- hier ist der Fehler
begin
[...]
newForm := newFormClass.Create(self);
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.
Alles richtig, bis auf den Punkt, dass newForm vom Typ TForm ist. Es ist ein Member und newFormClass != newForm...
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Inkompatible Typen TformClass und Class reference

  Alt 3. Apr 2008, 20:19
das es nicht genau eine instanz von TForm ist war mir klar aber eben ein Nachfahre.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
busybyte

Registriert seit: 15. Sep 2006
165 Beiträge
 
#9

Re: Inkompatible Typen TformClass und Class reference

  Alt 3. Apr 2008, 20:58
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 ?
I love DiscCat
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Inkompatible Typen TformClass und Class reference

  Alt 3. Apr 2008, 22:15
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 diese Seite gefunden. Im Abschnitt "Metaklassen" wird an einem Beispiel der Unterschied zwischen Klassen und Klassenreferenzen erklärt.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:24 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