Eigene Komponenten Samlung(GUI).

Zur Vorstellung von Komponenten und Units für Lazarus
pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Eigene Komponenten Samlung(GUI).

Beitrag von pluto »

Hallo,
nach drei Monaten habe ich gemerkt das mein GUI System grobe Fehler in der Struktur hatte. Also habe ich neu angefangen.

Die Neue Version ist in vielen Punkten besser, kann aber leider noch nicht alles was die Alte GUI konnte.
Im Moment habe ich folgende Komponenten nachgebaut:

TMyCompo
Von dieser Klasse sind alle Komponenten abgeleitet.
Sie stellt die Basses Methoden und Ereignisse da.

TMyStyle
TMyCompo hat eine Variable von Typ TMyStyle
TmyStyle ist für das äußere zuständig z.b. Rand.
oder aber auch ob es Viereckig oder als Kreis gezeichnet werden soll.

TMyTextDisplay
Ein Label, in den auch bunte Buchstaben angezeigt werden können

TMyTextInPut
Eine einfaches TEdit wo später eine Horizontale Scrollbalken anzeigt werden soll.
Z.b. für lange Verzeichnisse ist das bestimmt Praktisch.

TMyRadiobox
Eine Gewöhliche Radiobox, die eine Gruppen Eigenschaft hat.
Sie verwendet um den Text dazustellen eine Variable von TMyTextDisplay.

TMyCheckbox
Sie verwendet um den Text dazustellen eine Variable von TMyTextDisplay.

TMyScrollbox
Soll für alle Komponenten wie Listbox, TreeView, ListView, Edit und soweiter
Eingesetzt werden, leider gehen hier die Scrollbalken noch nicht.

TMyListbox ist von TMyScrollbox abgeleitet.
Eine einfach Listbox, die Listbox zeichnet den Text Selber und kümmert sich auch
um die Farben.

TMyListboxEXT ist von TMyListbox abgeleitet
Dieser Variante kann schon wesentlich mehr. Z.b. können
Check boxen und Radio boxen oder TextDisplay Komponenten angezeigt werden.

Es gibt auch schon ein Paar Events. z.b. bei der Listbox:
OnItemSelecet
onItemInsert
onItemDelete
onItemAdd

Außerdem nutzen die Komponenten Intern Ereignisse wie z.b. OnMouseDown und sowas.
Der ObjectManger ist diesmal von typ TCustumControl was sehr vieles vereinfacht.

Später werde ich noch mehr Informationen geben. Im Anhang sind zwei Bilder.

Die GUI ist sehr einfach gehalten im Moment. z.b. geht die Tab Taste nach nicht, wobei das das eine Funktion die der ObjectManger erledigen müsste.

Hier wollte ich es anders als in Lazarus oder Delphi kein Integer nehmen für den Taborder sondern einen String, Der Name der Nächsten Komponente wobei ich möchte auch hier die Pfeiltasten hinzuziehen. Und zwar in Verbindung mit der STRG taste oder so.

Der Programmierer soll genau festlegen können welche Komponente als nächstes angesprungen werden soll. Mit den Pfeiltasten z.b.

Später wird auch noch ein Beispiel Projekt folgen, was ich noch vorbereite und eine Dokumentation

Mir geht es hier nicht darum, besser zu sein/werden als die GUI-System die es schon gibt, ich möchte einfach anders sein, und ich möchte wissen wie viel Aufwand und was für Gedanken dahinter stecken. Und es ist schon ein sehr langer Wunsch/Traum von mir sowas zu machen. ca 10 Jahre lang wollte ich sowas schon immer mal machen und jetzt habe ich endlich die nötige Erfahrung und Wissen dazu und die nötigen Werkzeuge.

Edit01: Sontag, 09.September.2007
Das Ziel dieser GUI soll es sein/werden, für einfache 2D oder 3D spiele zu verwenden.

Ich denke wenn ich direkt bei X anfangen würde, würde es zu kompliziert werden.

Wenn jemand eine oder mehrer Komponenten für meine GUI entwickeln möchte bitte, nur zu.
Ich habe mir das ganz einfach vorgestellt:
Jeder könnte der mitmachen möchte kümmert sich um seine Komponente, pro Komponente eine Unit und eine Klasse.

