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

Aktuelle Zeit: Do Apr 18, 2024 06:23

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



Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Eigene GUI, die auf Canvas Basiert
BeitragVerfasst: So Jan 20, 2008 14:37 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Hallo,
zurzeit arbeite ich an einem eigenen GUI Projekt. Der Grund: Ich habe vor einiger zeit eine eigene 2D Engine erstellt, und auf der Basiert diese GUI im Moment. Die 2D Engine basiert voll kommen auf TCanvas.
und nutzt OpBitmap für verschiedene Grafik Formate.

Es gibt jetzt schon einige Komponenten:
01 - Label
02 - LInkLabel
03 - Listbox
04 - Prossesbar
05 - Trackbar
06 - Checkbox
07 - Radiobox
08 - Panel
09 - PanelControll
10 - Statusbar
11 - Image
12 - ListBoxExt

Alle Sichtbaren Komponenten Basieren auf dem Label. Im Anhang sind zwei Bilder die ich heute gemacht habe und das Ergbniss zeigen. Das Herz diese GUI ist das Label. Das Label verwendet intern eine Methode die ich zuerst erstellt hatte, sie verarbeitet solche Strings:
<fg="blue"> Dieser Text wird in Blau angezeigt</fg>
und als Farb Werden 3 Verschiedene Wert unterstützt.

Das Ziel ist es so viele Komponenten wie nur Möglich zu erstellen für diese GUI. Die Komponenten sollen mehr Funktionen aufweisen als die Standard Komponenten bei Lazarus.

Im Moment habe ich nur ein "Mittarbeiter" ich würde mich freuen, wenn es sich noch mehr finden.
Weil es gibt noch zwei Haupt Probleme die ich einfach nicht lösen kann.
Einmal das Scrollen, das Scrollen Ansicht ist nicht schwer, nur per Maus zu scrollen schaffe ich einfach nicht, weil ich nicht die Scrollpos richtig berechnen kann.

Dazu zählen auch die Edit und die Editor Komponenten wie das Memo, RichEdit und sowas. Das macht zur Zeit Nils. aus dem Lazarus Forum: www.lazarusforum.de

Und das Markieren. Der Rest ist relativ einfach.

Edit01: Das Projekt wird in Lazarus unter Ubuntu 7.04 geschrieben.
Ich werde diesen Beitrag Regelmäsig updaten, damit ihr sieht das ich es ernst meine. Ich habe schon viele versuche eine GUI zu schreiben abgebrochen aufgrund einiger Fehler, aber ich denke das ich mit dieser GUI SEHR SEHR zu Frieden bin.

Als nächstes Sachen sind geplant: Ausbau der Einzelnen Komponenten.
Mehr Komponenten hinzuzufügen und natürlich eine Dokumenation zu erstellen die ich schon teilweise Angefangen habe, die im Label zu bewundern ist. Das macht aber erst sin wenn die TextBox fertig ist, dort hatte ich Einige Probleme.
Darum habe ich diese Komponente erstmal auf Eis gelegt.


Dateianhänge:
07 20.01.2008.png
07 20.01.2008.png [ 33.78 KiB | 13294-mal betrachtet ]
06 20.01.2008.png
06 20.01.2008.png [ 48.89 KiB | 13294-mal betrachtet ]

_________________
MFG<br> Michael Springwald, <br>
Bitte nur Links in Deutsch, nutze überwiegend Lazarus
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Jan 29, 2008 16:37 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Um den Thread Aktuell zu halten, hier meine Änderungen:
01 - Jede Komponente ist nun von einem Sprite Abgeleitet
02 - Wichtige Variablen vom Sprite sind nun Eigenschaften deren Getter und Setter Methoden Überschrieben werden können
03 - Ein neues Image List Format, es Basiert nun komplett auf XML. Und nutzt dafür Lazarus XML Funktionen aus
04 - Das Bild im Image kann nun Ausgerichtet werden: Zentriert, Normal, Gestreckt, später soll noch eine Kachel Funktion hinzukommen. Die Ganzen Funktionen gehen nur wenn AutoSize auf False steht.

