 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 11.07.2010, 14:17 Titel: OpenWIZ-GUI |
|
|
Hi
Ich habe eine neue, völlig unbrauchbare GUI geschrieben.
Ich habe sie "OpenWIZ-GUI" gennant, da sie ein Nachbau der in QBasic geschriebenen "WIZ-GUI" ist.
Folgende Funktionen sind enthalten:
-Fenster
-Buttons
-Textboxen
Das ganze hat gerade einmal 79 Zeilen Code
Hier ist ein Screen der beiliegenden Demo:
Hier der Download(61,8 KB; Demo liegt bei):
http://www.freebasic-portal.de/dlfiles/141/GUI.zip
Viel Spaß(den ihr mit Sicherheit nicht haben werdet)  |
|
Nach oben |
|
 |
-schumi-

Anmeldungsdatum: 28.10.2009 Beiträge: 131 Wohnort: Südbayern
|
Verfasst am: 11.07.2010, 15:07 Titel: |
|
|
Hi
Also ich find das Teil gar nicht so schlecht
Zitat: | Das ganze hat gerade einmal 79 Zeilen Code |
Das zeugt von einem Konstruktiven Programmierstil
Aber was mir echt abgegangen ist war, dass man die Fenster nicht bewegen kann.
Ich weis aber wie schwierig sowas zu realisieren ist. Hatte selbst schon mal versucht in QB eine GUI für DOS zu schreiben, names RingOS (Das Logo war ein Farbe wechselnder "Donut" )
Das sollte man auch bis zu 500 Fenster öffnen können, sie verschieben, minimieren und Größe ändern. Das Problem: Es hat oft nicht das richtige Fenster erkannt und dann mit irgendeinem anderen irgendetwas anderes gemacht... (Aber das ist ne andere Geschichte und den Code dafür hab ich unfreiwillig verlohren )
Was du aber noch realisieren könntest währe, dass wen man mehrere Fenster öffnet das nach vorne rückt, in dessen Fläche man klickt.
MfG
-schumi- |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 11.07.2010, 15:22 Titel: |
|
|
Zitat: | Hi
Also ich find das Teil gar nicht so schlecht  |
Danke
Zitat: | Das zeugt von einem Konstruktiven Programmierstil |
Oder von zu wenig Motivation
Zitat: | Aber was mir echt abgegangen ist war, dass man die Fenster nicht bewegen kann. |
Hm, das ist wirklich extrem schwer. Ich habe pervers viel versucht, damit man die Fenster verschieben kann, aber ich glaube das muss man dann mit Events/Types machen(womit ich nicht richtig zurecht komme, dann wird es bei mir schnell unübersichtlich)
Zitat: | Hatte selbst schon mal versucht in QB eine GUI für DOS zu schreiben |
Das ist auch mein Hintergrund für diese GUI
Zitat: | Was du aber noch realisieren könntest währe, dass wen man mehrere Fenster öffnet das nach vorne rückt, in dessen Fläche man klickt. |
Stimmt. Das werde ich noch realisieren.  |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 11.07.2010, 16:42 Titel: |
|
|
lila heißt übrigens purple auf englisch  _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Stueber
Anmeldungsdatum: 07.07.2008 Beiträge: 202
|
Verfasst am: 11.07.2010, 16:44 Titel: |
|
|
Zitat: | Zitat: | Aber was mir echt abgegangen ist war, dass man die Fenster nicht bewegen kann. |
Hm, das ist wirklich extrem schwer. Ich habe pervers viel versucht, damit man die Fenster verschieben kann, aber ich glaube das muss man dann mit Events/Types machen(womit ich nicht richtig zurecht komme, dann wird es bei mir schnell unübersichtlich) |
Man braucht keine Type's oder so, nur eine Event Schleife die du ja eigentlich schon haben solltest. Du speicherst die Positionen und Größen aller Fenster, rufst getmouse auf und prüfst, ob der Klick in einem Fenster war. Wenn ja setzt du eine Variable mit der sich das Programm merkt, dass gerade das Fenster bewegt wird. Wenn die Maus los gelassen wird setzt du die Variable wieder auf den Ursprungswert. Wenn die Variable den Wert für "Fenster wird bewegt" hat und die Mausposition sich ändert im Vergleich zum vorherigen Schleifendurchlauf muss das Fenster dem entsprechend bewegt werden.
Wenn es durch Type's unübersichtlich wird machst du was falsch, das Gegenteil ist normalerweise der Fall.
Zitat: | Zitat: | Das zeugt von einem Konstruktiven Programmierstil |
Oder von zu wenig Motivation grinsen |
Oder von sehr unübersichtlichem Code-Stil
Das Programm
Code: | print "Hallo"
sleep
print "Blablabla"
sleep |
kann auch so geschrieben werden:
Code: | print "Hallo" : sleep : print "Blablabla" : sleep |
Ein Programm mit 20000 Zeilen bekommt man also theoretisch auch in eine Zeile.  |
|
Nach oben |
|
 |
Westbeam

Anmeldungsdatum: 22.12.2009 Beiträge: 760
|
Verfasst am: 11.07.2010, 17:56 Titel: |
|
|
Zitat: | lila heißt übrigens purple auf englisch |
Ich hab keine 2 in Englisch verdient
Danke für den Hinweis
Zitat: | Man braucht keine Type's oder so, nur eine Event Schleife die du ja eigentlich schon haben solltest. Du speicherst die Positionen und Größen aller Fenster, rufst getmouse auf und prüfst, ob der Klick in einem Fenster war. Wenn ja setzt du eine Variable mit der sich das Programm merkt, dass gerade das Fenster bewegt wird. Wenn die Maus los gelassen wird setzt du die Variable wieder auf den Ursprungswert. Wenn die Variable den Wert für "Fenster wird bewegt" hat und die Mausposition sich ändert im Vergleich zum vorherigen Schleifendurchlauf muss das Fenster dem entsprechend bewegt werden.
Wenn es durch Type's unübersichtlich wird machst du was falsch, das Gegenteil ist normalerweise der Fall. |
Hmmmmm, ... mal schauen. Im Moment habe ich eh nicht viel Zeit. Das Programm habe ich nur geschrieben, weil mir gerade langweilig war. Nächste Woche habe ich wieder Zeit, dann kann ich mich daran versuchen, deinen Text in FB-Code umzusetzen.
Zitat: | Ein Programm mit 20000 Zeilen bekommt man also theoretisch auch in eine Zeile.  |
Nur habe ich keine Doppelpunkte verwendet. Ich hab sogar noch leere Zeilen dazu gezählt, die zur Übersichtlichkeit zählen.
Wegen den Types: Ich habe schon einmal versucht, eine GUI mit Types und Events zu schreiben. Ich kam nicht weit, da der Code zu lang wurde. Und wenn es zu viel Code wird, verliere ich die Übersicht. Außerdem ist es auch eine Herausforderung, mit einfachsten Befehlen eine GUI zu coden.(Immerhin basiert das ganze auf einem eigens geschriebenen Eventsystem, welches nur aus IF-Abfragen besteht(Siehe "Buttons.bas"))  |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|