Co jakiś czas, gdy poprawiam moje klasy TFrame (dodając właściwości, metody itp.), IDE będzie zdezorientowany i zachowa się tak, jakby sądził, że ramka jest formą, wraz z nagłówkiem/podpisem, ramkami itp. Jednak, wyraźnie, klasa jest deklarowana jako potomek TFrame. Wszelkie pomysły na przyczyny tego, jak zapobiegać i jak je naprawić?Delphi IDE traktuje TFrame tak, jakby był Formą
Używam Delphi 2007 Pro. Zauważ również (jeśli ma to znaczenie), potomkowie TFrame są zazwyczaj rejestrowani za pomocą IDE (tj. Na palecie) za pośrednictwem pakietu czasu projektowania.
Później: Dodatkowe „specyfika”: Rama że mam ten problem z co chwila jest wizualnie, bardzo prosty TFrame (zmienić tylko z nowym TFrame jest rozmiar i kolor tła).
Oto jej deklaracja klasy:
TBasePanel = class(TFrame)
private
FPanelManager: TPanelManager;
procedure SetPanelManager(const Value: TPanelManager);
protected
procedure Connect; virtual; abstract;
procedure Disconnect; virtual; abstract;
procedure Refresh; virtual;
procedure Requery; virtual; abstract;
published
property PanelManager: TPanelManager read FPanelManager write
SetPanelManager;
Rama ta służy jako klasa bazowa dla wielu innych. Zwykle edytuję go bezpośrednio z projektu BPL, do którego należy (ponieważ wszystkie te ramki są instalowane na palecie), a nie jako część projektu EXE, z pokrewnymi formularzami otwartymi itp.
"Embedded designer" jest zaznaczone w Narzędzia -> Opcje.
Zapisuję wszystkie pliki DFM jako tekst, a nie jako plik binarny (jeśli to ma znaczenie).
Po prostu aktualizacja: odpowiedź wydaje się być kombinacją odpowiedzi brzuszka poniżej PLUS tworząc "klasę ramki bazowej", która nie ma ŻADNYCH zmian w stosunku do normalnej ramki TFRAME, a THENTA dziedziczy po niej przed dodaniem jakichkolwiek właściwości, metod itp. Wydaje się, że w jakiś sposób ustabilizowałeś dziedziczenie. – Jamo