GLBasic forum

Other languages => GLBasic - de => Topic started by: WPShadow on 2007-Oct-31

Title: Fragen zur GUI
Post by: WPShadow on 2007-Oct-31
Hi!

Ich bastle gerade an einer Art von "Tabelleneingabe". Dazu möchte ich Gernots GUI verwenden. Bis jetzt funktioniert es gar nicht schlecht, aber so richtig will es noch nicht. Kann mir da irgendwer ein kleines Tutorial dazu geben?

GLG

W.
Title: Fragen zur GUI
Post by: Kitty Hello on 2007-Oct-31
Zu DDgui?

DDguiPushDialog
DDguiWidget(...)
DDguiButton(...)

while true
   ddgui_show(true)
   showscreen
   hibernate
wend
Title: Fragen zur GUI
Post by: WPShadow on 2007-Oct-31
Tja, soweit habe ich das schon! Problemchen ist eher ein Tabellenfeld zu erzeugen. Am Anfang dachte ich an Textfelder, aber das ist auch irgendwie schwierig umzusetzen. Vor allem, wenn die verschiedenen Zeilen verschieden viele Spalten haben:

test1=1|2|3
test2=1|2|3|4
test3=1|2
usw.

Außerdem müßte ich bei Textfeldern immer den gesamten Satz befüllen, was es auch ziemlich schwierig macht! Was sagst du, wie könnte ich das am Besten machen???

PS.: Was ich vorhabe zu machen, ist sowas in der Art wie eine "Excel" - Tabelle, in die man seine Daten einschreibt und die das System dynamisch in eine Text Datei (unter einem gewissen Format bzw. einer gewissen Formatierung) setzt. Dadurch kann ich es nämlich auch gleich einlesen und weiterbearbeiten. (Den Einleseteil habe ich schon fertig, mir geht es darum alles elegant eingeben zu können!)
Title: Fragen zur GUI
Post by: Schranz0r on 2007-Oct-31
Selber eine Input Route schreiben !
Title: Fragen zur GUI
Post by: WPShadow on 2007-Oct-31
Das schon. Rein Graphisch würde ich halt gerne die DDGUI benutzen, da es dort die Textfelder gibt und die halt wirklich praktisch wären...
Title: Fragen zur GUI
Post by: Schranz0r on 2007-Oct-31
das Problem an der GUI ist die, das man Spacer benutzen muss, wie in HTML, was nicht vom vorteil ist!

Da wäre eine GUI mit X Y koordinaten besser gewesen für jeden button!
Das ist der hautgrund wieso ich die GUI auch nicht verwende
Title: Fragen zur GUI
Post by: WPShadow on 2007-Oct-31
Nun, ich habe jetzt (ab ca. 18:00 heute) frei und habe vor das Ding dieses Wochenende fertig zu bekommen. Hast du Bock mir zu helfen?
Title: Fragen zur GUI
Post by: Schranz0r on 2007-Oct-31
dabei :D
Title: Fragen zur GUI
Post by: WPShadow on 2007-Oct-31
Sehr gut! Schicke dir heute Abend den aktuellen Stand und eine ca. 3-4 Seitige Erklärung dazu! hehehe
Title: Fragen zur GUI
Post by: Schranz0r on 2007-Oct-31
Ja ne da versteh ich doch nix!!!
Mach 10 Seiten mit bildern und einen kleinen Video :D
Alles klar Willi bis dann!!
Title: Fragen zur GUI
Post by: Kitty Hello on 2007-Oct-31
Ja, moment mal: Du kannst in DDgui eigene Steuerelemente machen. Ich meine, dass bei dem Beispiel sogar eins gemacht wird. Da muss man eine CALLBACK überschreiben, und die meckert dann: He, ich kenn den Typ "XXX" nicht - mach Du das mal.
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-01
Hab vermutlich heraus gefunden, wie das Ganze läuft. Wenn es so läuft, wie ich denke, dann stelle ich morgen mal den 1. Test online. Vielleicht wird mein Programm ja doch noch was! hehehe
Title: Fragen zur GUI
Post by: Schranz0r on 2007-Nov-02
Niemals :D
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-02
Du kannst mir ja trotzdem helfen! Ich bekomme die Tabellenstruktur nämlich noch nicht so richtig hin! Da muß ich mir noch was einfallen lassen. Vor allem deshalb, weil ich auch lange Einträge einbauen will. Wenn ich die nun in die Textbox schreibe und der Text länger ist, als die Textbox breit, dann verschwindet der Rest einfach. Mache ich die Textbox aber größer, ist es vorbei mit der Tabellenstruktur. Überleg dir was!!!!!
Title: Fragen zur GUI
Post by: Schranz0r on 2007-Nov-02
Da werde ich so nix machen können...
Hab auch keinen Plan wie das bei anderen GUI's so abläuft.
Hab ich mich auch schon gefragt wie man sowas macht ^^
Title: Fragen zur GUI
Post by: Kitty Hello on 2007-Nov-02
Mach den kurzen text, und wenn man reinklickt mach einen neuen Dialog, der in einem großen Textfeld den Text ändern lässt?
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-02
Das wird schon irgendwie hin hauen. Ich teste einfach und falls es nicht hinhauen sollte, stelle ich es einfach schnell online und dann tüfteln wir halt ein bißchen dran run. Irgendwie muß das blöde Ding doch zum Laufen zu bringen sein...

