Probleme mit Frames: Error Reading Frame->OldCreateOrder
-
Ich habe ein Projekt, das Frames verwendet (BCB 6.0, SP4).
Neuerdings kommt aber in der IDE beim Öffnen des Frames (zum weiter Designen) eine Fehlermeldung:Error reading Frame1->OldCreateOrder: Property OldCreateOrder does not exist. Ignore the error and continue?...
Wenn man dann ignoriert, ist alles i.o.
Kompilieren geht auch einwandfrei; allerdings kommt beim ausführen dann eine exception: EReadError, die genau dasselbe aussagt. Das Programm läuft also nicht mehr; nach dem dieses Exception geworfen wurde, beendet das Programm.
Manchmal kommt ganau dieselbe Meldung aber für die Eigenschaft "TabOrder".
Ich habe bereits die .dfm Datei untersucht. Dort sind beide Properties sauber drinn. Ich habe sie auch herausgelöscht, dann wurden sie wieder erstellt aber die Meldung kam auch...Das ganze nur bei Frames. Hat da jemand eine Ahnung? Muss fast nen Bock sein im BCB. Habe mal gegooglet und gesehen, dass Delphi das auch hat. Gibts de gute Lösung für BCB zur Behebung?
- Adrian
-
Hallo Adrian,
ich hatte so ein Problem auch schonmal in Zusammenhang mit
nicht direkt von TFrame abgeleiteten Frames.
D.h. ich hatte eine KetteTFrame -> TMyFrame -> TMySpecFrame1, TMySpecFrame2 etc.
Für die Klassen TMySpecFrameX tauchten genau die von dir beschriebenen
Probleme auf und ich habe sie leider nur dadurch lösen können, daß ich
die Zwischenklasse weggelassen habe. Danach funktionierte es.Vermutlich liegt das Problem in der Frage:
Wie leitet man TMySpecFrame korrekt von TMyFrame ab? Bei Forms und Frames
scheint es da irgendwelche Spezifika zu geben, die man für andere Klassen
so nicht kennt.Weiß da jemand genaueres?
Viele Grüße
SomeOne
-
Hallo SomeOne
Es ist genau so, wie Du sagst. Ich habe das Frame, das Probleme macht, von einer eigenen Basisklasse abgeleitet. Allerdings mache ich das bei Formularen auch immer; dort hat es noch nie Probleme gegeben.
Jetzt habe ich auch die Lösung gefunden: Man darf nicht einfach "manuell" eine Basisklasse erstellen, sondern einfach File -> New -> Frame. Dieses Frame dann so anpassen wie man als Basisklasse will. Dann nicht einfach davon "manuell" Frames ableiten, sondern via File -> New -> Other, dann im Register des Projekts das Basisframe auswählen. Dann wird auf Basis dieses Frames ein neues, abgeleitetes Frame erstellt. Dort treten keine solchen Probleme auf.
Das ist eindeutig ein Bug von BCB rsp. VCL. Denn Ableiten geht immer gleich; da darf und kann es gar nicht sein, dass man einfach genau bei TFrame anders vorgehen sollte. Schliesslich handelt es sich ja um C++. Bei Formularen geht es ja eben auch...
Aber gut hat man wenigstens einen Workaround. Hoffenltich ist es in BCB 2006 gefixt.
Danke für Deinen Hinweis.
- Adrian