Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Fehler: Vorfahre für Formular nicht gefunden (https://www.delphipraxis.net/114542-fehler-vorfahre-fuer-formular-nicht-gefunden.html)

oki 27. Mai 2008 06:55


Fehler: Vorfahre für Formular nicht gefunden
 
Moin,

folgendes Problem:

Ich habe ein Project für ein selbst erstelltes Package. Darin befinden sich mehrere Formulare, die als Einstellungsfenster für meine einzelnen Controls fungieren. Diese Fenster sind von in diesem Projekt erstellten Basisfenstern vererbt. Da ich mein Projekt aufgeräumt habe hatte ich alle Units aus dem Projekt entfernt und dann wieder hinzugefügt.
Seit dem ich das getan habe kommt immer die im Anhang befindliche Fehlermeldung. Öffne ich ein vererbtes Fenster, meldet die IDE immer, dass sie den Vorfahren für das aktuelle Fenster nicht finden kann. Die Unit des Vorfahren, deren *.dfm und deren *.dcu liegen im selben Verzeichnis. Die Unit des Vorfahren befindet sich im selben Project und ist in der uses Anweisung des zu öffnenden Fensters enthlten. Der Quellcode (pas) wird angezeigt, das Formular aber nicht. Erst wenn ich auch das Vorfahrenfenster in der IDE öffne kommt kein Fehler.

Was mach ich falsch?

gruß oki

Delphi 2007 Win32 alle Updates

taaktaak 27. Mai 2008 07:03

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Moin, Moin,
liegt es am manuellen Aufräumen"? Hast du mal in die *.dpr und *.dsk 'reingeschaut? Vielleicht sind dort jetzt nicht mehr gültige Pfade eingetragen, die alles durcheinanderbringen.

oki 27. Mai 2008 07:30

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Ich habe in die dpr reingeschaut. Da sind alle Formulare eingetragen. Außerdem liegen sie alle im gleichen Verzeichnis. Ich habe ein Verzeichnis Packages als Unterverzeichnis in meinem Gesamtproject. Da liegen alle Units/Formulare drin die ich in meinem Projekt halte.
Mir ist weiterhin aufgefallen, dass mir üblicherweise meine IDE innerhalb eines Projektes unter Datei/Neu/Weitere... den Objectgalerie öffnet. Da findet man den Ordner Delphi-Projekte/Vererbbare Elemente. In diesem liegen immer alle Formulare des Projektes. Der fehlt jetzt.
Offensichtlich hat Delphi die jetzt wieder hinzugefügten Formulare nicht als Vererbbare Elemente des Projektes erkannt ... oder so.

Gruß oki

oki 27. Mai 2008 07:32

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Hier noch mal meine Projektdatei:
Delphi-Quellcode:
package SeysolPackage;

{$R *.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DESCRIPTION 'Klassenbibliothek für Seysol-Conrol'}
{$IMPLICITBUILD ON}

requires
  rtl,
  vcl,
  vclx,
  dbrtl,
  VclSmp,
  Jcl,
  JvCoreD10R,
  JvStdCtrlsD10R,
  vcldb,
  vcljpg,
  JclVcl,
  JvSystemD10R,
  vclactnband,
  tee,
  JvRuntimeDesignD10R;

contains
  SeysolImage in 'SeysolImage.pas',
  Addi_DEFINE in 'Addi_DEFINE.pas',
  Addi_DIG_OUT in 'Addi_DIG_OUT.pas',
  Addi_INIT in 'Addi_INIT.pas',
  AdditionalSeysolControls in 'AdditionalSeysolControls.pas',
  BaseToolWindow in 'BaseToolWindow.pas',
  Dio_tc in 'Dio_tc.pas',
  GateToolWindow in 'GateToolWindow.pas',
  HW_Types in 'HW_Types.pas',
  KlibDrv in 'KlibDrv.pas',
  RTBaseToolWindow in 'RTBaseToolWindow.pas',
  RTConnectorToolWindow in 'RTConnectorToolWindow.pas',
  RTDiagrammToolWindow in 'RTDiagrammToolWindow.pas',
  RTDigiReglerToolWindow in 'RTDigiReglerToolWindow.pas',
  RTIOAnalogToolWindow in 'RTIOAnalogToolWindow.pas',
  RTIODriverToolWindow in 'RTIODriverToolWindow.pas',
  RTLabelToolWindow in 'RTLabelToolWindow.pas',
  RTMathToolWindow in 'RTMathToolWindow.pas',
  RTPanelToolWindow in 'RTPanelToolWindow.pas',
  RTPGliedToolWindow in 'RTPGliedToolWindow.pas',
  RTPTotGliedToolWindow in 'RTPTotGliedToolWindow.pas',
  RTSocketParamToolWindow in 'RTSocketParamToolWindow.pas',
  RTSocketToolWindow in 'RTSocketToolWindow.pas',
  RTTitelToolWindow in 'RTTitelToolWindow.pas',
  RTValueLabelToolWindow in 'RTValueLabelToolWindow.pas',
  SerializeObjectList in 'SerializeObjectList.pas',
  SeyControl_Lib in 'SeyControl_Lib.pas',
  SeyControlBase_Classes in 'SeyControlBase_Classes.pas',
  SeyControlDiagramm_Classes in 'SeyControlDiagramm_Classes.pas',
  SeyControlDriver_Classes in 'SeyControlDriver_Classes.pas',
  SeyControlEmbDiagramm_Classes in 'SeyControlEmbDiagramm_Classes.pas',
  SeyControlGroup_Classes in 'SeyControlGroup_Classes.pas',
  SeyControlIO_Classes in 'SeyControlIO_Classes.pas',
  SeyControlMath_Classes in 'SeyControlMath_Classes.pas',
  SeyControlParamReceiver_Classes in 'SeyControlParamReceiver_Classes.pas',
  SeyControlPT_Classes in 'SeyControlPT_Classes.pas',
  SeyControlRegler_Classes in 'SeyControlRegler_Classes.pas',
  SeyControlStatusBar_Classes in 'SeyControlStatusBar_Classes.pas';

end.
Da fehlt doch nichts? Meine Units sind alle drin.

taaktaak 27. Mai 2008 08:01

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Hmm, hab' mir mal eine meiner *.dpk angeschaut, dort sind relative Pfadangaben gespeichert! Bei dir sehe ich nur die Dateinamen. Da die Dateien aber im Unterverzeichnis liegen, werden sie vermutlich daher nicht gefunden.

oki 27. Mai 2008 08:04

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Die Dateien liegen nicht in einem Unterverzeichnis. Projektdatei und Units alle im selben Vrzeichnis!
Meine Projektgruppe ist ein Verzeichnis höher angelegt.

Gruß oki

taaktaak 27. Mai 2008 08:07

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Sorry, da habe ich was falsch verstanden. Aber damit bin ich leider auch erst einmal ratlos :(

oki 27. Mai 2008 08:11

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Jo, blöde Nummer. Aber dank erst mal für deine Hilfe. Vieleicht findet sich ja noch ein anderer Leid geplagter.

Gruß oki

angos 27. Mai 2008 08:40

Re: Fehler: Vorfahre für Formular nicht gefunden
 
hi,

hatte so ein Problem mit den vererbten Formularen auch mal. Bei mir hat geholfen, alle Units wieder aus dem Projekt zu entfernen und dann einzeln in Erbreihenfolge wieder einzubinden.

Gruß

oki 27. Mai 2008 08:54

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Hallo,
ich habe alle Units mit einem Schwung neu eingefügt. Werd die Formulare mal alle wieder raus nehmen und einzeln nacheinander einfügen.

Meld mich dann mit dem Ergebnis.

Gruß oki

RavenIV 27. Mai 2008 08:55

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Ich hatte auch mal mit vererbten Formularen angefangen, aber damit wieder aufgehört.

Das Problem bei mir war, dass ich immer das "Masterform" in der IDE offen halten musste, wenn ich ein "Kindform" öffnen wollte.
Weiterhin hab ich nicht rausgefunden, wie man nur bestimmte Komponenten des Masterforms vererben kann.
Dann hab ich mir eben einen "Stammbaum" angelegt. Ein Masterform, drei Elternforms und einige Kindforms.
Nun immer die vier vererbenden Forms plus das zu bearbeitende Form offen haben, war mir zu viel.

Und dann hat die Vererbung auch nicht immer geklappt.
Wenn ich an einem Elternform eine Änderung gemacht habe, musste ich immer die Delphi-IDE schliessen, damit die Änderungen am Kindform übernommen wurden. Nur Kindform schliessen und wieder öffnen hat nicht gereicht.

Ist also alles noch nicht das Gelbe vom Ei das mit der Formular-Vererbung.

Schliesslich war es mir zu dumm und ich hab alles wieder "normal" gemacht.
Nun sind halt viele Komponenten auf allen Forms drauf, aber ich hab den besseren Überblick.

oki 27. Mai 2008 09:07

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Zitat:

Zitat von RavenIV
Das Problem bei mir war, dass ich immer das "Masterform" in der IDE offen halten musste, wenn ich ein "Kindform" öffnen wollte.
Weiterhin hab ich nicht rausgefunden, wie man nur bestimmte Komponenten des Masterforms vererben kann.
Dann hab ich mir eben einen "Stammbaum" angelegt. Ein Masterform, drei Elternforms und einige Kindforms.
Nun immer die vier vererbenden Forms plus das zu bearbeitende Form offen haben, war mir zu viel.

Genau diesen Zustand hab ich jetzt. Aber bis gestern war noch alles top. Bis ich gestern Abend einige Units aus dem Projekt entfernt und wieser aufgenommen hab.

Was macht die IDE im Projekt anders, wenn ich ein neues Formular aufnehme?

Gruß oki

oki 27. Mai 2008 09:51

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Also, das Einfügen der Form-Units in der Reihenfolge ihrer Vererbung hat nichts gebracht.
Ich habe natürlich noch eine Kopie meines Projektes, welche ca. 1 Woche älter ist. Da habe ich mit einem Texteditor in die *dproj geschaut. Die Angabe der enthaltennen Formularie unterscheidet sich wie folgt:

alte dproj
Zitat:

<ItemGroup>
<DelphiCompile Include="SeysolPackage.dpk">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="BaseToolWindow.pas">
<Form>BaseToolForm</Form>
</DCCReference>
.........
neues dproj
Zitat:

<ItemGroup>
<DelphiCompile Include="SeysolPackage.dpk">
<MainSource>MainSource</MainSource>
</DelphiCompile>
<DCCReference Include="RTBaseToolWindow.pas" />
.............
Unterschiedlich ist hier auf jeden Fall mal der Block <Form>BaseToolForm</Form> in der Referenz Include - Angabe für das Formular. Das setzt sich für alle weiteren Formulare so fort.

Ich werd das mal in meinem aktuellen Project ergänzen und mal schauen, was passiert.

Gruß oki

oki 27. Mai 2008 09:55

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Jo,

einmal nichts :(

Kein Erfolg!

oki 27. Mai 2008 10:13

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Ich habs!!!! :hello: :hello:

mein vorhergehender Beitrag war schon korrekt. Man darf sich halt nur nicht in der dproj verschreiben! :pale:

Hier nun meine ersten Erkenntnisse:
- es ist egal, in welcher Reihenfolge die Einträge für DCCReference Include stehen,
- alle Angaben dieser Blöcke müssen einen Block mit der Angabe des Formulars enthalten,
- wie man das nachträglich über die IDE hin bekommt hab ich noch nicht rausgefunden.

So muss es richtig aussehen:
Zitat:

<DCCReference Include="GateToolWindow.pas" >
<Form>GateToolForm</Form>
</DCCReference>
<DCCReference Include="BaseToolWindow.pas" >
<Form>BaseToolForm</Form>
</DCCReference>
Ich teste mal weiter.

Gruß oki

oki 27. Mai 2008 11:55

Re: Fehler: Vorfahre für Formular nicht gefunden
 
Hi Leute,

wie man das über die IDE wieder hin bekommt habe ich leider noch nicht raus bekommen. Im Moment kann ich aber mit der aktuellen Lösung es händich zu editieren leben. Diese hat sogar den Vorteil, dass ich nur die Forfahrenfenster als vererbbare Fenster anzeigen lasse. Alle Fenster von denen ich vorerst nicht vererben möchte editiere ich nicht. Somit bleibt der Dialog "Vererbbare Elemente" übersichtlich.

Somit nehme ich jetzt mal das Fragezeichen aus dem Thread raus.

Dank an alle für die Hilfe und

Gruß oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:59 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