Die Nächsten Sachen werden sein:
01 - MultiSelecetet in der Listbox(Tastertur und Maus)
02 - Label: Text Ausrichten(Right, Left, Censter), evlt. Automatischer Zeilenumbruch.
03 - Boxen Funktion im Label. D.H. ein Text soll in einem Viereck eingeschlossen sein, dieses Viereck soll Zusammen geklappt werden können.

Allerdings habe ich noch ein Problem mit dem PageControll. Im Moment Zeichne ich einfach alles über d.h. nur das Aktuelle Panel wird in den Vordergrund geholt. Zu diesen Zweck wird bei allen Komponenten die Visible Eigenschaft auf False gestellt.

Was ist aber, wenn der User diese Eigenschaft gezielt auf False stellt ? Wenn jetzt das Panel wieder in den Vordergrund Geholt wird, wird diese Eigenschaft ja wieder auf True gestellt. Irgendwie müsste die Komponente auf den Parent-Visible schauen.
Nur so kann es gehen. Aber da fehlt mir im Moment die Vorstellung Kraft für...

Als nächste Komponenten Plane ich folgende:
01 - ListView mit Tabellen Funktion. Die ListView soll einige List Style haben, um die Ansicht zu verändern. Zuerst dachte ich ich schreibe eine Extra Komponente dafür, aber ich glaube so ist es einfach besser.

02 - TreeView
03 - MainMenu
04 - Edit
05 - Memo

Mein Ziel ist es so viele Komponenten selbst zu erstellen die mir bekannt sind. So das es auch möglich ist kleinere Tools damit zu erstellen z.b. ein MediaPlayer oder so.

Soruce-Code gibt es sobald die GUI so weit ist... Im Moment ist sie noch in einem Frühen Alpha Status... Allerdings wird es immer wieder neue Bilder zum Anschauen geben.

Edit01. Fast Vergessen:
Die Statusbar zeigt jetzt beim rüber fahren auf einer Komponente mit der Maus Den Namen, die Klasse und Natürlich bei LinkLabels den Link der geöffnet werden soll

Und im Label kann jetzt beim Klicken auf ein Link eine neue Seite im gleichen Fenster geöffnet werden. Also sowas wie in einem Browser nur noch sehr stark Vereinfacht. Es gibt auch noch keinen Cash. Bei jedem neu laden müssen die Strings neu gepasst werden. Eine Mögliche Lösung währe: Alles in einer TObjectList einzuarbeiten. diese dann im Speicher zu halten oder auf festplatte speichern.


Dateianhänge:
09 29.01.2008.png
09 29.01.2008.png [ 61.18 KiB | 13253-mal betrachtet ]
08 29.01.2008.png
08 29.01.2008.png [ 92.26 KiB | 13253-mal betrachtet ]

_________________
MFG<br> Michael Springwald, <br>
Bitte nur Links in Deutsch, nutze überwiegend Lazarus
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 14, 2008 19:06 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Die letzten Änderungen sind folgen:
Es gibt jetzt 16 Komponenten. Die Vier neuen sind: TPluto2DFrom, TPluto2DPopupMenu, TPluto2DButton, TPluto2DButtonMenu.
Die ListBoxExt kann jetzt mit unter Menus umgehen. Allerdings noch nicht zu 100%ig ausgereift. Es gibt immer noch einige kleine Fehler.
Das From Benutzt jetzt die Buttons und hat jetzt ein SystemMenu bekommen. das ein ButtonMenu ist.
Wenn eine Komponente den Focus enthält kann jetzt auch die Hintergrund und Schrift Farbe verändert werden.
Es gibt jetzt die Eigenschaft Enabled.
Bei den Label kann es ausgeschaltet werden, das die Formatierungen gesetzt werden kann. Wegen dem Enabled wahr da Notwendig.


Es gibt einen Dritte Create Methode, die einfach ohne Paramter aufgerufen wird. In der Unit uPluto2DKompoList wird jetzt eine Variable automatisch erzeugt vom Typ TPluto2DKomplist. Damit vereinfacht sich vieles.

