Forum: PC-Programmierung Bedienoberfläche einfach erstellen


von Matthias W. (matt007)


Lesenswert?

Früher war ich ein begeisterter Benutzer von Turbo-C.
Damit war rasch was gemacht. Ein paar Eingaben
abgefragt, etwas graphisch dargestellt. Rasch übersetzt
und das Ergebnis ausprobiert und weiteroptimiert.

Visual C++ schien im Vergleich dazu extrem sperrig.

Visual Basic empfand ich genial, was das Erstellen
der Oberfläche anbelangte. Die Sprache selbst fand ich
grauslich. Wenn es da eine C-ähnliche Sprache
gegeben hätte . . .

Etwas ähnlich einfaches von der Bedienung wie Turbo C
erweitert um die graphische Möglichkeiten von
Visual Basic suche ich. Gibts da was?

Wie kann man denn rasch ohne großen Lernaufwand
eine Oberfläche zurechtzuzimmern?

Ist Gambas für Bedienoberflächen was Brauchbares?

Matthias

: Verschoben durch Admin
von Floh (Gast)


Lesenswert?

Matthias W. schrieb:
> Etwas ähnlich einfaches von der Bedienung wie Turbo C
> erweitert um die graphische Möglichkeiten von
> Visual Basic suche ich. Gibts da was?

Borland C++-Builder ? :-)

von dito (Gast)


Lesenswert?

C#

von Matthias W. (matt007)


Lesenswert?

Floh schrieb:
> Borland C++-Builder ? :-)

Ist das wirklich so gut, daß es sich lohnt
als privater Anwender so viel Geld auszugeben?

Im Internet fand ich:
"This site is dedicated to Borland C++ Builder, the Visual Component 
Library, and those of us who have come to love it, even to think that it 
is the best thing since the Sneakers bar. Here, we provide lessons, 
guides, and links on how to take advantage of this finely defined 
programming environment."

Das hört sich ja gut an.

Matthias

von Matthias W. (matt007)


Lesenswert?

dito schrieb:
> C#

da weiß ich leider wenig darüber.
Ist das eher MS-lastig?

Matthias

von Lukas K. (carrotindustries)


Lesenswert?

Glade ist ziemlich genau das was du suchst.

von Floh (Gast)


Lesenswert?

Matthias W. schrieb:
> Ist das wirklich so gut, daß es sich lohnt
> als privater Anwender so viel Geld auszugeben?

nein, ist es meiner Meinung nach nicht. Hab nur mal in der Schule damit 
gearbeitet, daher ist es mir eingefallen ("C++ for Kids").
:-)

von Matthias W. (matt007)


Lesenswert?

Luk4s K. schrieb:
> Glade ist ziemlich genau das was du suchst.

hört sich interessant an.
http://de.wikipedia.org/wiki/Glade
unabhängig von der verwendeten Programmiersprache.

Demnach passt im Prinzip auch der GCC dazu.

Matthias

von Matthias W. (matt007)


Lesenswert?

Floh schrieb:
> nein, ist es meiner Meinung nach nicht. Hab nur mal in der Schule damit
> gearbeitet, daher ist es mir eingefallen ("C++ for Kids").

wenns gut ist machts auch Spaß.
Das ist ein wichtiger Punkt bei der Arbeit.

Hat mal jemand Gambas probiert?

Matthias

von Peter (Gast)


Lesenswert?

Matthias W. schrieb:
> dito schrieb:
>> C#
> da weiß ich leider wenig darüber.
> Ist das eher MS-lastig?

ja, ist halt von MS. Aber damit ist es sehr einfach ein GUI zu 
schreiben. Und es gibt kostenlose entwicklungsumgebungen.

von Matthias W. (matt007)


Lesenswert?

Peter schrieb:
> ja, ist halt von MS. Aber damit ist es sehr einfach ein GUI zu
> schreiben. Und es gibt kostenlose entwicklungsumgebungen.

Danke Peter !

Wenn es irgend geht würde ich lieber OpenSource
nehmen. Wenn C# jedoch Klassen besser ist muss
das überlegt werden.

Matthias

von Maik F. (sabuty) Benutzerseite


Lesenswert?

Matthias W. schrieb:
> Peter schrieb:
>> ja, ist halt von MS. Aber damit ist es sehr einfach ein GUI zu
>> schreiben. Und es gibt kostenlose entwicklungsumgebungen.
>
> Danke Peter !
>
> Wenn es irgend geht würde ich lieber OpenSource
> nehmen. Wenn C# jedoch Klassen besser ist muss
> das überlegt werden.
>
> Matthias

C# ist eine Programmiersprache. Die alleine hilft dir erstmal nicht 
viel, wenn du GUIs bauen willst.

Wenn du eine offene C#-Implementierung mit portiertem 
Windows-Forms-Framework und anderen Teilen von .Net haben willst, schau 
mal nach Mono. Das läuft dann auch unter OS X und Linux. 
Entwicklungsumgebung dafür ist zB MonoDevelop.

Wenn du eine tolle funktionierende Entwicklungsumgebung haben willst, 
ohne viel drüber nachdenken zu müssen: MS Visual Studio 2010 für C# in 
der Express Version kostet nichts und ist für kommerzielle Anwendungen 
ausdrücklich zugelassen.

C# als Sprache wurde zwar von Microsoft getrieben, ist trotzdem ein 
Standard. Und die Sprache ist in der aktuellsten Version wirklich sehr 
angenehm.

von Peter (Gast)


Lesenswert?

Matthias W. schrieb:
> enn C# jedoch Klassen besser ist muss
> das überlegt werden.

Besser als was? Klar kann man auch java nehmen aber das ist auch nicht 
wirklich opensource.

von Markus E. (engelmarkus)


Lesenswert?

Wenn nur C# bzw. .Net und Java zur Auswahl stünden, würde ich C# 
vorziehen. Die zur Verfügung gestellten Klassen sind einfach besser 
organisiert. Außerdem hat die Sprache auch noch ein paar Features, die 
ich bei Java vermisse.

von High Performer (Gast)


Lesenswert?

>C# als Sprache wurde zwar von Microsoft getrieben, ist trotzdem ein
>Standard.

