![]() |
(GLScene)zur Laufzeit erstellte FreeForm Objekte zugreifen
Hallo hier ist Terry,
wenn mir bei meinem Problem jemand helfen könnte wäre ich sehr dankbar. Ich programmiere einen Viewer mit Glscene (OpenGL). Mir gelingt es nicht auf zur Laufzeit erzeugte FreeForm Objekte zuzugreifen. Dies ist erforderlich um eine Datei zu erzeugen in der diverse Scenen Informationen gespeichert werden können. FreeForm.Parent:=Self; funktioniert nicht. das weitere tüfteln brachte auch nichts.
Delphi-Quellcode:
[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]
procedure TForm1.FormCreate(Sender: TObject);
var i: integer; begin TFreeForm.Create(Self).Name := 'FreeForm'; FreeForm:=TFreeForm(DummyCube1.AddNewChild(TFreeForm)); FreeForm.Name := 'FreeForm'; FreeForm.LoadFromFile('..\..\media\mushroom.3ds'); end; procedure TForm1.Button1Click(Sender: TObject); begin (FindComponent('FreeForm' as TFreeForm).position.x:=2; end; end; |
Re: Auf alle zur Laufzeit erstellten FreeForm Objekte zugrei
Hallo!
Les dir mal das hier durch: ![]() Was ist denn TFreeForm eigentlich? |
Re: (GLScene)zur Laufzeit erstellte FreeForm Objekte zugreif
Hi,
da sind dir wohl echt ein paar Fehler zwischen gekommen. Bei der aktuellen Version von GLScene heißt die Klasse eigentlich TGLFreeForm. Mit z.B. folgendem Code solltest du das hinbekommen
Delphi-Quellcode:
Und wenn du das Objekt suchst, ist der Name sicherlich nicht das Richtige, immerhin könntest du annonym so einige GLFreeForms einfügen. Wenn du jedenfalls nach einem FreeForm suchst, solltest du lieber die GLScene bemühen, in die du das Objekt eingefügt hast. Oder in deinem Fall, wenn du eh ein DummyCube mitbenutzt und der global (also z.B. schon zur Designzeit) gespeichert ist, kannst du auch direkt seine Childs durchgehen
var GLFreeForm : TGLFreeForm;
begin GLFreeForm := TGLFreeForm.Create(self.GLScene1); self.GLScene1.Objects.AddChild(GLFreeForm); GLFreeForm.Position.X := .... end; Also entweder
Delphi-Quellcode:
self.GLScene1.Objects.FindChild(ChildName : String, OnlyOwnChilds : Boolean); // bzw.
self.GLDummyCube1.Objects.FindChild(ChildName : String, OnlyOwnChilds : Boolean) oder for i := 0 to self.GLDummyCube1.Count - 1 do if (self.GLDummyCube1.Children[i] is TGLFreeForm) then .... |
Re: (GLScene)zur Laufzeit erstellte FreeForm Objekte zugreif
Hallo Wissender,
bin begeistert das eine wie das andere funktioniert, wünsche noch eine gute Nacht. Terry aus Berlin |
Re: (GLScene)zur Laufzeit erstellte FreeForm Objekte zugreif
Ja, leider ist GLScene (mag es echt gerne) schlecht Dokumentiert. Aber wenn du genug damit machst, findest du dich auch irgendwann ganz gut darin zurecht.
Freut mich jedenfalls, dass ich helfen konnte (und bleibe Unwissend :mrgreen: ) Dir auch ne gute Nacht, Der Unwissende aus Berlin |
Re: (GLScene)zur Laufzeit erstellte FreeForm Objekte zugreif
hallo,
ich hatte das gleiche problem wie terry, welches ich nach diesen anweisungen lösen konnte. aber ein problem hab ich noch: ich möchte in die FreeForm natürlich ein Modell einfügen (.3ds) über
Delphi-Quellcode:
in anderen programmen die ich erstellt hab, funktioniert das wunderbar, aber nich wenn ich zur laufzeit die FreeForm erstelle. hab ich irgendwas vergessen?
FreeForm.LoadFromFile('Pfad');
danke schon mal |
Re: (GLScene)zur Laufzeit erstellte FreeForm Objekte zugreif
![]()
Delphi-Quellcode:
MyFreeFormReferenz:= TGLFreeForm(GLScene1.Objects.AddNewChild(TGLFreeForm));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:36 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