Es gibt aber noch einige Probleme die ich noch nicht ganz lösen kann:
Wenn eine Komponente andere Komponenten überdeckt so wie beim PopupMenu im From gibt es Fehler beim anklicken.
Beim PopupMenu habe ich das erstmal ganz einfach gelöst, aber leider noch nicht endgültig. ich wollte eine art Visible liste hinzufügen die in der Reinfolge die Komponenten enthält die Sichtbare gemacht wurde.

Als nächsten Komponenten Möchte ich hinzufügen:

Die Toolbar. Die soll auf meinen Panels Basieren. Dann währe es auch einfach möglich jede X Komponente zu verwenden die da ist.

Die ListView.

Das MainMenu. Das MainMenu soll auf den TPluto2DButtonMenu basieren.
Das ButtonMenu ruft einfach nur ein PopupMenu auf. Beim draufklicken mit der LINKEN Maustaste.

Im Großen und ganzen wird die GUI mit der Zeit ausgereifter. Aber bis an einer Praktischen Anwendung gedacht werden kann, wird wohl noch einige Zeit brauchen. Weil es fehlen noch einige wichtige Komponenten die in den Meisten Anwendungen genutzt werden: "Memo" und das "Edit".

So im Anhang gibt es jetzt vom Beispiel Programm alle Bilder.


Dateianhänge:
18 14.02.2008.png
18 14.02.2008.png [ 237.83 KiB | 13224-mal betrachtet ]
17 14.02.2008.png
17 14.02.2008.png [ 84.23 KiB | 13224-mal betrachtet ]
16 14.02.2008.png
16 14.02.2008.png [ 111.94 KiB | 13224-mal betrachtet ]
14 14.02.2008.png
14 14.02.2008.png [ 107.73 KiB | 13224-mal betrachtet ]
13 14.02.2008.png
13 14.02.2008.png [ 113.33 KiB | 13224-mal betrachtet ]

_________________
MFG<br> Michael Springwald, <br>
Bitte nur Links in Deutsch, nutze überwiegend Lazarus
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 19, 2008 14:27 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Mittlerweile konnte ich die meisten Probleme lösen. Zwar nicht schön, aber im Moment zufriedenstellen. Auch das das mit der Visible Liste konnte ich einbauen.

Ich bin gespannt wie weit ich kommen werden. Aber die GUI übertrifft jetzt schon meine Erwartungen. Es gibt zwar noch einige Probleme, muss sie mal bei Gelegenheit zusammen fassen. Aber ich denke bald könnte die erste Version der GUI fertig sein.

Die wird wahrscheinlich ohne Edit und Memo erstmal sein. Weil damit habe ich noch einige Probleme. Gerade beim Memo. Ich möchte nicht einfach eine TStringlist nehmen. Ich möchte gleich eine Strucktur nehmen, die ich auch wiederverwenden kann.

Also wollte ich hierfür die Grund Funktion von meinem Label neu erstellen. Ich möchte eine eigene Klasse erstellen die sich dann um so ein Makup Text kümmert. Die klasse soll den Text in ein Struktur bringen mit der ich was anfangen kann.

Jeder Text Block soll eine eigene Klasse/Object werden. Damit währe z.b. ein Markieren möglich. Oder auch das neu zeichnen von bestimmten Blöcken währe Denkbar. Ein Block ist eine String mit gleiche Farben.

Zum Scrollen: Dort habe ich noch Probleme mit den Position Angaben: Ich wollte z.b. das das Panel in einem eigenen Buffer reinzeichnet, kein Thema, aber jetzt kommt das Klicken mit der Maus: Die Positions Angaben währen Relativ zum Panel.
D.H. Beim klicken würde die Komponente nicht erfasst werden. Eine Lösung währe z.b. durch weitere Integer Variablen zu lösen. oder das die Draw Methode zwei Int Variablen als Paramter dazubekommt die Optinal sein könnten.

