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

Aktuelle Zeit: Mi Apr 24, 2024 07:31

Foren-Übersicht » Sonstiges » Meinungen zu den Projekten
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 66 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 25, 2008 21:48 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
wie was aussieht ? hast du vergessen ein Bild zu posten ?

die Combobox ist im Prinzip gar nicht so schwer.

Ich werde die bei mir so machen sobald das edit da ist:
ein Panel darauf das edit daneben ein Button mit einem Pfeil Drauf
wenn man auf den Button klickt kommt eine ListBox.

und Fertig. Wenn die Listbox schon angezeigt wird, wird sie halt eingeklappt und soweiter....

Das Prinzip ist einfach und was die Scrollballken angehen.

du nimmst eine Trackbar leitest davon deine Scrollbalken ab und gut ist.

:( Ich habe nur noch mit den Scrollen an sich ein paar Probleme :( die ich noch lösen muss.

Gut ich weiß nicht wie sowas in OpenGL geht, aber per Canvas ist das zeichnen sehr leicht :D Warum das Komplizierte(z.b. OpenGL oder SDL) nehmen wenn es auch einfach(Canvas in meinem Fall *G*) geht ?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Feb 25, 2008 22:07 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Es gibt zumindest zwei schwerwiegende Gründe:
1. Geschwindigkeit
2. Plattformunabhängigkeit
Traude

Edit: Ich bin bei meiner GUI schon recht weit fortgeschritten und arbeite am letzten Element (eine TreeBox in Delphi TreeView genannt), das fertig sein muss, bevor ich eine Version hier in die Projektecke stellen möchte. Der Source Code wird dabei sein.

Edit2: Ich habe das Bild nicht vergessen; es ist drangehängt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 26, 2008 14:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
@Traude:
Ahm, ja, das ist eine ComboBox. Was soll mir das Bild jetzt sagen? *aufdemschlauchsteh*

OT:
Traude hat geschrieben:
(wenn ich ein Motto angeben müsste, dann vielleicht: "Ich binne nich tot", Zitat von Oma Wetterwachs)

Welches von den Büchern?

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 26, 2008 16:24 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
In mehreren Büchern, z.B. auch in "Lords und Ladies".

Du hattest nach Source Code gefragt. Die dargestellte ComboBox enthält eine ScrollBar, die auch funktioniert. Wenn ich, wie gesagt, fertig bin mit dem Tree-Element stelle ich Source Code zur Verfügung. Außer Du sagst mir jetzt, dass Du nicht so lange warten willst. Den Code für die ComboBox inklusive ScrollBar habe ich schon fertig (es werden keinerlei VCL-Elemente dabei benutzt - es ist reines [Delphi-] Pascal, das fürs Zeichnen OpenGL benutzt).
Traude


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 26, 2008 16:39 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Naja, im Moment muss ich der GUI erstmal mehrere "Bildschirme" beibringen, damit ich einfach zwischen mehreren "Aufbauten" umschalten kann.

Gruß Lord Horazont

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Feb 26, 2008 18:21 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
@Traude stimmt, hatte ich wohl übersehen....
naja mit canvas hast du auch sowas wie Plattformunhabänigkeit.
Gut ein Augment dürfte der Speed sein. Das stimmt wohl. Aber ich denke wenn es um ein einfaches aussehen handelt dürfte Canvas reichen. für alles andere könnte man ja deine GUI dann nehmen *G*

Das Bild von der ComboBox gefällt mir. Sowas bekomme ich wohl nicht hin. Ist aber bestimmt mit Canvas möglich. Aber so ein aussehen würde mich zu stark an Windows Erinnern. Dann könnte ich gleich VCL Komponenten nutzen.

Bei meinen Komponenten sieht man ja, das sie anders aussehen *G*

Mit dem Scrollen habe ich noch einige Probleme. Zum einen mit den Ballken also nur wenn man den Ballken auch benutzen möchte. So ein Ballken ist ja schnell gemacht.

Zum anderen mit dem Klicken. Ich möchte z.b. das Label von einem Panel später ableiten.
Das Panel soll von eine ScrollBox abgeleitet werden.

Das Label stellt andere Komponenten da z.b. ein Link oder aber auch ein Bild und später noch mehr.

Das Problem ist jetzt die Positions Angabe. Die muss ja Relativ sein. Aber dann finde ich sie nicht mehr so einfach wenn ich drauf klicke. Entweder müsste ich ein eigene KompoList einfügen bei der Scrollbox oder ich müsste noch mehr Variablen hinzufügen. Was mir aber alles nicht gefällt.

_________________
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 26, 2008 21:07 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
'Tschuldigung, dass ich nur so sporadisch reinschaue, aber dieses TreeItem ist wirklich schweisstreibend.

Was die Scrollbox betrifft, so habe ich das so gelöst:

Methode zum Verschieben zur Positionsberechnung des Sliders:
(es gibt alerdings auch noch zwei andere Methoden für die Berechnung eines "LargeStep" und eines "SmallStep")

Code:
  1. Procedure TGUIScrollVertBar.CalcPosition;
  2. Begin
  3.    With fSlider Do Begin
  4.       If Border2-Border1-Height <> 0 // Division by zero!
  5.          Then fPosition:= Trunc((Top-Border1)*(fMax-fMin)/
  6.                            (Border2-Border1-Height))
  7.          Else fPosition:= 0;
  8.    End;
  9. End;


fMax und fMin sind die Größenordnungen, die vom Parent-Element angegeben werden, also z.B. wenn die ListBox 100 Elemente drin hat, ist fMin=0 und fMax=99 (oder auch 1 und 100). Border1 und Border2 sind die Pixel-Position der Grenzen, über die der (vertikale) Slider nicht hinausgeschoben werden darf. Top ist das augenblickliche Top des Sliders, Height ist die Slider-Höhe. Und der Ausdruck (Border2-Border1-Slider.Height) ist die maximale Länge, über die man den Slider verschieben kann und somit vergleichbar mit (fMax-fMin).


Die ListBox, die diese ScrollBox jetzt in Betrieb nimmt, macht jetzt Folgendes:

Code:
  1. With fScrollBar Do Begin
  2.    Min:= 0;
  3.    Max:= LastTopElement*fItemHeight;
  4.    LargeChange:= fItemsPerPage*fItemHeight;
  5.    SmallChange:= fItemHeight;
  6.    Position:=0;
  7. End;


Der Wert, mit dem Max beschickt wird, ist eine Feinheit, weil ich wollte, dass der Schiebebalken genau dann seine unterste Position errreicht, wenn die letzte Seite angezeigt wird. Man könnte allerdings auch hineinschreiben Max=ItemCount, dann schiebt der Balken die Scrollbox eine Seite weiter, ist auch nicht so schlimm. LargeChange schiebt eine Seite weiter (wenn man auf die ScrollBar klickt) und SmallChange schiebt eine Zeile weiter (wenn man auf einen der beiden Knöpfe klickt).

Die Elemente kann man so aussehen lassen wie man will, man muss sie nicht gleich aussehen lassen wie die VCL (Shape/Image/Color sind frei wählbar und alles hab ich selber gebastelt, kein Stück ist von der VCL (Hin und wieder lasse ich mich allerdings von der VCL "inspirieren"). Ich versuche mich an die Richtlinien für eine GUI zu halten, die in unserem Wiki stehen). Ich mache das einfach deshalb, weil ich es selbst dringend brauche und, naja, es gibt noch andere Gründe.
Traude


Edit: Entschuldige, ich war unexakt: es müsste oben natürlich heißen Max:= ItemCount*ItemHeight


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Feb 27, 2008 15:36 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Erstmal danke für deine Antwort.

Zitat:
Die ListBox, die diese ScrollBox jetzt in Betrieb nimmt, macht jetzt Folgendes:

naja, ich meine das sollte die Scrollbox alles selbst machen. So das man die Scrollbox verwenden kann. Ohne etwas über die Scrollbox wissen zu müssen. So wie die Delphi/Lazarus Scrollbox.

Ich finde das aber toll das so viele eine eigene GUI schreiben wollen oder schon tuen. In anderen Foren sagen die dann immer: "Warum das Rad neu erfinden ?" . Ich finde es gibt sehr viele gründe dafür.

_________________
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 28, 2008 07:00 
Offline
DGL Member
Benutzeravatar

Registriert: Di Okt 03, 2006 14:07
Beiträge: 1277
Wohnort: Wien
Das macht die ScrollBox auch alles selbst. Was die Listbox oben macht, ist nur die Initialisierung der ScrollBox. Gerade die ScrollBox habe ich nach dem Vorbild der VCL geschrieben. Die ScrollBox übermittelt der ListBox die Wünsche des Benutzers, oder, anders ausgedrückt, was der Benutzer mit seiner Maus auf den ScrollBox-Elementen gemacht hat, und die ListBox muss daraufhin ihre Massnahmen ergreifen: Zeile/Seite/Position ändern:
Code:
  1. //********************************************************************
  2. Procedure TGUIListBox.TrackPosition(ASender: TGUIItem;
  3.                AScrollCode: TScrollCode; AScrollPos: TInt32);
  4. Begin
  5.    If fChildren.Count > 0 Then Case ASCrollCode Of
  6.  
  7.         scLineUp: If fTopItem > 0
  8.                      Then Dec(fTopItem);
  9.  
  10.       scLineDown: If fTopItem < fChildren.Count - fItemsPerPage
  11.                      Then Inc(fTopItem);
  12.  
  13.         scPageUp: If fTopItem > fItemsPerPage-1
  14.                      Then Dec(fTopItem,fItemsPerPage);
  15.  
  16.       scPageDown: If fTopItem + fItemsPerPage < fChildren.Count-1
  17.                      Then Inc(fTopItem,fItemsPerPage);
  18.  
  19.       scPosition: fTopItem:= AScrollPos Div fItemHeight;
  20.    End;
  21.    InvalidTree:= TRUE;
  22. End;

Traude


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 28, 2008 09:40 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7804
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das hier alle eine eigene GUI schreiben liegt vermutlich daran, dass bisher niemand eine leicht verständliche und universell wiederverwendbare hier vorgestellt hat. Und dann gibts auch immer unterschiedliche Vorstellungen wie soeine GUI Componente gekapselt werden muss damit sie in anderen projekten eingebaut werden kann. Deshalb macht jeder sein Bier.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 28, 2008 17:10 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Zitat:
t, und die ListBox muss daraufhin ihre Massnahmen ergreifen: Zeile/Seite/Position ändern:

Ja ! Das ist super. Dann freue ich mich schon auf den Soruce Code deiner Scrollbox *G* Weil ich habe damit meine Probleme... :(

Zitat:
Deshalb macht jeder sein Bier.

Naja, besser währe es zwar wenn alle zusammen abreiten würde, aber so geht es natürlich auch. Mal sehen wer es als erster schafft eine Gute GUI zu schreibe. Aber was ist eine gute GUI ? Was zeichnet sie aus ?

Ich finde die VCL von Delphi ist schon recht gut... die LCL von Lazarus leider noch nicht.

Ich denke eine gute GUI sollte gut Konfigurierbar sein und vielseitig eingesetzt werden können. Z.B. Auf Canvas sowie auf OpenGL oder DirectX. Das Aussehn sollte sich leicht anpassen lassen und die GUI sollte viele viele Komponenten und Dialoge umfassen und das alles Nativ. Ohne vom Betriebssystem abhäng zu sein.

_________________
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 28, 2008 19:26 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich habe auch noch eine GUI in arbeit. ;) Für die ich ja jetzt auch meine Fonts entwickelt habe. Was irgendwie ein bisschen ausgeartet ist. ;) Früher hatte ich mal ein Projekt für die GUI aber das ist nicht mehr von interesse. Allerdings hat sich mittlerweile wieder eine neue Anwendung ergeben für die ich eine GUI benötige. Was meiner GUI wieder enormen Auftrieb gibt / geben wird. Eine Andere werde ich aber nicht benutzen auch wenn das bedeutet, dass ich alles selber machen muss. Das liegt aber daran, dass die ersten Schritte davon bereits knapp 4 Jahre zurück liegen (wenn nicht noch länger) und ich mittlerweile verdammt genau weiß was ich will. Außerdem steckt irgendwie gehöriger Ergeiz (Dickkopf) dahinter mich davon nicht klein bekommen zu lassen.

Pluto hat geschrieben:
Naja, besser währe es zwar wenn alle zusammen abreiten würde, aber so geht es natürlich auch. Mal sehen wer es als erster schafft eine Gute GUI zu schreibe. Aber was ist eine gute GUI? Was zeichnet sie aus?

Gut ist immer Definitionssache. Kunst liegt genau wie die Programmierung im Auge des Betrachters. Man kann es nicht allen recht machen. Der Eine findet das gut der Andere was anderes. Und wenn man sich zu stark verbiegt mag es zwar sein, dass man damit theoretisch alles machen könnte. Aber die Realität sieht so aus, dass niemand damit mehr etwas machen kann! Weil es einfach alles viel zu kompliziert geworden ist. Deswegen sollte man sich genau überlegen wofür man sie entwickelt. Und was man entsprechend alles für Features benötigt. Man sollte nicht versuchen irgendwie alles können zu wollen.

PS: Die VCL ist im übrigen nicht der komplette Zauber der Windows Oberfläche. Das ist nur eine Kappselung der Windows API. Also, wenn man sich die VCL ansieht dann sollte dir bewusst sein, dass das noch nicht alles war. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 28, 2008 19:45 
Offline
DGL Member
Benutzeravatar

Registriert: So Mai 11, 2003 10:36
Beiträge: 285
Wohnort: Oldenburg
Programmiersprache: Object Pascal
Zitat:
Gut ist immer Definitionssache. Kunst liegt genau wie die Programmierung im Auge des Betrachters

Ja ! Das ist wohl leider war.

Zitat:
Also, wenn man sich die VCL ansieht dann sollte dir bewusst sein, dass das noch nicht alles war.

Ich meinte auch die Kapslung. Ich weiß das die VCL "nur" die Fertigen Windows sachen nutzt.

Genau wie Lazarus mit den Linux sachen. Darum gibt es wohl auch noch "so" wenige Komponenten. Weil das GTK1 nicht so viele hat. Ich höhrer immer wieder gtk1 hat keine RichEdit oder Vergleichbare aber QT hat eine...

Ich finde, das Thema GUI sehr Interessant. Muss ich wirklich sagen. Und der Letzte Ansatz ist der beste den ich je gestartet habe. Es gibt zwar noch viele viele Probleme aber ich hoffe das ich sie mit der Zeit lösen werden.

Gerade einige Komponenten sind spanden. Darunter mein Liebling: Listbox. Ich schreibe seit dos eigentlich nix anders. Nur Listboxen. In unterschiedlichen Variolationen. Darunter auch mal eine TreeView oder ein Mainmenu.

Unter Dos waren das halt einfache Listen mit Nummern, Buchstaben davor. Wie das halt üblich war. Aber seit Delphi sind das schöne "Menus" mit Balken und so*G*....

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Feb 29, 2008 17:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2621
Wohnort: Berlin
Programmiersprache: Go, C/C++
GUI ist ein komplexes Gebiet und man kann daraus ganze wissenschaften ableiten, ergonomie, aufbau, api und ne menge mehr kann man da beachten. Dort liegt auch der Grund der vielzahl an GUIs, jede kann was anderes gut oder passt zu einem Konzept besser.
Meiner Meinung nach sind nur GUIs mit Komposition, für Zeichenroutinen, brauchbar.
Es bringt nichts, wenn man die ganze GUI Logik hat aber die Darstellung fix codet ist.
Libs wie GTK oder QT sind procedural und im vergleich zu Klassenbasierten APIs unübersichtlicher und schwerer handhabar aber dafür Shared Library freundlich. So muss der ganze Code nur einmal im Speicher landen und alle Programme nutzen dann den gleichen bereich, statt jedes Programm den Code selber nochmal besitzt.
Über Theme Datein werden die verschiedenen Renderer angesprochen, wie sie zu zeichnen haben.
Shape basierte GUIs sind schneller aber haben nicht die Möglichkeiten, mit detailierten Grafiken zu konkurrieren.
Features wie XML Datein, die als Formulardaten fungieren, Themefunktionalität, erweiterbarkeit um eigene Komponenten und einiges mehr geben auch den Ausschlag.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Mär 12, 2008 16:54 
Offline
DGL Member

Registriert: Mi Okt 16, 2002 15:06
Beiträge: 1012
Achja das GUI Thema,

schon interessant das mittlerweile soviele GUI´s aus dem boden wachsen.
Selbst ich muss mich mit dem Thema auseinandersetzten (Xenorate 3),
aber naja... so langsam will ich lieber was benutzen und gegebenfalls modifizieren.

Scheint aber so das ich sich noch nie jemand mit dem Thema Window Docking (ala winamp) auseinandergesetzt hat.
Klar ist nicht so einfach ein Dynamisches Docking System zu schreiben, aber es gibt hier bestimmt einige denen sowas spass machen könnte *g*

Bin da auch ebenfalls der meinung das man Rendertechniken nicht direkt in den code packen sollte, sondern über libs steuern sollte.
Ob nun per Klasse oder Prozedural ist ja geschmackssache. Übersichtlicher und nachvollziehender ist definitiv klassenbasiert.
Aber bitte reine "Englishe" Namen für klassen und kein Denglish :P

Ich glaube ich starte mal nen Suchthread im allgemeinen betreffend dem thema ;)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 66 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3, 4, 5  Nächste
Foren-Übersicht » Sonstiges » Meinungen zu den Projekten


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 26 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.156s | 17 Queries | GZIP : On ]