![]() |
Komponente existiert bereits beim Öffnen des Projekts
Hi Leute,
Ich hab ein Grid abgeleitet, beim Create hab ich inherited und dann frag ich ab csDesigning in ComponentState dann tu: alle vorhandenden Columns löschen und erstelle 3 Columns mit dem Namen Self.Name + 'Clomun0' usw. Daraus hab ich eine Komponente gemacht. Wenn ich die Komponente compilier, installier und auf mein Formular ziehe, passt alles fein und läuft auch. Schließ ich allerdings das Projekt und öffne es wieder, dann kommt die Meldung: "Eine Komponente mit der Bezeichnung MeinGridColumn0 exisiert bereits." Hat jemand von euch dazu eine Lösung? danke mfg MOCI |
Re: Komponente existiert bereits beim Öffnen des Projekts
Zitat:
Da der Fehler beim erzeugen des Formulares erscheint, vermute ich den Fehler im Constructor. Kannst du mal die Funktion create hier posten. Dort vermute ich den Fehler. Gerd |
Re: Komponente existiert bereits beim Öffnen des Projekts
Sorry, hab beim ersten Post verschrieben. Die Fehlermeldung kommt nicht bei den Columns sonder beim View:
Code:
ViewVorhanden := False;
for I := 0 to Self.ViewCount - 1 do if Self.Views[I] is TcxGridBandedTableView then if TcxGridBandedTableView(Self.Views[I]).Name = Self.Name + 'BandedTableView1' then ViewVorhanden := True; if not ViewVorhanden then begin //Löschen aller Views I := Self.ViewCount; for J := 0 to Self.ViewCount - 1 do Self.Views[0].Free; //Erstellen des neuen BandedTableViews NeuerView := Self.CreateView(TcxGridBandedTableView); NeuerView.Name := Self.Name + 'BandedTableView1'; Self.ActiveLevel.GridView := TcxGridBandedTableView(NeuerView); //Band und Columns Createn und Standardwerte setzen StandardBandsCreaten(TcxGridBandedTableView(NeuerView)); StandardColumnsCreaten(TcxGridBandedTableView(NeuerView)); StandardWerteSetzen(TcxGridBandedTableView(NeuerView)); end; // End If |
Re: Komponente existiert bereits beim Öffnen des Projekts
Ich kenne diese Komponente nicht, aber:
Zitat:
Warum definierst du "I" wenn du diese Variable nicht verwendest ? (Nur interessehalber) Warum Self.Views[0].Free in einer Schleife? Ich gehe davon aus, das Views in irgendeiner Form eine Objectliste ist. Mit free gibst du das Objekt frei aber views.count wird doch nicht reduziert. Schau doch mal was views.count nach dem Durchlauf der Schleife sagt. Oder sollte es vieleicht so heissen:
Code:
Wie gesagt. Ich kenne die Komponente nicht. Ich mutmasse nur.for J := 0 to Self.ViewCount - 1 do Self.Views[J].Free; Self.Views.clear; Zitat:
Gerd |
Re: Komponente existiert bereits beim Öffnen des Projekts
Zitat:
Zitat:
"Index außerhalb des maximalen Bereichs"-Meldung. Ich könnte es auch mit downto machen, habs aber mal so probiert. Views haltet alle einzelnen Views in einer Liste. Allerdings gibt es hier keine clear -> leider. Aber es gibt bestimmt eine andere Möglichekeiten den View aus der Liste zu kicken. Danke für den hinweis!!! |
Re: Komponente existiert bereits beim Öffnen des Projekts
Dein Problem wird folgendes sein. Du erstellst die Columns im Constructor. Wenn du dein Projekt dann schließt werden diese Columns aber mit gespeichert. Beim öffnen des Projektes wird dann:
1.) wieder deine Komponente erzeugt 2.) Deine Komponente erzeugt die Columns 3.) die DFM wird ausgelesen udn es wird versucht die gespeicherten Columns zu laden -> Bumm |
Re: Komponente existiert bereits beim Öffnen des Projekts
Wie kann ich dem Abspeichern umgehen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:41 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