_________________
MFG<br> Michael Springwald, <br>
Bitte nur Links in Deutsch, nutze überwiegend Lazarus


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 04, 2008 18:01 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Heute habe ich wieder einige sachen an der GUI gemacht:
01 - Die Buttons und die RadioButton haben nun eine Gruppen Eigenschaft
02 - Es gibt eine neue Klasse den TPluto2DGroupManger
03 - Das PanelControll verwendet nun endlich die Header Komponente
04 - Kleine Grafik Fehler mit den Farben behoben
05 - Leere Test Seite umbeannt in Button, Header, dort habe ich jetzt 6 Buttons drauf gemacht die alle in 2 Gruppen zudammen gefasst sind.
06 - Auf der LinkLabel seite habe ich die Komponenten leicht anders angeordnet.

Die Gruppe ist im Moment noch ein Integer. Evlt. sollte ich das noch wieder ändern in einen String.

Weil ich habe auch vor die RadioButton Komponenten in meiner ListBox und in meinen Menus zu verwenden.
Naja, eigentlich ist ja der User für die Gruppen Verteilung zu ständig. Aber ist währe schon seltsam das eine Raidobox zur gleichen Gruppe gehört wie in einer ListBox *G*... Evlt. kann die LIstBox einfach die Gruppen Eigenschaft um einen bestimmten wert hochzählen z.b. + 100 oder 200 nehmen. Mal sehen.

Im Großen und ganzen sind die Änderungen doch nicht schlecht. Weil ich einige Tage nicht an der GUI wahr.
Sondern habe andere Projekte gemacht unter anderem XINE und Lazarus *G*

Im Hang findet ihr die "Neue Seite" als Screenshot.


Dateianhänge:
19 04.03.2008.png
19 04.03.2008.png [ 65.43 KiB | 13157-mal betrachtet ]

_________________
MFG<br> Michael Springwald, <br>
Bitte nur Links in Deutsch, nutze überwiegend Lazarus
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mai 12, 2008 12:40 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
ich habe nach einer Längeren Pause wieder angefangen zwischendurch kleine Änderungen an meiner GUI zu machen. Ich habe einig Fehler behoben und einige Anpassungen gemacht.
ich habe jetzt ca 18 Komponenten.

Ich finde diese GUI ist mein bester Versuch ein eigens Toolkit zu schaffen. Vorallem finde ich es erstaunlich das ich immer noch an diesem Projekt weiter arbeite.

Ich finde es auch toll das ihr für alles Offen Seit. Das ist leider nicht in allen Foren der Fall.

Mein Vorläufiges Ziel ist es natürlich zu versehen wie, die Komponenten arbeiten was für Gedanken dahinter stecken.
Es geht auch darum eines Tages eine GUI zu haben die allen gefällt und evlt. auch GTK1 und 2 um längen schlagen kann. Aber davon bin ich im Moment noch weit entfernt würde ich sagen.

Ich möchte natürlich mit diesem Beitrag noch mal daran Erinnern das dieses Projekt noch nicht gestorben ist.
Möchte mir jemand helfen, lade ich auch die Sorucen Hoch, die sind allerdings nicht so einfach zu verstehen und auch recht groß.

Im Anhang findet ihr das neues Bild. Unter den Erweiterungen ist auch die Möglichkeit ein PanelControl auf eine andere Seite in ein anders PanelControll anzuzeigen.
Bei dieser Gelegenheit habe ich noch einige kleinere Fehler behbenen können *G*


Dateianhänge:
GUI.jpg
GUI.jpg [ 78.33 KiB | 13117-mal betrachtet ]

_________________
MFG<br> Michael Springwald, <br>
Bitte nur Links in Deutsch, nutze überwiegend Lazarus
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mai 17, 2008 20:51 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Jetzt gibt es zwei neue Komponenten: Die Toolbar und einmal die MenuBar.
Die MenuBar ist sowas wie das MainMenu. Leider gibt es bei der Menubar noch einige seltsame Fehler.
Die MenuBar ist von der ToolBar abgeleitet.

Die ToolBar klappt wunderbar. Stellt mehrer Button nebeneinander da, wobei die Höhe gesetzt wird, wie die ToolBar hoch ist.
Die Breite der einzelnen Komponenten kann Automatisch gesetzt werden oder Manuel.