C# ... Standard ... hmmm ... ach ja, da war doch so eine seltsame 
Abstimmung ... auf C# steht wohl "Standard" drauf. Drin ist IMHO jedoch 
Microsoft pur. Und Mono? Na ja, so lange Microsoft stillhält, 
funktioniert das, aber wehe wenn sie losgelassen! C# ist das was es ist: 
der Versuch Microsofts, Java mit einem leicht veränderten Nachbau das 
Wasser abzugraben. Geschafft haben sie es nicht. Ist C# nicht inzwischen 
deutlich aus dem Blickfeld der Entwickler gerückt?

von High Performer (Gast)


Lesenswert?

Ach ja, wenn Du wirklich schnell zu Ergebnissen kommen willst, nimm Java 
mit Swing. Sehr angenehme Sache. Als Layout Manager unbedingt MigLayout 
verwenden!

von High Performer (Gast)


Lesenswert?

>Wenn C# jedoch Klassen besser ist muss
>das überlegt werden.

Ist es natürlich nicht! Ist halt von Microsoft.

von Peter (Gast)


Lesenswert?

High Performer schrieb:
> Ach ja, wenn Du wirklich schnell zu Ergebnissen kommen willst, nimm Java
> mit Swing. Sehr angenehme Sache.

Aber nur wenn du eine hässliche und langsame GUI haben willst die noch 
langsamer wird wann man über Terminalserver arbeitet und dafür 
mindestens 50Mb ram braucht.

(eventuell ist es aktuell nicht mehr so schlimm, aber auf die letze 
Swing Anwendung die ich gesehen drifft das leider alles zu)

von High Performer (Gast)


Lesenswert?

>Aber nur wenn du eine hässliche und langsame GUI haben willst die noch
>langsamer wird wann man über Terminalserver arbeitet und dafür
>mindestens 50Mb ram braucht.

Das dürfte schon seit ca. >5 Jahren nicht mehr so sein.

von Matthias W. (matt007)


Lesenswert?

Maik Fox schrieb:
> Wenn du eine tolle funktionierende Entwicklungsumgebung haben willst,
> ohne viel drüber nachdenken zu müssen: MS Visual Studio 2010 für C# in
> der Express Version kostet nichts und ist für kommerzielle Anwendungen
> ausdrücklich zugelassen. Und die Sprache ist in der aktuellsten Version
> wirklich sehr angenehm.

Danke Maik !

Matthias

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Wenn Du einfach, schnell und sicher eine Oberfläche erstellen willst, 
solltest Du Dir mal Tcl/Tk ansehen:

- ist einfach per C erweiterbar (sofern überhaupt nötig)
- BSD-Lizenz (closed Source also kein Problem)
- selbst statisch gelinkt kaum über 1MB große Programme
- gibt es für Win, Mac, Unix
- kleiner Befehlssatz
- Programme sind zum großen Teil selbsterklärend

Chris D.

von Matthias W. (matt007)


Lesenswert?

Chris D. schrieb:
> Wenn Du einfach, schnell und sicher eine Oberfläche erstellen willst,
> solltest Du Dir mal Tcl/Tk ansehen:

Das hört sich auch alles recht gut an.
Passt da das "Glade" hier dazu oder wie werden
die Oberflächen dann gemacht?

Matthias

von Tickle Tee Kay (Gast)


Lesenswert?

Das "Tk" in Tcl/Tk ist für die GUI.

von Mitstreiter (Gast)


Lesenswert?

Schau mal in richtung Qt -> ist eine Top Sache, Grafischer editor für 
GUIs, portabel (Linux/Mac/Windows)

Sehr einfach zum einsteigen und sehr mächtig wenn man dann etwas Ahnung 
hat!

http://qt.nokia.com/

von Matthias W. (matt007)


Lesenswert?

Mitstreiter schrieb:
> Schau mal in richtung Qt -> ist eine Top Sache, Grafischer editor für
> GUIs, portabel (Linux/Mac/Windows)

Danke für den Hinweis !

Matthias

von Maik F. (sabuty) Benutzerseite


Lesenswert?

High Performer schrieb:
> Ist C# nicht inzwischen
> deutlich aus dem Blickfeld der Entwickler gerückt?

Das wäre mir neu, in der Business Software Entwicklung gibt es natürlich 
gespaltene Lager, aber durchaus auch welche, die die Strategie Java fürs 
Backend (Portabibilität ohne GUI) und .Net fürs Frontend (in der Praxis 
eh meistens Windows) vefolgen.

Aber um sowas geht's hier ja nicht.

von Sebi (Gast)


Lesenswert?

Hallo,
ich komme eher aus der C-Programmierung aber GUIs, vor allem zur 
Kommunikation mit nem µC, mache ich mit VB 2008. Klar ist die Syntax 
ungewohnt aber die lernt man schnell.

Qt habe ich auch mal probiert. Damit hat man sehr sehr viele 
Möglichkeiten. Kommt halt darauf an was du machen möchtest. Um schnell 
und einfach ne GUI zu bauen, die mit nem µC kommuniziert oder einfach 
was berechnet würd ich VB 2008 nehmen.
Sollen es GUIs for SmartPhones oder aufwändigere Arbeiten (z.B. eigener 
Audio-Player) sein würd ich QT nehmen.

Musste halt ma probieren. Aber die eine Sprache für alles gibt es meiner 
Meinung nach nicht

von Matthias W. (matt007)


Lesenswert?

Sebi schrieb:
> GUIs, vor allem zur
> Kommunikation mit nem µC, mache ich mit VB 2008.

ok. Davon wollte ich ja eher weg. Obwohl ich VB2008
ja gar nicht kenne. Freie Software wäre da Gambas.
Das scheint jedoch kaum einer zu kennen . . .

> Qt habe ich auch mal probiert. Damit hat man sehr sehr viele
> Möglichkeiten. Kommt halt darauf an was du machen möchtest. Um schnell
> und einfach ne GUI zu bauen, die mit nem µC kommuniziert oder einfach
> was berechnet würd ich VB 2008 nehmen.

