Deutsch
Befehlssatz und Hilfe

§60 - GUI, Ausgaben, Zeichnen und Farben

 
§60 - GUI, Ausgaben, Zeichnen und Farben

GUI-Befehle, Funktionen und Erläuterungen zur Arbeitsweise von Infinity-Profan mit Fenstern und Controls.
 
23.12.2014  
 




H.Brill

KompilierenMarkierenSeparieren
var h=createmenu("left","bottom")

Wäre es da nicht besser, die Konstanten
left, right, top und bottom OHNE " " zu
implementieren ?
KompilierenMarkierenSeparieren
Die " würde ich an deiner Stelle ausschließlich
den Stringliteralen bzw. Stringvariablen zuordnen.
Es könnte ja mal durchaus sein, daß man mit
den Konstanten rechnen will :
z.B. : left + 10
das dann das Menü 10 Pixel neben dem linken
Rand plaziert.

Ich glaube, das führt sonst früher oder später zu
Verwirrungen.
 
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  
 



Tatsächlich wirds eine menge Konstanden geben, schau mal am Beispiel arr:  [...] 

1: sortiert das Array numerisch
2: sortiert das Array alphanumerisch
3: kehrt die Reihenfolge der Elemente um (reverse)

Da wird man dann auch schreiben können:

a=arr(arr.sortnum,[10,30,20])

oder

a=arr(arr.sort,[10,30,20])

oder

a=arr(arr.reverse,[10,30,20])

Oder am Beispiel fattr:  [...] 

0: Größe der Datei oder -1 wenn nicht existiert oder -2 wenn Verzeichnis (selbe wie fattr(datei))
1: Datei oder Verzeichnis existiert
2: ist eine Datei
3: ist ein Verzeichnis
4: ist "versteckt"/ hidden
5: ist lesbar, Ausleserecht
6: ist beschreibbar, Beschreiberecht
7: ist ausführbar, Ausführungsrecht
8: Zeitpunkt letzte Änderung als Unixzeitstempel

Wirds dann geben:

fattr(fattr.exists,"datei")
fattr(fattr.isfile,"datei")
.isdir
.hidden
.canread
.canwrite
.canexecute
.lastmodified

Insofern wäre es dann auch:

createmenu(createmenu.left,createmenu.top)...

aber bei CreateMenu bin ich mir sowieso noch nicht ganz sicher obs denn so heißen soll. Da bin ich quasi noch nicht angekommen.
 
18.01.2015  
 




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
Cls
Declare String wert
wert = "80"
Def $zahl "5"
Print "10" + 10
Print $zahl + 15
Print wert - 60
Waitkey
End

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.
 
18.01.2015  
 




E.T.

5+10.5+"test"+10+3.3
ergibt:
15.5test103.3


Und warum nicht 15.5test13.3 ??
 
XProfan X2
Grüß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
 
18.01.2015  
 



@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.
 
18.01.2015  
 



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.
 
24.01.2015  
 




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?
 
24.01.2015  
 



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.
 
24.01.2015  
 



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.
 
24.01.2015  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

12.575 Betrachtungen

Unbenanntvor 0 min.
Thomas Zielinski06.09.2019
maroro16.08.2016
AndreasS16.05.2016
Boroberto22.04.2016
Mehr...

Themeninformationen

Dieses Thema hat 4 Teilnehmer:

iF (8x)
HofK (4x)
H.Brill (2x)
E.T. (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie