GLBasic forum

Other languages => GLBasic - de => Topic started by: Quentin on 2007-Jul-12

Title: Problem mit DDgui
Post by: Quentin on 2007-Jul-12
wühle mich zur Zeit ein wenig durch DDgui, um damit eine Spielsteuerung hinzubekommen. Bei einem Dialog, der lediglich einige Strings anzeigen soll, ist das Ergebnis etwas seltsam. Zwischen dem ersten und zweiten String klafft eine recht große Lücke.

(http://www.offtopica.com/quen/menu.jpg)

hier der Code dazu:
Habe es mit und ohne Spacer probiert, mit und ohne nachfolgende Leerzeichen. Immer das gleiche Ergebnis. Wenn ich den ersten Spacer setze, werden die Strings zwar zusammenhängend dargestellt, noch oben ist jedoch ein ziemlich großer Bereich dann frei.

Kleiner Hinweis vielleicht, was ich hier falsch mache?

Code (glbasic) Select
// ------------------------------------------------------------- //
// -=#  DIA_CONTROL  #=-
// ------------------------------------------------------------- //
FUNCTION dia_control:

  SETFONT 2
  DDgui_pushdialog(100, 100, 500, 300)
  DDgui_set("MOVEABLE", TRUE)
  DDgui_set("TEXT", "Steuerung")

  //DDgui_spacer(1000, 0)    
  DDgui_widget("", "Cursor oben   --> Beschleunigen     ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Cursor unten  --> Bremsen           ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Cursor links  --> nach links drehen ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Cursor rechts --> nach rechts drehen", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Leertaste     --> Laser feuern      ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "L             --> Laser wechseln    ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "ESC           --> Menue/Pause       ", 0, 0)
  //DDgui_spacer(1000, 0)
                                               
  DDgui_spacer(200, 50)
  DDgui_button("bt_ok", " Zurueck", 100, 25)
 
  WHILE TRUE
    DDgui_show(FALSE)
    IF DDgui_get("bt_okCLICKED")
      BREAK
    ENDIF
    SHOWSCREEN
    HIBERNATE
  WEND
 
  DDgui_popdialog()

ENDFUNCTION // DIA_CONTROL
Title: Problem mit DDgui
Post by: Quentin on 2007-Jul-12
habe glaube ich die Ursache gefunden, auch wenn ich den Zusammenhang nicht so recht verstehe.

Im ersten Dialog werden die Buttons mit Grafiken dargestellt. Wenn ich diese mit einfachem Text darstellen, wird auch der o.g. Dialog korrekt dargestellt. Die Lücke zwischen den Texten entspricht anscheinend genau der Höhe der Button-Grafik ...

hääääääähh???
Title: Problem mit DDgui
Post by: Kitty Hello on 2007-Jul-13
Bei mir läufts. Bitte schick mir mal den ganzen Code, oder reduziere das Beispiel auf ein kleines, das nicht geht.
Code (glbasic) Select
// --------------------------------- //
// Project: _burp
// Start: Friday, July 13, 2007
// IDE Version: 4.237

SYSTEMPOINTER TRUE
  DDgui_pushdialog(0, 0, 500, 300)
  DDgui_set("MOVEABLE", TRUE)
  DDgui_set("TEXT", "Hintergrund")

DDgui_button("bt_A", "Test", 0,40)
DDgui_spacer(100000,0)
DDgui_button("bt_B", "Test", 0,40)
DDgui_spacer(100000,0)
DDgui_button("bt_C", "Test", 0,40)
DDgui_spacer(100000,0)



dia_control()

// ------------------------------------------------------------- //
// -=#  DIA_CONTROL  #=-
// ------------------------------------------------------------- //
FUNCTION dia_control:
  DDgui_pushdialog(100, 100, 500, 300)
  DDgui_set("MOVEABLE", TRUE)
  DDgui_set("TEXT", "Steuerung")

DDgui_widget("", "Test", 0,0)
DDgui_spacer(100000,0)

  //DDgui_spacer(1000, 0)    
  DDgui_widget("", "Cursor oben   --> Beschleunigen     ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Cursor unten  --> Bremsen           ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Cursor links  --> nach links drehen ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Cursor rechts --> nach rechts drehen", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "Leertaste     --> Laser feuern      ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "L             --> Laser wechseln    ", 0, 0)
  //DDgui_spacer(1000, 0)
  DDgui_widget("", "ESC           --> Menue/Pause       ", 0, 0)
  //DDgui_spacer(1000, 0)
                                               
  DDgui_spacer(200, 50)
  DDgui_button("bt_ok", " Zurueck", 100, 25)
 
  WHILE TRUE
    DDgui_show(FALSE)
    IF DDgui_get("bt_okCLICKED")
      BREAK
    ENDIF
    SHOWSCREEN
    HIBERNATE
  WEND
 
  DDgui_popdialog()

ENDFUNCTION // DIA_CONTROL
(http://img221.imageshack.us/img221/1345/burp1kf1.th.png) (http://img221.imageshack.us/my.php?image=burp1kf1.png)
Title: Problem mit DDgui
Post by: Quentin on 2007-Jul-13
jau, wenn ich die Buttons nur mit Texten anlege, klappt es ja auch, nur wenn ich statt der Texte Grafiken als Buttons anzeige

also mit:

Code (glbasic) Select
LOADSPRITE "options.bmp", 0
DDgui_button("bt_options", "SPR_B 0", 0, 0)
dann kommt dieser Effekt.
nachprüfbar mit folgendem Progrämmchen:
Die Grafiken sind 200x70.
Bei mir (allerdings mit DEMO-Version von GL) tritt dann noch der seltsame Effekt auf, daß, wenn ich auf "Optionen" klicke und der entsprechende Dialog angezeigt wird, anschließend nach der Rückkehr aus diesem Dialog der zweite Button gar nicht mehr angezeigt wird ???


Code (glbasic) Select
SYSTEMPOINTER TRUE
DDgui_pushdialog(100, 100, 210, 300)
DDgui_set("MOVEABLE", TRUE)
DDgui_set("SCALEABLE", TRUE)
DDgui_set("TEXT", "Main")

LOADSPRITE "options.bmp", 0
LOADSPRITE "score.bmp", 1
LOADSPRITE "ende.bmp", 2

//DDgui_button("bt_options", "Optionen", 0, 0)
DDgui_button("bt_options", "SPR_B 0", 0, 0)
DDgui_spacer(10000, 0)
//DDgui_button("bt_score", "Highscore", 0, 0)
DDgui_button("bt_scroe", "SPR_B 1", 0, 0)
DDgui_spacer(10000, 0)
//DDgui_button("bt_ende", "Beenden", 0, 0)
DDgui_button("bt_ende", "SPR_B 2", 0, 0)

WHILE TRUE
  DDgui_show(FALSE)
  IF DDgui_get("bt_optionsCLICKED")
    dia_options()
  ENDIF
  IF DDgui_get("bt_scoreCLICKED")
    PRINT "Highscore:", 0, 0
  ENDIF
  IF DDgui_get("bt_endeCLICKED") THEN END
  SHOWSCREEN
  HIBERNATE
WEND


// ------------------------------------------------------------- //
// -=#  DIA_OPTIONS  #=-
// ------------------------------------------------------------- //
FUNCTION dia_options:

  DDgui_pushdialog(200, 150, 300, 200)
  DDgui_set("MOVEABLE", TRUE)
  DDgui_set("TEXT", "OPTIONEN")

  DDgui_widget("", "links drehende Milchsaeuren", 0, 0)
  DDgui_widget("", "rechts drehende Milchsaeuren", 0, 0)
  DDgui_widget("", "gar keine Milchsaeuren", 0, 0)
  DDgui_widget("", "selber sauer sein", 0, 0)

  DDgui_spacer(10000, 30)
  DDgui_button("bt_ok", " OK ", 0, 0)

  WHILE TRUE
    DDgui_show(FALSE)
    IF DDgui_get("bt_okCLICKED")
      BREAK
    ENDIF
    SHOWSCREEN
    HIBERNATE
  WEND

  DDgui_popdialog()

ENDFUNCTION // DIA_OPTIONS
Title: Problem mit DDgui
Post by: Kitty Hello on 2007-Jul-13
DDgui-gbas, Zeile 478, vor die Zeile "FOR i = 1 TO DDgui_get("COUNT")"
Bitte einfügen:
dy_line=0

Ich mach ein Update.
PS. Du hast einen Typo: bt_scroe statt bt_score.
Title: Problem mit DDgui
Post by: Quentin on 2007-Jul-13
Super, gehts jetzt. War bei mir allerdings Zeile 418. Ich nehme an du meintest Funktion DDgui_show.

Der Effekt, daß der zweite Button verschwindet (nach Klick auf Optionen und dort auf ok) besteht allerdings weiterhin. Das geschieht allerdings unabhängig davon, ob man nur Text oder Grafiken verwendet. Konntest du das auch nachvollziehen oder liegt es evtl. daran, daß ich hier nur mit Ver. 4.192 arbeite?
Title: Problem mit DDgui
Post by: Kitty Hello on 2007-Jul-13
Geht bei mir. Jetzt nochwas zu 4.192.
Ich weiß, dass die geknackt wurde, und es tut mir leid, dass das gerade kurz vor einer großen Änderung geschehen ist mit den TYPEs.
Installier halt das aktuelle SDK parallel dazu, sonst wirst Du unglücklich. Die aktuelle DEMO ist immer besser. Und hat ja kein 30 Tage limit oder so...
Title: Problem mit DDgui
Post by: Quentin on 2007-Jul-13
kein Problem, hab zu Hause ja die registrierte Version auf dem neuesten Stand. Ich probiers heute abend mal aus.

Also wenn man mal ein wenig dahinter gestiegen ist, ist DDgui wirklich klasse.