Ich weiß das viele die "Bunten" Farben nicht mögen. Aber diese GUI soll ja für einfache 2D Spiele sein. und einer der Kerne sind auch die Möglichkeit eine Bunte Oberfläche zu gestalten. Wobei dies kein zwang ist.

Sobald ich die Möglichkeit hinzugefügt habe mehrer Style zu verwenden, werde ich auch ein schlichten einfachen Style hinzufügen mit den Üblichen Farben.
Evlt. sogar System Farben. mal sehen.


Die GUI umfasst jetzt 19 einzelne Komponenten. Die Teilweise schon recht gut Funktionieren.

Ich weiß noch nicht genau wann ich eine erste Demo Version Hochlade. Wenn dann nur für Linux, weil unter Windows läuft meine 2D Engine aus irgendeinen mir unbekannten Grund nicht
:(


Im Anhang findet ihr das neuste Bild von der GUI. Es zeigt ein aufgeklappten Menu Zwei vom MainMenu.


Dateianhänge:
17.05.2008.jpg
17.05.2008.jpg [ 76.75 KiB | 13086-mal betrachtet ]

_________________
MFG<br> Michael Springwald, <br>
Bitte nur Links in Deutsch, nutze überwiegend Lazarus
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jun 29, 2008 12:27 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Damit der Thread hier nicht untergeht hier mal ein paar neuere Infos:
Die Komponenten Sammlung umfast jetzt 23 Komponenten.
- Ein unfertiges Memo
- Edit
- ComBox
- LabelEdit

Außerdem kann jetzt auch bei einem Form die Aktive Komponente ausgewählt werden. Was das Testen sehr verleichtert.

Es gibt aber noch leider eine reihe von Fehlern bzw. Probleme.
Z.b. wenn eine bei der ListBoxExt habe ich das Problem, sobald das SubMenu geschloßen wird,bleibt ein gefärbter bereich zurück, hier müsste ihn den Untergrund zuerst sichern damit ich ihn später wieder herstellen kann.

Außerdem habe ich noch keine brauchbare Idee um das Scrollen hinzufügen. Also eigene Scrollbalken dürften dabei kein Großes Problem da stellen.
Allerdings diese auch zu nutzen. Da habe ich einfach noch keine Idee.

Ich glaube fast, wenn diese zwei Probleme gelöst sind, könnte diese Komponenten sammlung schon sinvoll in einem Projekt eingesetzt werden.

Im Anhang gibt es das ein neues ScreenShot.

Die Farbauswahl habe ich noch nicht geändert. Ich finde es einfach toll, wenn eine Oberfläche aus vielen Farben besteht.
Aber das ist Geschmack sache und kann/soll auch später von jedem angepasst werden können.
Damit möchte ich einfach nur zeigen, was alles möglich ist. So ein Bild kann man mit der LCL oder VCL bestimmt nicht erzeugen, ohne die Komponenten angepasst zu haben...


Dateianhänge:
24 29.06.2008.jpg
24 29.06.2008.jpg [ 97.21 KiB | 13065-mal betrachtet ]

_________________
MFG<br> Michael Springwald, <br>
Bitte nur Links in Deutsch, nutze überwiegend Lazarus
Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 15, 2009 18:00 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Die Entwicklung habe ich im Moment eingestellt. Da mir einige sachen nicht mehr gefallen.. Z.B. gibt es einfach viel zu viele Baustellen und Probleme. Auf der anderen Seit gibt es aber auch viele sachen die ich schon hinbekommen habe. Zur Zeit überlege ich ob und wie ich neu Anfangen sollte. Ich habe da auch schon eine paar Ideen. Eine davon habe ich hier vorgestellt: viewtopic.php?p=68976#68976

Wenn Interesse besteht kann ich euch ja meinen Soruce-Code geben..
Ich denke ein neu Anfang ist am Wahrscheinlichkeit. Weil unter Lazarus kommt immer die Frage auf nach einer Skinbaren GUI. Da ich das Thema sehr Interessant finde Ist es nicht auszuschließen das ich neu Anfangen werde.

_________________
MFG<br> Michael Springwald, <br>
Bitte nur Links in Deutsch, nutze überwiegend Lazarus


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 20 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.062s | 19 Queries | GZIP : On ]