Bei einen Updatet brauchen wir nur noch die entsprechenden klassen austauschen oder jemand würde uns wenn es sich lohn ein SVN-Server oder so zu Verfügung stellen.

Folgende Komponenten sollen noch kommen:
01 - ComboBox *
02 - TextFehld(eine Memo Variante)
03 - TextBox(eine erweitertes Memo, wo jeder Buchstabe anders aussehen kann)
04 - TreeView*
05 - ListView*
06 - ListViewExt*
07 - MainMenu*
08 - Popupmenu*
09 - GameMenu*
10 - Panel*
11 - PanelControl(ein PageControl)*
12 - Image*

* Bei diesen Komponenten sind mir keine andere namen eingefallen.
Die TreeView habe ich schonmal in einem abgesonderten Testprojekt angefangen, und sie ist gar nicht mal so einfach wie ich dachte, z.b. die Pfeiltasten.... aber ich habe es hinbekommen..... jetzt müsste ich daraus nur noch eine Komponente basteln.
Dateianhänge
01 28 (Kopie).08.2007.png
03 07 (Kopie).09.207.png
Zuletzt geändert von pluto am So 9. Sep 2007, 18:49, insgesamt 1-mal geändert.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Pluto fang bitte doch nicht noch 3 Threads wegen deinem Widgetset an in dem einen antwortet schon keiner weils keinen interessiert... (man möge mir widersprechen wenn sich mit dieser Aussage jemand auf die Füsse getreten fühlt)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Du musst ja nicht antworten. Außer dem ist das erst der zweite und der erste soll auch gelöscht werden !

Erhlich gesagt habe rechne ich auch nicht das hier jemand eine Antwort gibt..
Evlt. später. Ich wollte es einfach noch einmal richtig vorstellen. Darum ging es mir. Um sonst geht es mir eigentlich nichts. Wer antworten möchte kann es tun, sonst soll er/sie es sein lassen.

Später kommt der Soruce-Code auch noch dazu.

Wenn du den Trhead mit den Scrollbalken meinst da geht ja um ein kleines Problem bei meiner GUI.... aber nicht um die GUI im allgemeinen, hier soll es um die GUI allgemein gehen....

Z.B. Neue Methoden. Was findet ihr an der anderen Widgetset nicht so gut, oder was fählt da ? wie wird eine GUI aufgebaut ? um solche fragen soll es hier gehen.

Was könnte man an einer neuen GUI verbessern ?

Evlt. Entwicklet sich ja hieraus noch ein "richtiger" Thread..... Wenn nicht macht das auch nix ! Wenn ja würde ich mich natürlich freuen und auf eure Vorschläge/Tipps auch eingehen.

Solange sie nicht heißen: Hör damit auf und entwickle/hilf lieber bei dem GT1 oder 2 Widgetset mit !

ich weiß das währe mit Sicherheit für mich und andere Sinvoller nur ich möchte halt was komplet eigenes und neues was an nix gebunden ist/wird.

Bis es die ersten Anwendungen dafür gibt.

Ich weiß ich versuche ja schon lange euch meine GUI schmackhaft zu machen *G*.

Es ist nicht weiter als eine spielerrei wenn ihr so wollt. Ein Spaß Projekt mit ersten Hintergrund !
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben:Z.B. Neue Methoden. Was findet ihr an der anderen Widgetset nicht so gut, oder was fählt da ?
...
Ich weiß das währe mit Sicherheit für mich und andere Sinvoller nur ich möchte halt was komplet eigenes und neues was an nix gebunden ist/wird.


Aber dir ist schon klar, dass echte Widgetsets wie GTK, QT etc. ganz woanders beginnen als du bei TCustomControl?
Wenn du da anfängst, wird immer ein GTK oder QT etc. mitlaufen müssen, welches die "Drecksarbeit" ;-) für dich macht.
Das ist genau so wenig "unabhängig" wie normales Lazarus-Programmieren.
Wenn du das richtig machen willst, musst du bei Linux direkt auf X aufsetzen.

So sind es nur TCustomControl Abkömmlinge ohne ersichtlichen Nutzen.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Genau das möchte ich auch im Prinzip. Aber erstmal möchte ich auf GTk1 aufsetzen....

Ich hoffe das es später nicht zu Problemen kommt wenn ich direkt auf X aufsetzte..

Wobei dann könnte ich doch eigentlich dein OpBitmpa nutzen oder ?