schnell und einfach ist schon das Ziel.
Dazu gehört auch das Reinfinden wenn man es
eher selten mal macht.

> Sollen es GUIs for SmartPhones oder aufwändigere Arbeiten (z.B. eigener
> Audio-Player) sein würd ich QT nehmen.

sowas kompliziertes habe ich eher nicht vor.

Matthias

von Thorben (Gast)


Lesenswert?

Qt

von Lukas K. (carrotindustries)


Lesenswert?

Glade ist ausschließlich für Gtk2 und damit auch Portabel.
Richtig erkannt, Glade ist von der Programmiersprache unabhängig und du 
hast die GUI automatisch vom Programm getrennt.
Was Glade im Zusammenhang mit Python anbetrifft, kann ich dir gerne 
weiterhelfen.

von Matthias W. (matt007)


Lesenswert?

Luk4s K. schrieb:
> Glade ist ausschließlich für Gtk2 und damit auch Portabel.
> Richtig erkannt, Glade ist von der Programmiersprache unabhängig und du
> hast die GUI automatisch vom Programm getrennt.
> Was Glade im Zusammenhang mit Python anbetrifft, kann ich dir gerne
> weiterhelfen.

Du favorisiert Python?

Matthias

von Borislav B. (boris_b)


Lesenswert?

Also auf diese Anfrage

"Visual Basic empfand ich genial, was das Erstellen
der Oberfläche anbelangte. Die Sprache selbst fand ich
grauslich. Wenn es da eine C-ähnliche Sprache
gegeben hätte . . ."

hin kann man eigentlich nur Visual C# (Express) empfehlen. C# und .NET 
sind extrem einfach zu lernen und sehr komfortabel. Man kommt schnell zu 
hervorragenden Ergebnissen...

EMPFEHLUNG!

von Empfehler (Gast)


Lesenswert?

Qt4 ist doch da das Mittel der Wahl, wenn es C/C++ sein soll.

Grafischer Editor, portabel (Win, Linux, OSX), frei, ...

von Matthias W. (matt007)


Lesenswert?

Boris B. schrieb:
> hin kann man eigentlich nur Visual C# (Express) empfehlen. C# und .NET
> sind extrem einfach zu lernen und sehr komfortabel. Man kommt schnell zu
> hervorragenden Ergebnissen...

Danke Boris !

Dazu fand ich:
Das OpenSource-Projekt dotGNU entwickelt eine freie .NET-Version 
inklusive C#-Compiler und beherrscht Windows.Forms. Das 
OpenSource-Projekt mono entwickelt eine freie und plattformunabhängige 
.NET-Version inklusive C#-Compiler.

Ein Buch solls auch geben:
Klaus Fahnenstich, Rainer G. Haselier: Richtig einsteigen: Programmieren 
lernen mit Visual C# 2008. Microsoft Press

Matthias

von Matthias W. (matt007)


Lesenswert?

Empfehler schrieb:
> Qt4 ist doch da das Mittel der Wahl, wenn es C/C++ sein soll.
> Grafischer Editor, portabel (Win, Linux, OSX), frei, ...

Da sah ich auch ein Buch:
Qt 4 - Einführung in die Applikationsentwicklung
http://www.qt4-buch.de/

Matthias

von Borislav B. (boris_b)


Lesenswert?

Für was hast du dich denn nun entschieden?
Das klingt so, als ob du ALLE Vorschläge verwenden möchtest ^^

von Eugen (Gast)


Lesenswert?

Matthias W. (matt007) schrieb:

> Dazu fand ich:
> Das OpenSource-Projekt dotGNU entwickelt eine freie .NET-Version
> inklusive C#-Compiler und beherrscht Windows.Forms. Das
> OpenSource-Projekt mono entwickelt eine freie und plattformunabhängige
> .NET-Version inklusive C#-Compiler.

Löblich anzuerkennen, aber doch erst in der Kinderschuhen bzw. gerade 
mal bei Version 0.1. Da wäre ich vorsichtig und würde warten bis das 
gereift ist. Das wird sicherlich noch einige Zeit dauern. MS ist 
inzwischen bei Version 4.0 angelangt und selbst 2.0 war bereits ein sehr 
ausgereiftes Framework. 2.0 ist zugleich die VErsion die auch noch W2k 
unterstützt und langt für vieles was man braucht. Außerdem sind die 
kostenfreien Visual Studio Express Versionen sehr schön gelungen. ;)

von Matthias W. (matt007)


Lesenswert?

Boris B. schrieb:
> Für was hast du dich denn nun entschieden?
> Das klingt so, als ob du ALLE Vorschläge verwenden möchtest ^^

Hallo Boris, alle nehmen wird den Rahmen sprengen.
Mein letztes Projekt mit dem VB5 liegt ein paar
Jahre zurück.

Eine Entscheidung ist noch nicht gefallen.
Momentan suche ich noch nach Argumenten.
Wenn ich einen bezahlten Auftrag habe muss
ich die Toolkette nehmen die hier Nutzen
verspricht. Ggf. muss ich mich auch nach
Wünschen richten. Argumente sind eine gute Basis.

Matthias

von Hallöchen (Gast)


Lesenswert?

Matthias W. schrieb:
> Boris B. schrieb:
>> Für was hast du dich denn nun entschieden?
>
> Eine Entscheidung ist noch nicht gefallen.
> Momentan suche ich noch nach Argumenten.
>
>
> Matthias

Und wie hast Du dich entschieden?

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Für kleine Tools und schnell mal eine GUI, verwende
ich immer noch gerne mein XProfan. Ist Basic/Pascal ähnlich
und leicht zu erlernen. Es hat zwar kein Werkzeug, um GUI's
zu modellieren, ähnlich wie VS-Basic, aber mit den Create-Funktionen
geht das fast genauso schnell, eigene Buttons, List/Gridboxen
u.v.m. zu erstellen.
Ist von der Installation her sehr schlank, und hat alles dabei mit
der mitgelinkten Runtime. Keine zusätzlichen DLL's o.ä.
Die ausführbaren Programm können sich mit ca. 1 MB auch sehen
lassen.

