| |
|
|
- Seite 1 - |
|
| §60 - GUI, Ausgaben, Zeichnen und Farben
GUI-Befehle, Funktionen und Erläuterungen zur Arbeitsweise von Infinity-Profan mit Fenstern und Controls.
|
|
|
| |
|
|
|
| |
|
- Seite 1 - |
|
H.Brill | Danke für die Info. War noch nie so mein Ding, daß auch sowas mit Profan geht. Da graust es mich sogar als alter DOS-Programmierer : KompilierenMarkierenSeparieren Da wandelt Roland ja intern um. Würde ich auch nie so für meine Programme verwenden. Ich halte mich da lieber an die Konventionen der Datentypen und verwende sie auch dementsprechend.
Mag zwar hilfreich für absolute Einsteiger sein, aber man sollte dennoch von Anfang an den richtigen Umgang mit den Datentypen lernen. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 18.01.2015 ▲ |
|
|
|
|
| AndroidProfan macht es etwas anders, hat imho aber auch eine komplexere Betrachtung der Variablen denn deren Typ darf sich ständig ändern.
So kannst Du da:
var a="10" //hier ist a string a=5.5 //hier float
bei print 10+"20" kommt 1020 raus, ebenso bei print "10"+20, bei print 10+20 natürlich 30
So gesehen wandle ich nichts um sondern hebe auf den kleinstmöglichen Typ in der Reihenfolge:
null bool long float string array
Darum ist dies auch eine Fließkommazahl:
print 5+10.5
istgleich 15.5
und dies aber eine Fließkommazahl plus String
print 5+10.5+"test"
istgleich 15.5test
Und dies:
5+10.5+"test"+10+3.3
ergibt:
15.5test103.3
Versuche also von links nach rechts den Typ kleinstmöglich zu halten. |
|
|
| |
|
|
|
E.T. |
5+10.5+"test"+10+3.3 ergibt: 15.5test103.3
Und warum nicht 15.5test13.3 ?? |
|
|
| XProfan X2Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 18.01.2015 ▲ |
|
|
|
|
HofK | Test ist erster string von links, ab da string |
|
|
| |
|
|
|
| @E.T: Weil "test"+10 "test10" ergibt und "test10"+3.3 ergibt "test103.3". Es wäre imho nicht richtig wenn ich mal von links und mal von rechts rechne. |
|
|
| |
|
|
|
| Ich schätze ich habe mir jetzt ein tolles Konzept für die Positionierung, Anordnung und Ordnung von Controls und für das "Bildschirm-Design" einfallen lassen.
Meine Idee: "The Grid", das Raster! (Klar, Tron...): Man erzeugt ein Raster-Control mit beliebig vielen Zeilen und Spalten und kann Raster-Controls wiederum auch in Raster-Zellen erzeugen und jede Raster-Zelle hat eine eigene "Gravity".
Man stelle sich z.B. ein 9er Raster vor:
XXX XXX XXX
Jedes X steht für eine Raster-Zelle.
Möchte man nun ein Design das z.B. den Bildschirm vertikal teilt und oben aber 3 Buttons dann erzeugt man ein Raster 1x2 und in Raster-Zelle 1 erzeugt man ein Raster 3x1 - ergibt:
XXX ....... ------ ....... .......
Die Gravitation einzelner Zellen wird zunächst automatisch bestimmt und kann auch manuell modifiziert werden. Die Gravitation einer Raster-Zelle wirkt sich horizontal und vertikal aus, z.B. LinksOben, MitteOben, RechtsOben, LinksMitte, MitteMitte, RechtsMitte, LinksUnten, MitteUnten, RechtsUnten.
So erzeugt man ein 3x3 Raster auf hwnd und speichert sein Handle in die Variable mygrid: KompilierenMarkierenSeparieren Hierbei wird ein 3x3 Raster auf hwnd erzeugt, alle Raster-Zellen sind gleich groß und das Raster hat die Größe vom Parent (hwnd) - füllt also den Bildschirm aus.
Solch Raster selbst sind unsichtbar und deren Größe ist nicht manuell änderbar sondern deren Größe ergibt sich immer aus den Maßen der Eltern-Raster-Zelle.
Jede einzelne Raster-Zelle besitzt ebenso ein Handle. So hat die erste Raster-Zelle vom Raster mygrid das Handle mygrid+1, die letzte Raster-Zelle vom o.g. Raster hat das Handle mygrid+9.
Nun kann man natürlich auch in einer Raster-Zelle ein weiteres "Unterraster" erzeugen, z.B. ein Unterraster in Zelle 2 erzeugen das selbst aber nur 2 Spalten besitzt: KompilierenMarkierenSeparieren Natürlich kann man auch die Maße einer Rasterzelle selbst bestimmen, sieht dann z.B. so aus: KompilierenMarkierenSeparieren setzt die Breite von Rasterzelle 1 vom Raster mygrid auf 300 Pixel.
Das Konzept erlaubt mir eine automatische Anpassung auch bei Bildschirmrotation damit das Layout immer konsistent bleibt und es ermöglicht dem Programmierer ein einfaches Erstellen beliebig komplexer Layouts ohne auf jede Bildschirmauflösung reagieren zu müssen.
Mehr zum Thema schreibe ich dann bei der Funktionserklärung zur Funktion gui. |
|
|
| |
|
|
|
HofK | Scheint mir ein sehr praktikabler Ansatz.
iF (24.01.15)
Jede einzelne Raster-Zelle besitzt ebenso ein Handle. So hat die erste Raster-Zelle vom Raster mygrid das Handle mygrid+1, die letzte Raster-Zelle vom o.g. Raster hat das Handle mygrid+9.
Bei etwas größeren Verschachtelungen kommt man eventuell mit den Inizes durcheinander. Könnte man nicht eventuell auch die Notation mygrid+11, mygrid+12, mygrid+13, mygrid+21, ... , mygrid+33 nutzen und intern auf 1,... 9 umrechnen? |
|
|
| |
|
|
|
| Es gibt einen Trick den ich dafür eingebaut habe: Als Array-Angabe. So kannst Du statt mygrid+9 auch angeben: [mygrid,3] In diesem Fall rechnet das System für dich die Rasterzellennummer aus. (grid+y*yy+x)
Habe mich für diesen Sonderfall bewusst gegen [mygrid,2] für Position 9 entschieden (also nicht bei 0 beginnend) da diese Schreibweise ja eben ausschließlich für die Übersichtlichkeit gedacht ist. |
|
|
| |
|
|
|
| Das tolle bei Android ist dass man die Customcontrols relativ einfach (nicht so kompliziert wie bei Windows über Subclassing) optisch anpassen kann, also alles kann ein Hintergrundbild besitzen/ Schriftfarbe etc blabla. Da werde ich schöne gui(gui.mod,gui.*'s herstellen können und sogar Schatten sind drin etc. |
|
|
| |
|
|
| |
|
- Seite 2 - |
|
|
HofK | iF (24.01.15)
... optisch anpassen kann, also alles kann ein Hintergrundbild besitzen/ Schriftfarbe etc blabla. Da werde ich schöne gui(gui.mod,gui.*'s herstellen können ...
Ich fummele mit JavaScript gerade an SVG rum. Wird soetwas [...] , [...] auch in AndroidProfan einbindbar sein? |
|
|
| |
|
|
|
| SVG ist nett, bin aber gedanklich noch nicht so weit. Pauschal würde ich nicht nein sagen. |
|
|
| |
|
|
|
HofK | ... wollte auch nicht drängeln ...
Für eine Version AndroidProfan2 {neu: Infinity-Profan} muss ja auch noch etwas Interessantes aufgehoben werden! |
|
|
| |
|
|