Und wenn ich eine Protierung für *.xls - Dateien selber schreiben muß...
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-02
HIIIIIIIIIIIIIIIIIIIIIILFE!

Das funktioniert irgendwie nicht:

Code (glbasic) Select
// --------------------------------- //
// Project: gldb Eingabe
// Start: Tuesday, October 30, 2007
// IDE Version: 5.062

GLOBAL field_x, field_y, field$[]

field_x = 1
field_y = 1

DIM field$[field_x + 1][field_y + 1]


DDgui_Init()


DDgui_pushdialog(0,0,1023,767)

FOR y_tmp = 1 TO field_y

FOR x_tmp = 1 TO field_x

DDgui_list(field$[y_tmp][x_tmp], "Testlauf lang", 400, 30)

NEXT

NEXT


DDgui_spacer(10000, 30)

DDgui_button("bt_complex", "Bearb.", 0,0)

WHILE TRUE


FOR y_tmp = 1 TO field_y

FOR x_tmp = 1 TO field_x

  IF DDgui_get(field$[y_tmp][x_tmp] + "CLICKED") THEN END

NEXT

NEXT


IF DDgui_get("bt_complexCLICKED") THEN END

DDgui_show(FALSE)


SHOWSCREEN
WEND
Was mach ich falsch? Oder denke ich hier gar falsch?

GLG

W.
Title: Fragen zur GUI
Post by: Schranz0r on 2007-Nov-02
Ich glaub du bist ein noob ^^

Code (glbasic) Select
GLOBAL field_x, field_y, field$[]

field_x = 1
field_y = 1

DIM field$[field_x + 1][field_y + 1]
Was zur hölle soll das den ?
dan in den For von von 1 bis 1?
HÖÖÖÖÖÖÖÖÖ
Title: Fragen zur GUI
Post by: Quentin on 2007-Nov-02
Hi WP,
denke, was fehlt, ist die ID der Listfelder, also der Name dieser Objekte

Probiers mal so:

Code (glbasic) Select
...

DDgui_pushdialog(0,0,1023,767)

FOR y_tmp = 1 TO field_y

    FOR x_tmp = 1 TO field_x
       
        field$[y_tmp][x_tmp] = "ls_" + x_tmp + y_tmp
        DDgui_list(field$[y_tmp][x_tmp], "Testlauf lang", 400, 30)

    NEXT
   
NEXT
...
Also die Zeile
Code (glbasic) Select
field$[y_tmp][x_tmp] = "ls_" + x_tmp + y_tmpist hinzugekommen. Damit geben wir jedem List-Eintrag eine eindeutige ID. Bei deinem Beispiel oben fehlt die Benamung der Objekte, deswegen heißen alle gleich, nämlich "" und es wird auch nur einer dargestellt.
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-02
Gut, dann hab ich da noch eine Frage! Das mit der ID hab ich inzwischen gesehen... =/ (wie blöd von mir)

Wieso kann ich hier den X-Zähler nicht weiter erhöhen als 1? Irgendwie stimmt was mit DIM nicht, vermute ich mal...

Code (glbasic) Select
// --------------------------------- //
// Project: gldb Eingabe
// Start: Tuesday, October 30, 2007
// IDE Version: 5.062

GLOBAL field_x, field_y, field$[]

field_x = 1
field_y = 1

DIM field$[field_x + 1][field_y + 1]


DDgui_Init()


DDgui_pushdialog(0,0,1023,767)

FOR y_tmp = 1 TO field_y

FOR x_tmp = 1 TO field_x

y_tmp$ = y_tmp
x_tmp$ = x_tmp
field$[y_tmp][x_tmp] = y_tmp$ + x_tmp$

DDgui_list(field$[y_tmp][x_tmp], "Testlauf lang", INTEGER(1000 / field_x), 30)

NEXT

NEXT


DDgui_spacer(10000, 30)

DDgui_button("bt_complex", "Bearb.", 0,0)