Da genügen auch schon die als Freeware freigegeben älteren
Versionen oder auch an Version X3 angelehnt FreeProfan 32 oder
64 Bit.

Download unter
http://xprofan.de/start.htm
oder auch hier
https://xprofan.net/intl/de/xprofan/

: Bearbeitet durch User
von Matthias W. (matt007)


Lesenswert?

Hallöchen schrieb:
> Und wie hast Du dich entschieden?

ich habe PureBasic probiert. Ideal erscheint das jedoch auch nicht. 
Etwas in der Art HP-Basic, HT-Basic, VB6-Oberfläche + C-Sprache wäre 
mein Favorit gewesen.

von Matthias W. (matt007)


Lesenswert?

Heinz B. schrieb:
> Ist von der Installation her sehr schlank, und hat alles dabei mit
> der mitgelinkten Runtime.

Danke für den Hinweis Heinz !

von Wolfgang Höhne (Gast)


Lesenswert?

. Net ist im übrigen auch open source... Siehe 
https://dotnet.microsoft.com/

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Hier ein Beispiel, wie einfach das in Profan geht :
1
Declare btn1%, btn2%, ende%
2
Window 800, 600
3
btn1% = Create("Button", %HWnd, "Hallo", 10, 10, 60, 25)
4
btn2% = Create("Button", %HWnd, "Ende", 100, 10, 60, 25)
5
ende% = 0
6
7
WhileNot ende%
8
   WaitInput
9
   If Clicked(btn1%)
10
       MessageBox("Hallo, wie geht\nes dir ?", "Info", 0)
11
   ElseIf Clicked(btn2%)
12
       ende% = 1
13
   EndIf
14
   Case %Key = 2 : ende% = 1 'Schließen-kreuz abfangen
15
EndWhile
16
End
Ein Fenster, zwei Buttons und eine Ereignisschleife.
Kein unnötiges Geraffel und Finger verbiegen.

: Bearbeitet durch Admin
von netdieter (Gast)


Lesenswert?

High Performer schrieb:
>>Aber nur wenn du eine hässliche und langsame GUI haben willst die
> noch
>>langsamer wird wann man über Terminalserver arbeitet und dafür
>>mindestens 50Mb ram braucht.
>
> Das dürfte schon seit ca. >5 Jahren nicht mehr so sein.

Swing wurde inzwischen von JavaFX abgeköst.

von Matthias W. (matt007)


Lesenswert?

Heinz B. schrieb:
> Hier ein Beispiel, wie einfach das in Profan geht

Danke Heinz !

von Chregu (Gast)


Lesenswert?

Ich bin von Profan auf PureBasic umgestiegen, will nichts anderes mehr! 
Sauber und schnell, kostet halt ein bisschen was...

Gruss Chregu

von Matthias W. (matt007)


Lesenswert?

Chregu schrieb:
> Ich bin von Profan auf PureBasic umgestiegen, will nichts anderes mehr!

Danke für den Beitrag !

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

PureBasic ist zwar auch gut, aber da stört mich einiges.
- Bugs, die monatelang oder auch gar nicht gefixt werden.
- die Abfragestruktur in der Ereignisschleife
  Event, Eventgadget, gadgetID usw.
  -> Zuviel verschachtelt, um eine Aktion abzufragen.
     Deshalb sehr Anfänger - unfreundlich.
Profan ist zwar nur eine Interpretersprache, aber gerade für
kleinere Programme und Tools interessant. Auf die Schnelligkeit
kommt es mir dabei nicht an. Compilert, merkt man da kein
Unterschied.

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Der Thread ist zwar schon älter, aber durchaus für viele aktuell.

Heinz B. schrieb:
> Hier ein Beispiel, wie einfach das in Profan geht :
>
1
> Declare btn1%, btn2%, ende%
2
> Window 800, 600
3
> btn1% = Create("Button", %HWnd, "Hallo", 10, 10, 60, 25)
4
> btn2% = Create("Button", %HWnd, "Ende", 100, 10, 60, 25)
5
> ende% = 0
6
> 
7
> WhileNot ende%
8
>    WaitInput
9
>    If Clicked(btn1%)
10
>        MessageBox("Hallo, wie geht\nes dir ?", "Info", 0)
11
>    ElseIf Clicked(btn2%)
12
>        ende% = 1
13
>    EndIf
14
>    Case %Key = 2 : ende% = 1 'Schließen-kreuz abfangen
15
> EndWhile
16
> End
17
>
> Ein Fenster, zwei Buttons und eine Ereignisschleife.
> Kein unnötiges Geraffel und Finger verbiegen.

Eine gute Idee - an Beispielen sieht man am besten, ob eine Sprache zu 
einem passt. Und hier das Ganze nochmal in Tcl/Tk:
1
package require Tk
2
wm geometry . 800x600
3
button .b1 -text "Hallo" -command {tk_messageBox -message "Hallo, wie geht\nes dir ?" -title Info}
4
button .b2 -text "Ende" -command exit
5
place .b1 -x 10 -y 10 -width 60 -height 25
6
place .b2 -x 100 -y 10 -width 60 -height 25

von 🐧 DPA 🐧 (Gast)


Lesenswert?

Eww, hartcodierte Absolute Positionen und Grössen in Pixel... Ist sowas 
immernoch Zeitgemäss im GUI umfeld?

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

🐧 DPA 🐧 schrieb:
> Eww, hartcodierte Absolute Positionen und Grössen in Pixel... Ist sowas
> immernoch Zeitgemäss im GUI umfeld?

Nein, aber es sollte ein identisches Beispiel sein :-)

Wenn es nur für einen Schnellschuss für eigene Verwendung sein soll oder 
das nur in einer fixen Größe (Maschinensteuerung etc.) läuft, spricht 
auch nichts dagegen.

Ich weiss nicht, wie es unter Profan funktioniert, aber unter Tk gibt es 
außer "place" noch zwei andere Manager, die eine fein abgestimmte und 
sehr flexible Skalierbarkeit erlauben.

von Matthias W. (matt007)


Lesenswert?

Heinz B. schrieb:
> Profan ist zwar nur eine Interpretersprache, aber gerade für
> kleinere Programme und Tools interessant.

