Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Apr 18, 2024 17:37

Foren-Übersicht » Sonstiges » Projekte
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Controls United
BeitragVerfasst: Fr Nov 18, 2005 11:10 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Wie man aus dem Titel schon erahnen kann wird es um zwei Projekte gehen die mehr oder weniger direkt miteinander zu tun haben werden. Hauptsächlich wird es aber um die Komponentensammlung gehen.

Nachdem die Vorgänger mich nicht so richtig glücklich gemacht haben, bin ich zu dem Schluss gekommen, dass ich es einstampfen werde und komplett neu aufziehen sollte. So gesagt habe ich mir lange Zeit über alles Gedanken gemacht wodurch die Motivation ein wenig extrem gesunken ist. Danke Flo für deine Motivationshilfe. :-)

Eines vorweg schon mal. Derzeit werde ich noch keinen Quellcode veröffentlichen, da es einfach noch keinen Sinn machen würde. Teilweise gefallen mir die Strukturen noch nicht so und müssen noch mal angepasst werden. Das betrifft jetzt weniger die Komponenten sondern mehr die Fonts.

Controls United
Jetzt aber zu den Fakten und zum Aufbau. Das gesamte System besteht aus abstrakten Bausteinen die alle eine eigene Funktionalität haben und zusammen harmonieren.

Als Basis existiert eine Interfaceklasse (hat nichts mit den interfaces aus delphi zu tun), welche die komplette Verwaltung von allen Objekten, Events und grafischen Objekten (Texturen, Fonts) übernimmt. Alle Komponenten sind mehr oder weniger losgelöst und nur in dem Interface zu einem sinnvollen Gebilde verbunden. Mehrere Fenster parallel anzuzeigen stellt dabei keine Probleme dar. Bei Maus, Tastatur, Resize, Zeichenevents müssen diese Lediglich an das Interface geleitet werden. Um alles Andere kümmerst sich das Interface.

Die Komponenten sind von einer Basisklasse abgelitten, die sich bereits um viele Dinge in der Fensterverwaltung kümmert. Die Ableitungen müssen sich lediglich um das Zeichnen und auf die Events konzentrieren. Die Positionierung wird durch das Basisobjekt erledigt. Das Delphitypische Verhalten mit Align, Anchors, Constraints wird dabei voll unterstützt.

Die Verwaltung der grafischen Objekte (Texturen, Fonts) wurde ein wenig renoviert. Die benutzen Objekte kapseln lediglich die echten Objekte. Die Kapselungen können (ähnlich ParentFont bei Dephi) von dem Parent übernommen werden. Sollte dann ein echtes Objekt benötigt werden so wird im internen Manager nach einem kompatiblem Objekt gesucht. Was meine ich mit Kompatibel? Alleine durch eine andere Filterung ändert sich ja noch lange nichts an der zu Grunde liegenden Textur. Manuell erstellte Texturkapselungen fallen in genau das selbe Schema und werden auch komplett verwaltet.

Das Interface besitzt eine Hand voll Methoden mit denen gezeichnet wird. Diese Methoden müssen für die jeweilige Plattform überschrieben werden. Genau so auch die Kapselungen der grafischen Objekte. Für OpenGL habe ich dies schon getan. Ableitungen für GDI (GDI+) und SDL sogar DX wären also problemlos möglich.

In dem Interface besteht auch die Möglichkeit eine Klasse zu integrieren mit der man Formatdefinitionen für einzelne Komponentenklassen ablegen kann. Oder anders gesagt Themes. Neu erstellte Komponenten bekommen automatisch das Theme zugewiesen und auf Wunsch kann man es auch explizit allen zuweisen lassen.

Die Komponenten oder Fenster sind dann so aufgebaut wie man es auch von Delphi gewohnt ist. Hier mal die Klasse aus dem Sample. Verkleinert und beschnitten.
Code:
  1.   TcuPanel1 = class(TcuPanel)
  2.     Image1: TcuImage;
  3.     Button2: TcuButton;
  4.     Panel1: TcuPanel;
  5.     Button1: TcuButton;
  6.     CheckBox1: TcuCheckBox;
  7.     procedure Button1Click(Sender: TObject);
  8.     procedure Button2Click(Sender: TObject);
  9.   private
  10.   public
  11.   end;
Das Laden der Daten (Themes oder Komponenteninstanz) geschieht mittels Methoden aus einer externen Unit. Es ist also kein Format fest vorgegeben. Es werden aber zur Vereinfachung ein paar Units mit ausgeliefert. Unter anderem XML mit DOM. Für die Komponentenerstellung werde ich mir aber noch eine Hilfsklasse einfallen lassen. Die Themes in dem XML können abgelitten werden. So kann man ein zweites Theme erstellen indem lediglich die Textur verändert ist. Intern werden dann lediglich die Themes zusammen kopiert.

Die Komponenten sind auch in der Lage sich nur bei bedarf neu zuzeichnen. Das muss aber vom Interface gesondert behandelt werden.

Bisher implementierte Komponenten sind Panel, Button, GroupButton, CheckBox, RadioBox.
Was wird noch kommen.
- Fonts auf den Komponenten
- Mehr Komponenten
- IDE

Download Sample (edit: Link angepasst)
In der XML ist alles anpassbar und wird auch so ins Programm übernommen. Wenn man spaß daran hat könnte man auch neue Komponenten erstellen die dann zwar keine Funktion hätten aber im Programm existieren würden.

Achja. Wünsche Anregungen etc. bitte in diesem Thema eintragen. Nicht wundern. Das ist das Forum von der Vorgängerversion.

// Edit: Abschnitt über glBitmap entfernt.
// Edit: Abschnitt über glTextSuite entfernt, da es gar keine Relevanz mehr besitzt.


Zuletzt geändert von Lossy eX am Mi Mai 14, 2008 11:58, insgesamt 6-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 05, 2009 09:52 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Keine Ahnung was mich geritten hat damit ich 2 (3) Projekte in ein einziges Thema packe. Entsprechend habe ich die Themen geteilt. Wer auf der Suche nach der TextSuite ist möge bitte zu folgendem Thema wechseln. Eigentlich wollte ich ja nur den ersten Beitrag abschneiden aber das ist der einzige der fest ist. ;)

Ein "Update" für dieses Projekt gibt es auch noch. Allerdings kein sonderlich Erfreuliches. Und zwar habe ich mich entschlossen dieses Projekt einzustellen. Ich habe seit mehr als 2 Jahren nicht mehr daran gemacht und in der Zwischenzeit gibt es eine alternative gui. Außerdem haben sich meine Prioritäten verändert wodurch mir eine Gui in der geplannten Form schlicht nichts mehr nützt. Selbst wenn ich sie fertig stellen würde, könnte ich sie nicht benutzen. Und das macht das Projekt dann irgendwo ziemlich sinnfrei.

Das aber nur als News. In naher Zukunft werde ich das Projektthema + Meinungsthread dann auch passend "entsorgen". Damit es eben nicht mehr unter Projekte rumlungert.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Foren-Übersicht » Sonstiges » Projekte


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 36 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.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.289s | 17 Queries | GZIP : On ]