WHILE TRUE


FOR y_tmp = 1 TO field_y

FOR x_tmp = 1 TO field_x

  field$[y_tmp][x_tmp] = y_tmp$ + x_tmp$

  IF DDgui_get(field$[y_tmp][x_tmp] + "CLICKED") THEN END

NEXT

NEXT


IF DDgui_get("bt_complexCLICKED") THEN END

DDgui_show(FALSE)


SHOWSCREEN
WEND
Title: Fragen zur GUI
Post by: Schranz0r on 2007-Nov-02
der steigt dann aus was :D

Weil du kein Redim machst ?!? ^^

So bleibt dein Dim auch immer auf 2 feldern

PS komm ins ICQ du Hund ^^
Title: Fragen zur GUI
Post by: Quentin on 2007-Nov-02
*ggg*
yep, Schranzor Recht geb!
Entweder die DIM'st gleich auf die gewünschte Größe oder passt dein Array mit REDIM an
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-03
Jetzt läuft's... =)

Binde noch ein paar funktionen ein, mal sehen wie's dann läuft!


Code (glbasic) Select
// --------------------------------- //
// Project: gldb Eingabe
// Start: Tuesday, October 30, 2007
// IDE Version: 5.062

GLOBAL field_x, field_y, field$[]

field_x = 4
field_y = 1

DIM field$[field_x + 1][field_y + 1]


DDgui_Init()


DDgui_pushdialog(0,0,1023,767)

FOR y_tmp = 1 TO field_y

FOR x_tmp = 1 TO field_x

REDIM field$[x_tmp + 1][y_tmp + 1]

y_tmp$ = y_tmp
x_tmp$ = x_tmp
field$[x_tmp][y_tmp] = x_tmp$ + y_tmp$

DDgui_list(field$[x_tmp][y_tmp], "Testlauf lang", INTEGER(1000 / field_x), 30)

NEXT

NEXT


DDgui_spacer(10000, 30)

DDgui_button("bt_complex", "Bearb.", 0,0)

WHILE TRUE


FOR y_tmp = 1 TO field_y

FOR x_tmp = 1 TO field_x

y_tmp$ = y_tmp
x_tmp$ = x_tmp

  field$[x_tmp][y_tmp] = x_tmp$ + y_tmp$

  IF DDgui_get(field$[x_tmp][y_tmp] + "CLICKED") THEN END

NEXT

NEXT


IF DDgui_get("bt_complexCLICKED") THEN END

DDgui_show(FALSE)


SHOWSCREEN
WEND
Title: Fragen zur GUI
Post by: Kitty Hello on 2007-Nov-03
Wenn Du 1 mehr DIMst, dann solltest Du acuh:
FOR x = 0 (in Worten: Null) TO field_x
machen...
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-03
Ich habe da noch eine Frage:

Ich habe versucht den Wert test in ein Textmodul einzugeben. Normalerweise sollte das der Inhalt davon in text$ stehen, oder? Wenn ich aber nun abfrage, steht da irgendwie gar nichts drin. Wie kommt das? Muß ich zusätzlich was einfügen, damit ich einen Wert erhalte?

Hier ein kleiner Teil der Eingabe:

Code (glbasic) Select
FUNCTION eingabe:
Local text$

DDgui_text("tx_text", text$, 210, 0)
DDgui_button("bt_complex_main", "OK", 0,0)

WHILE TRUE



IF DDgui_get("bt_complex_mainCLICKED")
IF text$ = "test" THEN END
ENDIF

DDgui_show(FALSE)

SHOWSCREEN

WEND



ENDFUNCTION
Title: Fragen zur GUI
Post by: Quentin on 2007-Nov-03
Häh?

Ich glaube du schmeist da ein wenig was durcheinander. Du fragst innerhalb der Schleife doch nur ab, ob der Button geklickt wurde. Den Text aus dem Eingabefeld müsstest du aber auch noch auslesen.

Glaube das ging in etwa so:

Code (glbasic) Select
text$ = DDgui_get$("tx_textTEXT")In deinem Beispie müsste text$ immer leer sein.
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-04
Achso... Das gehört extra rausgelesen? Gut zu wissen, danke! Irgendwie hab ich das durch die Beschreibung der GUI nicht ganz rausbekommen...

PS.: Danke für den Tip! Jetzt funktioniert es super! =)
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-05
Eine Frage zu DDGUI_LIST:

Wenn ich etwas mit List ausgewählt habe, ist das Feld immer aktiv geschalten. Wenn ich nun irgendwo drauf klicke, dann deaktiviert sich erst die blaue Markierung. Ist es möglich die Markierung von Anfang an zu deaktivieren und erst dann zu aktivieren, wenn man zum ersten Mal drauf klickt? Und falls ja, wie funktioniert das?