Danke dafür Heinz !

von Matthias W. (matt007)


Lesenswert?

Chris D. schrieb:
> Eine gute Idee - an Beispielen sieht man am besten, ob eine Sprache zu
> einem passt. Und hier das Ganze nochmal in Tcl/Tk

vielen Dank für das schöne Beispiel Chris !

kennst Du zu Tcl/Tk ein einfaches Tutorial wo man sieht was an 
Installation nötig ist und wie man rasch Erfolg mit einfachen Beispielen 
haben kann?

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

🐧 DPA 🐧 schrieb:
> Eww, hartcodierte Absolute Positionen und Grössen in Pixel... Ist sowas
> immernoch Zeitgemäss im GUI umfeld?

Natürlich kann man das auch anders machen.
XProfan bzw. Profan bietet hierfür eine Menge Systemvariablen
an, die entweder beim Start eines Programmes automatisch
gesetzt werden oder auch beim Erzeugen eines Standardfensters
ausgelesen werden : %Width, %Height, %WinTop, %WinBottom,
%WinRight, %WinLeft, %DeskTop %MaxX, %MaxY usw.
Auf diese kann jederzeit zugegriffen werden. Somit ist es leicht
möglich, anhand der Bildschirmauflösung sein Fenster bzw.
Dialogelemente zu platzieren bzw. Größe zu bestimmen.

Im obigen Beispiel habe ich das der Einfachheit nicht gemacht
und um die Interessierten nicht zu viel zu belasten.

