Problem mit MaxGUI Befehl ModifyGadgetItem()
Übersicht

ArneBetreff: Problem mit MaxGUI Befehl ModifyGadgetItem() |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hallo,
ich hab ein kleines Problem mir der MaxGUI, bzw. verstehe ich nicht, warum das Programm so reagiert, wie es das tut... Ich hätte gedacht, dass das der Text des ausgwählten Items in "Selected" umbenannt wird, tatsächlich wird aber das Item unter dem ausgewählten umbenannt. Code: [AUSKLAPPEN] SuperStrict Local MyWindow:TGadget=CreateWindow("ListBox Example", 200,200,320,240) Local ListBox:TGadget=CreateListBox(10,10,200,100,MyWindow) For Local i:Int=1000 To 1050 AddGadgetItem ListBox,i Next Repeat WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE End Case EVENT_GADGETACTION ModifyGadgetItem ListBox, SelectedGadgetItem(ListBox), "Selected" End Select Forever Wenn ich nun stattdessen Code: [AUSKLAPPEN] ModifyGadgetItem ListBox, SelectedGadgetItem(ListBox)-1, "Selected" schreibe, reagiert das Programm so wie ich das will. Ich weiss nur nicht warum ^^ "SelectedGadgetItem()" gibt doch aus welches Item gerade ausgwählt ist und "ModifyGadgetItem ListBox" braucht das zu verändernde Item. Wenn ich also das aktuell ausgewählte angebe sollte es doch ohne die "-1" funktioniern!? lg |
||
ChristianK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Bei mir funktioniert es so, wie es soll. Ohne das "-1".
Haste mal gesyncmoddet? Sieht nämlich nach nem Bug in MaxGUI aus. |
||
Arne |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
danke, habs geschafft. ![]() Aber jetzt hab ich ein anderes Problem. Diesmal aber wirklich weil ich zu blöd bin ^^ Wenn ich nen Radio Buttons erstelle kann ich ja immer nur einen auswählen. Ist soweit ja auch ganz gut, mein Probelm ist jetzt nur, dass ich zB. möchte, dass man aus 3 Antwortmöglichkeiten eine auswählen kann und dann zu einer anderen Frage wieder aus 3 Möglichkeiten eine auswählen kann. Kann ich buttons irgendwie zu Gruppen zusammenfassen, so dass dann immer aus einer Gruppe ein Button Button ausgewählt werden kann oder gibts da nen anderen "Trick"? |
||
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja, du hast für jede Auswahlgruppe einfach ein Panel. So kannst du das einfach realisieren.... | ||
Arne |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, danke, funzt.
Aber jetzt steht schon wieder das nächste Problem an ![]() Code: [AUSKLAPPEN] Function tabelle(x%,y%,name$,Anzahl%,parent:TGadget)
Local I% Local m:TGadget[Anzahl] m[0]=createpanel(x,y,10,25,parent,PANEL_ACTIVE) For I=1 To Anzahl-2 m[I]=createpanel(I*10+x,y,10,25,parent,PANEL_ACTIVE) SetPanelpixmap m[I], tab_m, PANELPIXMAP_CENTER Next m[Anzahl-1]=createpanel(I*10+10+x,y,10,25,parent,PANEL_ACTIVE) SetPanelpixmap m[0], tab_l, PANELPIXMAP_CENTER SetPanelpixmap m[Anzahl-1], tab_r, PANELPIXMAP_CENTER End Function Ich möchte, dass ich den Namen des Arrays(m) frei bestimmen kann. Dafür war eigentlich name$ vorgesehen, aber ich bekomms ums verrecken nicht hin. Anstatt Local m:TGadget[Anzahl] Local name:TGadget[Anzahl] funktioniert nicht... Wäre nett wenn mir nochmal jemand helfen würde, lg |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
einfach mal oben strict rein, der compiler wird dir sagen wo das problem ist.
Um genau zu sein: name ist bereits ein argument der funktion, du kannst es nicht nochmal für irgendwas anderes verwenden in der funktion! |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Arne |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
wo das Problem liegt weiss ich ja, hab am Anfang SuperStrict stehen. Ich weiss nur nicht, wie es sonst klappen könnte. Theoretisch müsste ich ja nur wissen, wie ich den Namen eines Arrays des Typs TGadget ändere, bzw. durch einen in einem String gespeicherten Namen ersetzte. Dazu finde ich aber überhaupt nirgendwo auch nur irgendetwas. | ||
![]() |
simi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich dich richtig verstehe, möchtest du der Funktion als name zum Beispiel "blubb" übergeben. Und dann das Array antstatt mit m[xy] mit blubb[xy] ansprechen??
Wenn nicht, nicht weiterlesen....! ![]() Macht für mich eigentlich keinen Sinn das so zu machen, allerdings gäbe es eine Möglichkeit dies mit dem Type "TMap" zu lösen. Suche mal im Forum dananch, es gibt einen Thread dazu und sonst einfach mal in den Modulcode schauen, der ist ziemlich einfach zu verstehen. Du kannst dann dein Array zu dieser Map hinzufügen und mit dem String, der in name steht, verbinden. Dann kannst du mit valueforkey(name) das Array wieder hervorrufen..... |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du könntest auch das Array schon an die Funktion übergeben und es später auch returnen, wenn es dir darum geht ein beliebiges TGadget-Array zu befüllen.
Also: Code: [AUSKLAPPEN] function blub:TGadget[](bla:Tgadget[],x:int,y:float,z:Tblub) 'arbeiten mit bla und so ..... return bla end function |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Arne hat Folgendes geschrieben: wo das Problem liegt weiss ich ja, hab am Anfang SuperStrict stehen. Ich weiss nur nicht, wie es sonst klappen könnte. Theoretisch müsste ich ja nur wissen, wie ich den Namen eines Arrays des Typs TGadget ändere, bzw. durch einen in einem String gespeicherten Namen ersetzte. Dazu finde ich aber überhaupt nirgendwo auch nur irgendetwas.
Einfach stringVariable = "neuer string" Wenn du meinst Variablennamen in echtzeit ändern: Garnicht. Denn nach dem kompilieren existieren Variablennamen garnimmer können also auch nicht mehr geändert werden. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Arne |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit einer TMap hab ichs noch nicht versucht, aber ich schaffs irgendwie nicht der Funktion einen array zu übergeben.
Code: [AUSKLAPPEN] Function tabelle(name:TGadget[],x%,y%,Anzahl%,parent:TGadget)
Local I% For I=1 To Anzahl name[I]=createpanel(I*10+x,y,10,25,parent,PANEL_ACTIVE) SetPanelpixmap name[I], tab_m, PANELPIXMAP_CENTER Next End Function geht nicht. Dachte es könnte vielleicht daran liegen, dass ich nicht angebe wieviele Dimensionen der Array hat und wie groß diese sind, aber Code: [AUSKLAPPEN] Function tabelle(name:TGadget[Anzahl%],x%,y%,parent:TGadget) geht auch nicht.
|
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Welchen Fehler gibt er Dir denn aus ? Ich kann ohne Probleme die erste Variante benutzen.
Bsp: Code: [AUSKLAPPEN] function a:int[](x:int[])
return x end function local b:int[10] local c:int[20] b[9] = 34 print c.length c = a(b) print c.length print c[9] EDIT: man beachte dass C auch die Dimension von b annimmt. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich seh das Problem.
Du arbeitest mit Steinzeit Blitz im Kopf. BM ist jedoch wie C 0 basierend bei Arrays. Das heisst ein Array mit Anzahl elemente hat effektiv die Indizes 0 bis Anzahl - 1 |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Arne |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
so, jetzt hab ichs ^^
Der Fehler war, dass ich Code: [AUSKLAPPEN] tabelle(test:TGadget[6],10,10,6,window) benutzt habe. Mit
Code: [AUSKLAPPEN] Local test:TGadget[6]
tabelle(test,10,10,6,window) funktionierts wunderbar. @dreamora: Das ist mir eigentlich klar, hab den Code nur fürs Forum ein bisschen gekürzt. Eigentlich siehts so aus:Code: [AUSKLAPPEN] Function tabelle:TGadget[](name:TGadget[],x%,y%,Anzahl%,parent:TGadget) Local I% name[0]=createpanel(x,y,10,25,parent,PANEL_ACTIVE) For I=1 To Anzahl-2 name[I]=createpanel(I*10+x,y,10,25,parent,PANEL_ACTIVE) SetPanelpixmap name[I], tab_m, PANELPIXMAP_CENTER Print I Next name[Anzahl-1]=createpanel(I*10+x,y,10,25,parent,PANEL_ACTIVE) SetPanelpixmap name[0], tab_l, PANELPIXMAP_CENTER SetPanelpixmap name[Anzahl-1], tab_r, PANELPIXMAP_CENTER End Function dann danke ich noch allen die mir weitergeholfen haben |
||
Arne |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Leider war das doch noch nicht alles... Irgendwie komme ich mir so langsam ein bisschen blöde vor. Jetzt hab ich das mit den Panels geschafft und bekomme da keinen Text rein. Zumindest nicht so, dass es gut aussehen würde. Das Panel hat eine Hintergrundgrafik und über diese soll der Text (ich habs mit nem Label gemacht) geschrieben werden. Nur jetzt ist dort wo Text ist kein Bild mehr, was ziemlich bescheuert aussieht. Also in etwa so:
Code: [AUSKLAPPEN] SuperStrict
Local window:TGadget = CreateWindow("Test", 50, 50, 400, 400) Local panel:TGadget = CreatePanel(10, 10, 300, 300, window) SetPanelColor(panel, 255, 255, 255) Local label:TGadget = CreateLabel("Label", 50, 50, 100, 18, panel) While True WaitEvent Select EventID() Case EVENT_WINDOWCLOSE End End Select Wend Kann man da wohl was machen? edit: Sorry für den Doppelpost, aber sonst hätte wohl keiner bemerkt, dass ich noch was geschrieben habe. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group