GLG

W.
Title: Fragen zur GUI
Post by: Kitty Hello on 2007-Nov-05
Ja. Setz' den Selected auf -1:
Code (glbasic) Select
//! ### list ###
//! idTEXT    token1|token2|token3...
//! idCOUNT   number of items
//! idSELECT  -1(none) 0...n
//! idCLICKED inform about SELECT change
Also: DDGuiSet("ls_listeSELECT", -1)
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-05
Super! Danke! Das hilft mir ein ordentliches Stück weiter! =)
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-13
So, neue Frage:

Ich hab da so'ne "Textbox" in die ich einen Wert reinlade. Nun möchte ich den Wert, den ich reingeschrieben habe, verändern und wieder rauslesen, aber da habe ich folgende Problemchen:

1. Unverändert ließt sich der Wert (ddgui_getitemtext$ [oder so]) ganz normal ein
2. Ergänze ich den Text, ändert er sich und wird gespeichert.
3. Lösche ich einen Textteil weg (mit der Rücktaste oder Entfernen ist egal), verschwindet der gesamte Text und ich kann den Rest der Eingabe neu schreiben.

Was tun?

GLG

W.

PS.: Programmauszug gibt's morgen (falls nötig)
Title: Fragen zur GUI
Post by: Kitty Hello on 2007-Nov-14
beispiel, bitte. textbox text mit: ddgui_get("txboxTEXT")
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-15
Bist du dieses Wochenende mal im Chat?

Anbei ein (möglicherweise etwas unübersichtlicher da aus dem Zusammenhang [des Gesamtprogrammes] gerissener) Codeauszug:

Code (glbasic) Select
FUNCTION zelle_bearb: spalten_name$, a_tmp, b_tmp, c_tmp
LOCAL a, tmp$, temp$


DDgui_Init()

DDgui_list("spalte_titel", "Zelle bearbeiten: " + spalten_name$ + "_" + a_tmp + "_" + b_tmp, 1000, 20)

DDgui_spacer(10000, 30)

IF spalten$[a_tmp][b_tmp][c_tmp] = " " THEN  spalten$[a_tmp][b_tmp][c_tmp] = ""

DDgui_text("zelle", spalten$[a_tmp][b_tmp][c_tmp], 1000, 20)

DDgui_spacer(10000, 30)


DDgui_button("bt_complex_save", "SAVE", 0,0)

DDgui_button("bt_complex_back", "BACK", 0,0)



WHILE TRUE

IF DDgui_get("bt_complex_saveCLICKED")


a_tmp$ = a_tmp
b_tmp$ = b_tmp

DDgui_set("zelle", spalten$[a_tmp][b_tmp][c_tmp] + "SELECT")
tmp$ = DDgui_getitemtext$("zelle", spalten$[a_tmp][b_tmp][c_tmp])

//DDgui_msg(tmp$ + " " + LEN(tmp$), 0)

IF LEN(tmp$) = 0 THEN tmp$ = " "

FOR a = 0 TO spalten - 1

IF a = c_tmp
temp$ = temp$ + tmp$
ELSE
temp$ = temp$ + spalten$[a_tmp][b_tmp][a]
ENDIF

IF a <> spalten -1 THEN temp$ = temp$ + "|"

NEXT



INIPUT spalten_name$, spalten_name$ + "_" + a_tmp$ + "_" + b_tmp$, temp$

spalte_view(spalten_name$)
ENDIF


IF DDgui_get("bt_complex_backCLICKED")
spalte_view(spalten_name$)
ENDIF

DDgui_set("spalte_titelSELECT", -1)
IF DDgui_get("spalte_titelCLICKED") THEN DDgui_set("spalte_titelSELECT", -1)



DDgui_show(FALSE)

SHOWSCREEN


WEND




ENDFUNCTION
Title: Fragen zur GUI
Post by: WPShadow on 2007-Nov-15
Hi!

Habe noch eine Frage an dich, Gernot!

Wie weit rückt eine Textbox, Listbox oder sonst was von der linken Seite rein, wenn ich sie standartmäßig auf ein Modul setze? Damit meine ich, daß das Ding nicht direkt auf der Kante bzw. auf dem Rand liegt, sondern ein paar Pixel einrückt. Ich frage deshalb, damit ich immer exakt auf die selbe Größe komme, wenn ich die Felder dynamisch einlese. Alias:

(((Gesamtbreite - 100) / Gesamtanzahl der Spalten) - Einrückung) + Knopfbreite 1 + Knopfbreite 2

GLG

W.