Sonst sähe es wiederum sehr cryptich aus.
Hier mal die Tabelle aller System-Variablen :
1
$AppDataDir Verzeichnis für Anwendungsdaten
2
%BitsPixel Farbtiefe des Desktops in Bits pro Pixel
3
%BmpB Farbtiefe des zuletzt geladenen Bildes in Bits pro Pixel
4
&BmpCol Farbanzahl des zuletzt geladenen Bildes
5
!BmpF Vergrößerungsfaktor des zuletzt geladenen Bildes
6
%BmpX Breite des zuletzt geladenen Bildes
7
%BmpY Höhe des zuletzt geladenen Bildes
8
%Button Wert des zuletzt betätigten Buttons
9
%ChildMessage Message nach Klick auf untergeordnetes Element
10
%CsrLin Augenblickliche Zeile im simulierten Textmodus
11
$CurrentDir Das aktuelle Arbeitsverzeichnis
12
%cyCaption Höhe der Titelleiste
13
%cyMenu Höhe der Menüzeile
14
%dbDeleted Löschkennzeichen des aktuellen Datensatzes
15
%dbEoF End-Of-File-Kennzeichen der aktiven Tabelle
16
%dbFCount Zahl der Felder eines Satzes der aktiven Tabelle
17
%dbFDecs Dezimalstellen des aktuellen Feldes
18
%dbFLen Länge des aktuellen Feldes
19
$dbFName Name des aktuellen Feldes
20
%dbFNumber Nummer des aktuellen Feldes
21
$dbFType Typ des aktuellen Feldes
22
%dbHeader Länge des Headers der aktiven Tabelle
23
$dbLUpdate Datum der letzten Änderung der Tabelle (Jahr 2-stellig)
24
$dbLUpdate4 Datum der letzten Änderung der Tabelle (Jahr 4-stellig)
25
%dbMemo Kennzeichen ob Tabelle Memo-Felder enthält
26
&dbRecCount Anzahl der Datensätze der Tabelle
27
&dbRecNo Nummer des aktuellen Datensatzes
28
%dbRecSize Länge eines Datensatzes der Tabelle
29
%dbVersion Version der geöffneten Tabelle
30
%DDEWin Handle des DDE-Servers
31
%Desktop Handle des Hintergrundfensters
32
&DlgProc Prozeduradresse eines mit Create("Dialog" erzeugten Fensters
33
&DlgWProc Prozeduradresse eines mit Create("Window" erzeugten Fensters
34
%DOS16 Liefert 1 in der 16-Bit DOS-Version von Profan zurück (Entwicklung seit Profan 4.0 eingestellt)
35
%DOS32 Liefert 1 in der 32-Bit DOS-Version von Profan zurück
36
$DosVer Ermittelt die DOS-Version
37
$Download Ergebnis der Funktion DownLoadFile()
38
$Drive Aktuelles Laufwerk, ohne Pfadangabe
39
%DropDownID ButtonI-ID des gedrückten DropDownPfeils
40
$ErrFile Datei, in der der Fehler auftrat
41
%ErrLine Zeile, in der der Fehler auftrat
42
%ErrNumber Enthält die Nummer des zuletzt aufgetretenen Fehlers
43
%Error Der zuletzt aufgetretene Fehlercode
44
%ErrorLevel Augenblicklicher Errorlevel
45
$ErrStr Zusätzliche Informationen zum Fehler
46
%Font Handle auf die mit UseFont eingestellte Schrift
47
%FTPConnected Kennzeichen ob FTP-Verbindung besteht
48
%FTPRunning Zeigt an, ober der Down oder Upload im Hintergrund noch läuft
49
%FTPStatus Status-/Fehlernummer der letzten FTP-Funktion
50
$FTPStatus Status-/Fehlertext der letzten FTP-Funktion
51
%GetCount Anzahl der Einträge in der ListBox-Liste
52
%GetCurSel Nummer des in einer Listbox gewählten Eintrages
53
%GetFocus Handle des aktiven Fensterobjektes
54
%GetInputState Augenblicklicher Eingabestatus
55
$GetInput Der zuletzt mit der Funktion Input$ eingegebene Text
56
$GetText Der zuletzt in einem Listbox-Dialog ausgewählte Text
57
&GetTickCount Anzahl von Millisekunden an seit Windows gestartet wurde
58
%hDC Display-Context des Hauptfensters
59
%hDC2 Display-Context der Hauptfensterkopie
60
%hInstance Instanz-Handle des aktuell laufenden XProfan-Programms
61
&hMenu Handle des Menüs des Hauptfensters
62
&hPaintWin Das Fenster/Objekt auf das mit StartPaint gezeichnet wird
63
&hWnd Handle des Hauptfensters des XProfan-Programms
64
%hWnd Handle des Hauptfensters des XProfan-Programms (alte Schreibwerise)
65
%Input Der zuletzt mit Input eingegebene Integer-Wert
66
!Input Der zuletzt mit Input eingegebene Float-Wert
67
$Input Der zuletzt mit Input eingegebene String
68
&Input Der zuletzt mit Input eingegebene LongInt-Wert
69
%IOResult Ergebnis einer Dateioperation oder einer Directory-Suche
70
%ItemId Zuletzt angewähltes Dialogelement (DialogID)
71
%Key ANSI-Code der zuletzt gedrückten Taste
72
&LastFocus aktives Handle beim letzten WaitInput
73
%LastMessage Message fest des letzten WaitInput
74
%LFN Kennziffer ob lange Dateinamen verwandt werden
75
%Linux Liefert 1 bei Linux zurück
76
%Loading Gibt an, ob der Download abgeshlossen ist oder noch läuft
77
&Loop Zählvariablen in einer WhileLoop-Schleife
78
&lParam Meldungsspezifische Daten einer Message
79
$Match Ergebnisstring einer Suche mit Regulärem Ausdruck
80
%MatchLen Ergebnislänge einer Suche mit Regulärem Ausdruck
81
%MatchPos Position des Ergebnisses einer Suche mit Regulärem Ausdruck
82
%MaxX Horizontale Auflösung des Bildschirmes
83
%MaxY Vertikale Auflösung des Bildschirmes
84
%MCIError Zuletzt gemeldeter Fehler beim Senden eines MCI-Strings
85
&MemDC Devicecontext der Memory-Bitmap
86
%MenuItem Identifikationsnummer des zuletzt angewählten Menüpunktes
87
%Message Nummer der letzten aufgetretenen Message
88
%MfX Breite des zuletzt geladenen Metafiles
89
%MfY Höhe des zuletzt geladenen Metafiles
90
%MouseKey Zuletzt betätigte Maustaste
91
%MousePressed Kennziffer der augenblicklich betätigten Taste
92
%MouseX Aktuelle X-Position der Maus
93
%MouseY Aktuelle Y-Position der Maus
94
&MWnd Zielfenster der letzten Message
95
%MWnd Zielfenster der letzten Message (alte Schreibweise)
96
%NotifyCode Code des aufgetretenen Ereignisses
97
&NotifyWnd Handle des Dialogelementes, das %NotifyCode sendete
98
!Now Aktueller Zeipunkt im XProfan-/Delphi-Format
99
%oGLError Der letzte aufgetretene Fehler bei OpenGL-Funktionen
100
%OS2 Liefert 1 bei der OS/2-Version von Profan zurück (Entwicklung seit Profan 4.0 eingestellt)
101
%ParCount Anzahl der übergebenen Kommandozeilen-Parameter
102
%PCount Anzahl der übergebenen Parameter des letzten Prozeduraufrufes
103
&PDC Device-Context des Druckers
104
%PeekMessage Kennziffer ob eine Message vorliegt
105
&Pid Prozess-ID des laufenden Programms
106
%Pos Augenblickliche Spalte im simulierten Textmodus
107
%Printing Kennziffer ob Druckvorgang aktiv ist
108
$ProfVer Aktuelle XProfan-Version
109
$ProgDir Verzeichnis, in dem die Exedatei gestartet wurde
110
%ProgEnd Position in der Datei, wo das Kompilat aufhört und die Daten beginnen
111
%ScanKey Scancode (virtueller Code) der zuletzt gedrückten Taste
112
&sLParam Meldungsspezifische Daten der Subclassing-Message
113
%sMessage Meldungsnummer der Subclassing-Message
114
&SQLCount Anzahl der vom letzten SQL-Befehl bearbeiteten Datensätze
115
&SQLDBC Enthält das Handle der gerade aktuellen Datenbankverbindung
116
&SQLENV Enthält das Environmenthandle der aktuellen ODBC-Session
117
$SQLError Fehlertext des letzten SQL-Fehlers
118
&sWnd Zielfenster der Subclassing-Message
119
&sWParam Meldungsspezifische Daten der Subclassing-Message
120
$SysPath Windows-System-Pfad
121
$TempDir Aktuelles temporäres Verzeichnis
122
%TextHight Texthöhe nach DrawText
123
&UlParam Wert von lParam der Usermessage
124
%UMessage Kennziffer ob Usermessage aufgetreten, ist
125
$UserDir Verzeichnis für Benutzerdaten
126
&UWnd Zielfenster der Usermessage
127
&UwParam Wert von wParam der Usermessage
128
%Win16 Liefert 1 bei der 16-Bit Windows-Version von Profan zurück (Entwicklung seit Profan 6.5 eingestellt)
129
%Win32 Liefert 1 bei der 32-Bit Windows-Version von XProfan zurück
130
%WinBottom Y-Koordinate des unteren Fensterrandes
131
%WindowStyle Aktueller XProfan-Fensterstil
132
&WinDProc Prozeduradresse eines Hauptfensters mit Dialogstil
133
%WinError Der zuletzt aufgetretene Windowsfehler
134
%WinLeft X-Koordinate des linken Fensterrandes
135
$WinPath Windows-Pfad
136
&WinProc Prozeduradresse eine Hauptfensters
137
%WinRight X-Koordinate des rechten Fensterrandes
138
%WinTop Y-Koordinate des oberen Fensterrandes
139
$WinVer Ermittelt die Windows-Version
140
%wmNotify Kennziffer ob Message wm_Notify aufgetreten ist
141
%wmPaint Kennziffer ob Ereignis wm_Paint ausgelöst wurde
142
%wmTimer Kennziffer ob der Timer mit SetTimer eingestellt wurde
143
&wParam Meldungsspezifische Daten einer Message

: Bearbeitet durch User
von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

Matthias W. schrieb:
> Chris D. schrieb:
>> Eine gute Idee - an Beispielen sieht man am besten, ob eine Sprache zu
>> einem passt. Und hier das Ganze nochmal in Tcl/Tk
>
> vielen Dank für das schöne Beispiel Chris !
>
> kennst Du zu Tcl/Tk ein einfaches Tutorial wo man sieht was an
> Installation nötig ist und wie man rasch Erfolg mit einfachen Beispielen
> haben kann?

Ich hatte damals ein echtes Buch, um die Grundlagen zu erlernen - ist 
aber auch schon 25 Jahre her und vieles wird mittlerweile leicht anders 
gemacht.

Immer eine gute Anlaufstelle ist: www.tcl.tk
Dort findet man alles rund um Tcl/Tk, u.a. ein sehr gutes Wiki mit 
vielen Beiträgen sowie den gesamten Befehlssatz.

Auf die Schnelle habe ich hier eine Seite mit Links auf viele Tutorien 
gefunden:
https://wiki.tcl-lang.org/page/Online+Tcl+and+Tk+Tutorials

Das hier sieht sehr gut aus, ist aktuell und deutschsprachig:
http://tcltk.info/buch.html

Nur als Info:
Tcl ist die eigentliche Skriptsprache, die man natürlich auch ohne 
grafische
Oberfläche verwenden kann.
Tk ist die Erweiterung für das Erstellen der grafischen Oberflächen 
(daher wird sie in meinem Beispiel auch explizit mit "package" 
dazugeladen)

Ansonsten:
Tcl/Tk ist gerade in Hinblick auf grafische Oberflächen sehr einfach zu 
erlernen. Die Programmtexte sind quasi selbsterklärend (sieht man ja 
oben).
Wichtig dabei ist nur, dass man sich die Arbeitsweise der sog. 
"Geometriemanager" (im Beispiel ist es der place-Geometriemanager) 
einmal in Ruhe klar macht.

Die Installation ist sehr einfach - für Linux etc. gibt es in jeder 
Distribution Pakete. Unter Windows muss man das mWn auch einfach nur aus 
einer exe heraus installieren (ist aber schon ewig her, dass ich das mal 
gemacht habe).

Der Aufruf eines Programms erfolgt dann üblicherweise mit "tclsh 
name.tcl".

Compilieren ist nicht nötig, da Skriptsprache (allerdings mit internem 
Bytecompiler).

Tcl/Tk steht unter der BSD-Lizenz, ist also nochmal "freier" als unter 
GPL, und das gibt es für fast alle Plattformen (Mac, Win, Unixe etc.) - 
hier bei uns sogar unter AVR/STM32, weil ich die Tk-Schnittstelle 
entsprechend angepasst habe.

: Bearbeitet durch Moderator
von Matthias W. (matt007)


Lesenswert?

Chris D. schrieb:
> Compilieren ist nicht nötig, da Skriptsprache

vielen Dank Chris !

von Chregu (Gast)


Lesenswert?

Heinz B. schrieb:
> Profan ist zwar nur eine Interpretersprache,

V11.2a ist ist jetzt auch Freeware:
http://xprofan.de/start.htm

Heinz B. schrieb:
> - die Abfragestruktur in der Ereignisschleife
>   Event, Eventgadget, gadgetID usw.
>   -> Zuviel verschachtelt, um eine Aktion abzufragen.

Ja stimmt, ist äusserst mühsam. Bis mal die Grundstruktur erstellt ist, 
danach geht's. Network-Event habe ich bis heute nicht sauber zum 
funktionieren gebracht.

Aber sonst: läuft alles viel schneller und sauberer, als es jemals mit 
XProfan und ProSpeed-DLL ging...

Gruss Chregu

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Chregu schrieb:
> Aber sonst: läuft alles viel schneller und sauberer, als es jemals mit
> XProfan und ProSpeed-DLL ging...

Das ist ja mal klar. PureBasic erzeugt reinen ASM-Output.
Und Sprites & Co. sind nunmal eine ganz andere Liga.
Aber ansonsten, wenn es nur um GUI oder sonstige kleine
Dinge geht, merkt man das Plus an Geschwindigkeit nicht.
Und außerdem kann man ab Version X4 auch mit ASM nachhelfen.

Und das 'sauberer' sei mal dahin gestellt, wenn ich so die
ganzen Bugs über die Jahre betrachte, die nicht oder nur
ganz rudimentär gefixt wurden. Auf der anderen Seite sind
bei PB auch 3 Betriebssysteme (WIN, LINUX, MAC) zu bedienen.
Da nenne ich auch nur mal Spiderbasic mit seinem Cordowa -
Untersatz.

: Bearbeitet durch User
von Jemand (Gast)


Lesenswert?

Matthias W. schrieb:
> Luk4s K. schrieb:
>> Glade ist ausschließlich für Gtk2 und damit auch Portabel.
>> Richtig erkannt, Glade ist von der Programmiersprache unabhängig und du
>> hast die GUI automatisch vom Programm getrennt.
>> Was Glade im Zusammenhang mit Python anbetrifft, kann ich dir gerne
>> weiterhelfen.
>
> Du favorisiert Python?

Natürlich, was sonst? Extrem einfach und gleichzeitig extrem 
leistungsfähig, was will der Entwickler mehr? Schau mal in die 
(natürlich unvollständige) Liste von Python-Software, wofür das alles 
benutzt wird (auch kommerziell etc.):

https://en.wikipedia.org/wiki/List_of_Python_software

Wenn es von AutoDesk, Goldman Sachs, die NASA, Youtube, Reddit, 
Instagram, Rosneft, Corel und ein paar anderen der größten und 
erfolgreichsten Unternehmen dieser Welt bevorzugt wird und obendrein die 
beliebteste Allzweckskriptsprache der Welt ist... Dann wird es wohl 
nicht ganz verkehrt sein, oder? ;-)

von BobbyX (Gast)


Lesenswert?

Heinz B. schrieb:
> 🐧 DPA 🐧 schrieb:
>> Eww, hartcodierte Absolute Positionen und Grössen in Pixel... Ist sowas
>> immernoch Zeitgemäss im GUI umfeld?
>
> Natürlich kann man das auch anders machen.
> XProfan bzw. Profan bietet hierfür eine Menge Systemvariablen
> an, die entweder beim Start eines Programmes automatisch
> gesetzt werden oder auch beim Erzeugen eines Standardfensters
> ausgelesen werden : %Width, %Height, %WinTop, %WinBottom,
> %WinRight, %WinLeft, %DeskTop %MaxX, %MaxY usw.
> Auf diese kann jederzeit zugegriffen werden. Somit ist es leicht
> möglich, anhand der Bildschirmauflösung sein Fenster bzw.
> Dialogelemente zu platzieren bzw. Größe zu bestimmen.

Wenn ich so etwas lese bekomme ich Krämpfe, geschweige wenn ich so eine 
GUI benutzen oder programmieren müsste. Du willst also deine Applikation 
etwa so schrieben:

if(Width>xxxx and Height >yyyy)
   mach ein Layout
else if(Width>zzzz and Height >qqqq)
   mach anderes Layout
usw.... usf....

Und was ist mit den Fonts? Glaubst du, dass jeder Arial 11 benutzt?

Lerne was gescheites lieber, Qt ist sehr gut was das angeht.

von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Matthias W. schrieb:
> Wie kann man denn rasch ohne großen Lernaufwand
> eine Oberfläche zurechtzuzimmern?

Ist immer wieder interessant, was manche so möchten,
ohne großen Lernaufwand zu betreiben.

BobbyX schrieb:
> Wenn ich so etwas lese bekomme ich Krämpfe, geschweige wenn ich so eine
> GUI benutzen oder programmieren müsste. Du willst also deine Applikation
> etwa so schrieben:
>
> if(Width>xxxx and Height >yyyy)
>    mach ein Layout
> else if(Width>zzzz and Height >qqqq)
>    mach anderes Layout
> usw.... usf....

Daran sehe ich schon, daß das nichts wird.
Wer schon die maximale Bildschirm breite - und Höhe mit
> abfragt ? Größer was denn bitte ?
Mit %MaxX und %MaxY hat man ja schon die max. Bildschirmauflösung.
Und mit etwas Rechnen hast du immer ein mittiges Fenster, egal
welche Auflösung.

von S. R. (svenska)


Lesenswert?

Chris D. schrieb:
> Tcl/Tk ist gerade in Hinblick auf grafische Oberflächen
> sehr einfach zu erlernen. Die Programmtexte sind quasi
> selbsterklärend (sieht man ja oben).

Mir ist Tcl zu seltsam, aber Tk lässt sich (als Tkinter) auch prima mit 
Python benutzen. Man ist also keineswegs auf eine Programmiersprache 
festgelegt. Die Geometriemanager sollte man trotzdem verstehen, sonst 
bekommt man unsichtbare Elemente und wundert sich, dass nichts passiert.

Vor ein paar Jahren hatte ich auch mal Gtk2 mit den Perl-Bindings 
benutzt, das war auch sehr angenehm. Deutlich angenehmer als in C.

von Chregu (Gast)


Lesenswert?

Jemand schrieb:
> Wenn es von AutoDesk, Goldman Sachs, die NASA, Youtube, Reddit,
> Instagram, Rosneft, Corel und ein paar anderen der größten und
> erfolgreichsten Unternehmen dieser Welt bevorzugt wird und obendrein die
> beliebteste Allzweckskriptsprache der Welt ist... Dann wird es wohl
> nicht ganz verkehrt sein, oder? ;-)