Ich habe noch keine Idee wie ich diesen Teil schaffen könnte.
Wobei mein größter Wunsch ist ja daraus eines Tages sowas wie GTK1 oder 2 oder QT zu Enwicklen.

Ich denke da müsste ich dann noch viel lesen und ausprobieren um das hinzubekommen.
Aber erstmal reicht mir wenn ich auf GKT1 aufsetze und TCanvas nutze.

edit1:

So sind es nur TCustomControl Abkömmlinge ohne ersichtlichen Nutzen.
Naja das würde ich nicht umbedingt sagen. Sie haben schon einen gewissen nutzen.
Sie stellen eine gewisse altantive zu den Standard Komponenten da.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben:Ich hoffe das es später nicht zu Problemen kommt wenn ich direkt auf X aufsetzte..


Das geht so mit Sicherheit nicht.
Schau doch mal fpGUI an.
http://opensoft.homeip.net/fpgui/

Die versuchen wenigstens es richtig zu machen... ;-)

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das was mich stört ist schlichtweg das du dein Widgetset schon vorgestellt hattest und als dort niemand mehr geantwortet hat machst du einfach den nächsten thread auf...

schmackhaft machen brauchst das auch niemandem das projekt siehst du eventull als sinvoll an ich kann dem jedenfalls wenig sinn ersehen. du beteuerst immer das du das für deine prosönliche fortbildung tust dann belass es doch auch dabei und benutz es auch für deine persönliche fortbildung.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Danke Theo für den link den werde ich mir mal ansehen.
Ich dachte ich könnte es mit relativ wenig Aufwand einbauen....

Du meinst also, wenn ich soweit bin, merke ich das ich wieder von vorne anfangen muss ?
Für das ziel einer voll kommen unabhängigen GUI also unabhängig von GTK1 oder so....

@Christian
ich verstehe dich durchaus..... aber ich hatte oder hoffe immer noch, das sich mir noch ein paar laute anschließen. Diesen Thread habe ich aufgemacht weil der 1. im Falschen Forum lag und auch falsch angefangen habe.

Gut durch aus hätte ihn monta auch verschieben können...

Aber lassen wir doch einfach unsere Streitereien, wenn du nix zu sagen hast bitte, dann tue es auch nicht ! ich dachte das hätten wir jetzt endlich... soweit.

naja Fort Bildung kann man es auch nennen, das stimmt.
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich bin beeindruckt von der fpGui.... evlt. schaffe ich es sie unter Lazarus zu benutzen....
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

pluto hat geschrieben:Du meinst also, wenn ich soweit bin, merke ich das ich wieder von vorne anfangen muss ?
Für das ziel einer voll kommen unabhängigen GUI also unabhängig von GTK1 oder so....


Ja, das meine ich. Dein derzeitiges Vorhaben ist weit entfernt von einem Widgetset wie GTK oder Qt. Wenn du wirklich unabhängig sein möchtest, dann musst du bei X beginnnen.
Unter Windows ist das Vorhaben noch ein wenig sinnloser, da es dort sowieso sinnvollerweise nur das eine "Widgetset" gibt, nämlich das über Winapi erreichbare. Und das ist gleichzeitig der wirklich (von mir) unbestritten grosse Vorteil für den User von Windows, dass nämlich alles einheitlich ist.
Trotzdem setze ich die Wahlfreiheit von Linux und vor allem den Verzicht auf "Spionageterror" (Activation, WGA) über dies.
Zuletzt geändert von theo am So 9. Sep 2007, 05:10, insgesamt 1-mal geändert.

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Gut, dann werde ich folgendes Ziel nehmen:
Meine GUI wird dann halt nur für einfache 2D Spiele eingesetzt werden.

Wie weit währe dann SDL oder GDI an X ran ?
Ich hatte unter Windows mal eine Unit/klasse eine Variante von TCanvas komplett in SDL oder GDI verfasst. Woher ich sie hatte weiß ich nicht mehr....
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Habe mein ersten Beitrag upgedatet !
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

SDL benutzt unter Windows GDI unt im Unix X soweit ich weiß also auch wesentlich besser geeignet als deine Komponenten.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7178
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

d.h. ich sollte GDI verwenden wenn ich das möchte ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Soweit ich weiß benutzt du Linux oder ? ...
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten