Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Delphi XE2 - Komponente wird nicht erzeugt/dargestellt
galagher - Di 03.01.12 17:38
Titel: Delphi XE2 - Komponente wird nicht erzeugt/dargestellt
Hallo!
Ich habe eine Komponente TLabeledImage (ist im Package Visual.bpl) selbst entwickelt und konnte sie bisher (Delphi 6) immer nutzen, aber unter Delphi XE2 erhalte ich beim Versuch, sie auf die Form zu ziehen, die Meldung:
| Zitat: |
| Zugriffsverletzung bei Adresse 14F6D116 in Modul 'Visual.bpl'. Lesen von Adresse 000006C. |
Im Textfenster darunter:
| Zitat: |
[14F6D116]{Visual.bpl } LabeledImage.TLabeledImage.GetFont$qqrv (Line 119, "LabeledImage.pas" + 1) + $9
[5008C1A1]{rtl160.bpl } System.TypInfo.GetOrdProp (Line 2027, "System.TypInfo.pas" + 36) + $1
[20FEFB06]{designide160.bpl} ComponentDesigner.FindComponentDependencies (Line 3755, "ComponentDesigner.pas" + 15) + $9
... |
Die Liste der Fehler ist noch länger.
Hier Zeile 119 der Datei LabeledImage.pas:
Delphi-Quelltext
1: 2: 3: 4:
| function TLabeledImage.GetFont: TFont; begin Result := FLabel.Font; end; |
Das Auskommentieren nützt nichts.
Aber ein Formular, das bereits eine Komponente TLabeledImage enthält, lässt sich problemlos öffnen. Also denke ich, Delphi XE2 kann die Kompo zur Designzeit nicht darstellen. Zur Laufzeit kann ich die Kompo erzeugen und auch damit arbeiten.
Muss ich die Kompo vergessen oder kann ich da was machen?
Erichgue - Mi 04.01.12 14:32
Delphi-Quelltext
1: 2: 3: 4:
| function TLabeledImage.GetFont: TFont; begin Result := FLabel.Font; end; |
Liefert vermutlich NIL zurück.
Ist FLabel beim Aufruf von GetFont instanziert\zugewiesen?
Erich
galagher - Mi 04.01.12 17:15
Erichgue hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4:
| function TLabeledImage.GetFont: TFont; begin Result := FLabel.Font; end; |
Liefert vermutlich NIL zurück. |
Ja, offenbar, denn ich hatte, als ich es schaffte, die Komponente auf die Form zu ziehen, die Meldung (sinngemäss): "NIL kann nicht zu TFont zugewiesen werden".
Erichgue hat folgendes geschrieben : |
| Ist FLabel beim Aufruf von GetFont instanziert\zugewiesen? |
Das dachte ich zumindest, denn bisher hat's ja funktioniert.
Habe jetzt Prozedure SetName komplett entfernt, GetFont habe ich so abgeändert:
Delphi-Quelltext
1: 2: 3: 4: 5:
| function TLabeledImage.GetFont: TFont; begin if Assigned(FLabel) then Result := FLabel.Font; end; |
Jetzt funktioniert's wieder!
jaenicke - Mi 04.01.12 17:17
Nebenbei als Hinweis:
Du kannst in so einem Fall einfach Delphi beim Package als Hostanwendung eintragen, nen Haltepunkt setzen und kurz nachschauen was los ist. ;-)
galagher - Mi 04.01.12 17:30
jaenicke hat folgendes geschrieben : |
Nebenbei als Hinweis:
Du kannst in so einem Fall einfach Delphi beim Package als Hostanwendung eintragen, nen Haltepunkt setzen und kurz nachschauen was los ist. ;-) |
Muss ich mir ansehen!
Erichgue hat folgendes geschrieben : |
| Ist FLabel beim Aufruf von GetFont instanziert\zugewiesen? |
Wohl nicht, aber warum funktioniert es dann unter D6?
Vor allem:
galagher hat folgendes geschrieben : |
| Das Auskommentieren nützt nichts. |
Kann aber sein, dass da noch andere Bedingungen gegeben waren, die ich jetzt behoben habe.
AndyB - Mi 04.01.12 20:04
galagher hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3: 4: 5:
| function TLabeledImage.GetFont: TFont; begin if Assigned(FLabel) then Result := FLabel.Font; end; | |
Wo ist denn da der ELSE Teil?
Denn wenn man sich das ganze über die CPU Anzeige anschaut wird das jetzt zu:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| ]function TLabeledImage.GetFont: TFont; begin Result := TFont(Self); if Assigned(FLabel) then Result := FLabel.Font; end; |
galagher - Mi 04.01.12 23:14
AndyB hat folgendes geschrieben : |
| Wo ist denn da der ELSE Teil? |
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| function TLabeledImage.GetFont: TFont; begin if Assigned(FLabel) then Result := FLabel.Font else Result := Parent.Font; end; |
Hab's noch nicht getestet, aber das ist doch die Lösung, oder?
galagher - Do 05.01.12 19:53
//Edit:
Korrekt ist:
Delphi-Quelltext
1: 2:
| else Result := Font; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!