Doch.

Gruss Chregu

von Chris D. (myfairtux) (Moderator) Benutzerseite


Lesenswert?

S. R. schrieb:
> Chris D. schrieb:
>> Tcl/Tk ist gerade in Hinblick auf grafische Oberflächen
>> sehr einfach zu erlernen. Die Programmtexte sind quasi
>> selbsterklärend (sieht man ja oben).
>
> Mir ist Tcl zu seltsam

Hehe, mir Python ;-)

> aber Tk lässt sich (als Tkinter) auch prima mit
> Python benutzen. Man ist also keineswegs auf eine Programmiersprache
> festgelegt. Die Geometriemanager sollte man trotzdem verstehen, sonst
> bekommt man unsichtbare Elemente und wundert sich, dass nichts passiert.

Ja, genau, das kann man auch unter Python nutzen. Hätte ich noch 
dazuschreiben sollen.

Allerdings verschenkt man sich da die Tonnen an Tk-Skripten und die 
Tk-Lib, die für Tcl/Tk existieren bzw. muss diese anpassen.

Und es fühlt sich nicht nach "aus einem Guss" an. Tk integriert sich 
beim Schreiben einfach sehr schön in Tcl (verständlich, es war ja bis 
7.6 richtig integriert ;-), aber das ist natürlich auch Geschmackssache.

