Registriert: So Dez 19, 2004 00:27 Beiträge: 454 Wohnort: Nürnberg
Ja,
ich progge grade einen Editor. Jetzt habe ich für jede meiner Ansichten (Oben, Vorne, Links, 3D) ein eigenes Fenster.
So, aber wenn ich jetzt einen Vertex, bzw. ein Face erstelle wie übergebe ich die Daten an die anderen Fenster, also wo speicher ich die???
In einer Klasse, oder ein Record geht des ja schlecht, da er (bei mir ) die Variablen der anderen Formulare nicht erkennt
Mach dir doch einfach eine Globale Variable/Klasse in einer extra Unit, die packst du dann in die USES-Klausel der Formular-Units und schon können alle darauf zugreifen.
_________________ Bevor du definierst, was etwas ist, versichere dich seiner Existenz.
Da nimmst du am besten eine Klasse für dein Level, weil Objekte Referenzen sind und übergibst diese an jedes Fenster, so daß alle Fenster das gleiche Level bearbeiten.
Code:
TLevel=class
end;
TEditLevelForm=class(TForm)
public
property Level:TLevel ..
end;
Beim Laden oder Erstellen des Levels dann:
Code:
level:=TLevel.create;
for i:=0 to 3 do
editlevelforms[i].Level:=level;
Auf diese Art und Weise sind die Bearbeitung und die Verwaltung der eigentlichen Daten sauber getrennt.
Registriert: So Dez 19, 2004 00:27 Beiträge: 454 Wohnort: Nürnberg
des laden des Levels ist nicht das Problem. Sondern, wenn ich einen Vertex erstelle, wo ich Daten zwischenspeicher.
Wenn ich ne Klasse erstelle, muss ich die in jedem Fenster einzeln definieren, und kann nicht darauf zugreifen.
Zuletzt geändert von LH_Freak am Fr Mär 11, 2005 22:19, insgesamt 1-mal geändert.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Deklinieren musst du erstmal überhaupt nix. Es reicht die Klasse im Infinitiv. (Sorry das musste sein )
Du hast für jede Ansicht ein extra Fenster? Das ist schonmal mehr als suboptimal.
Lösung 1: Wie bereits gesagt: du machst ne extra Unit wo du die klasse als Variable im Interfaceteil definierst. Diese Unit musst du dann per Uses-Klausel den anderen Units zugänglich machen.
Lösung 2: Guck dir mal das Template mit den 2 Zeichenflächen an. So solltest du das auch machen. Is wesentlich praktischer, und außerdem hast du nur ein Fenster.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Fr Mai 14, 2004 18:56 Beiträge: 804 Wohnort: GER/OBB/TÖL-WOR/Greiling
*spam*
deklinieren und infinitiv passt nicht zusammen.
man muss sagen: die klasse im nominativ.
um noch ein wenig sinn reinzubringen:
klassen werden eingeführt oder deklariert
nachfahrklassen werden abgeleitet oder geerbt
objekte werden erstellt oder instanziiert
BTT:
ich hab auch zuerst daran gedacht, das ganze gleich auf panels zu machen, aber der vorteil von fenstern ist eben, dass man die frei schanuze verschieben kann.
ich würde also zur erstenlösung tendieren.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das kann man mit den Pannels auch. Man muss nur das Kreuz in der Mitte irgendwie klickable machen und dann per StartDrag und EndDrag die Panelgrößen neu berechnen. Bei Fenstern hat man das Problem, dass die gesamte Oberfläche "auseinanderfallen" kann.
Aber das war glaub ich net das Problem. Hast du's jetzt soweit hingegrigt?
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: So Dez 19, 2004 00:27 Beiträge: 454 Wohnort: Nürnberg
Also, ich hab jetzt in meinem Hauptfenster eine Klasse EINGEFÜHRT, in der meine Vertices, und Faces gespeichert sind (als dynamische Arrays),
und greif halt von den anderen Fenstern darauf zu. Dürfte also funktionieren.
Ist wirklich nichts besonderes.
Zuletzt geändert von LH_Freak am Sa Mär 12, 2005 16:49, insgesamt 3-mal geändert.
Am besten alles mit OpenGL, dann braucht man nichts zweimal programmieren. Für die 2D Ansichten mußt du nur die Matrix anders setzen, ein Gitter im Hintergrund zeichnen und auf Drahtgittermodus umstellen.
Registriert: So Dez 19, 2004 00:27 Beiträge: 454 Wohnort: Nürnberg
LarsMiddendorf hat geschrieben:
Am besten alles mit OpenGL, dann braucht man nichts zweimal programmieren. Für die 2D Ansichten mußt du nur die Matrix anders setzen, ein Gitter im Hintergrund zeichnen und auf Drahtgittermodus umstellen.
Wie Matrix (sorry, bin halt Newbie) umstellen??? Heißt das, dass ich die Kamera position umstellen soll?????
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.