Tk ist auf jeden Fall sehr ausgereift und Programme - selbst als 
Stand-Alone-Executable - sehr klein.

Ergänzung: Gab es nicht auch eine App als Wrapper, mit der man 
Tcl/Tk-Oberflächen für Smartphones etc. basteln konnte?

: Bearbeitet durch Moderator
von S. R. (svenska)


Lesenswert?

Chris D. schrieb:
> Allerdings verschenkt man sich da die Tonnen an Tk-Skripten und die
> Tk-Lib, die für Tcl/Tk existieren bzw. muss diese anpassen.

Magst du ein bisschen ausführen, was einem da verloren geht? Ich habe 
bisher mit Tkinter nur sehr wenig gemacht und daher wenig Erfahrung.

Chris D. schrieb:
> Und es fühlt sich nicht nach "aus einem Guss" an.

Das ist leider wahr. Im Gegensatz zu den großen Frameworks wie GTK und 
Qt ist Tkinter allerdings ein Standardbaustein für Python, was für mich 
ein Grund für die Benutzung war. Ich stehe nicht besonders auf 
Abhängigkeiten, wenn es nicht sein muss.

von Matthias S. (da_user)


Lesenswert?

Wolfgang Höhne schrieb:
> . Net ist im übrigen auch open source... Siehe
> https://dotnet.microsoft.com/

Mittlerweile.
2010 war das noch nicht so...

Zugegeben: ich bin auch erst drübergestolpert, als ich die Empfehlung 
für das Visual Studio 2010 Express gelesen habe...

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.