Seite 1 von 3

String Probleme (ListViewGadget) / verschiedene Fragen

Verfasst: 24.02.2007 12:03
von kreeph
Hallo Leute ich habe ein Problem mit Strings:

Ich habe ein ListViewGadget erstellt und da Einträge reingeschrieben.
Jetzt will ich diese per ButtonGadget in eine andere verschieben bzw. eine Kopie von dem Eintrag da reinverschieben und zwar den ausgewählten Eintrag.
Hab in der Hilfe nachgelesen, dass das per GetGadgetItemState(...) geht und gleich mal ausprobiert.
Dazu wollte ich den Namen in der Statusbar anzeigen. Das sah dann so aus:

Code: Alles auswählen

StatusBarText(99, 0, "  + (x) "+(GetGadgetItemState(2, #PB_listicon_selected)), 0)
Can't mix strings with numericals values.

Dann hat mir diese nette Fehlermeldung klargemacht, dass ich hier eine Zeit lang hängen werde und nach einer Zeit hab ich es dann aufgegeben.

Jetzt wollte ich fragen wie ich den Namen eines ausgewählten Eintrags angeben kann.

Hoffe es kann mir jemand die Augen öffnen :)
Danke schonmal.

Titel ergänzt - Kaeru fecit

Verfasst: 24.02.2007 12:27
von Kaeru Gaman
GetGadgetItemState()
liefert wie der name schon sagt und wie in der Help beschrieben den Status eines eintrags, und das ist ein numerischer wert.
damit kannst du nur prüfen, ob ein bestimmter eintrag selected ist oder nicht.

den inhalt des eintrags holst du dann mit GetGadgetItemData bzw. GetGadgetItemText...

Verfasst: 24.02.2007 14:48
von kreeph
oh danke :)

ja das klappt jetzt schon besser.

kann ich hier eigentlich noch weitere fragen reinschreiben?

Verfasst: 24.02.2007 14:51
von Kaeru Gaman
wenn sie direkt weiterführen von diesem problem, ja.

wenn es etwas komplett anderes ist, dann mach besser ein neues thema auf.

ach und btw: willkommen im board.

Verfasst: 24.02.2007 15:40
von kreeph
Ok dann hab ich hier noch ein problem zu dem selben Programm:
Ich habe ein PanelGadget mit zwei Unterpunkten im Programm.
In jedem dieser Unterpunkte gibt es zwei ListViewGadgets - eins mit verschiedenen Einträgen und das andere leer. Über zwei ButtonGadgets will ich jetzt die Einträge der jeweils vollen Liste in die leere kopieren (und eventuell wieder entfernen), wo dann Einträge von beiden Listen stehen können. Das ganze wird dann auch in der Statusbar angezeigt (+/- Name des Eintrags)

Mein Problem ist jetzt, dass die Einträge nur auf einer der beiden leeren Listen erscheinen und dass das mit dem Namen noch nicht so richtig klappt.

Code: Alles auswählen

AddGadgetItem(7, -1, ""+GetGadgetItemText(2, 1, 0))
So sieht das bei mir gerade aus. Wie nehme ich jetzt bei dem GetGadgetItemText den gerade angewählten Eintrag?
Und wo ist hier der Unterschied zwischen Eintrag und Spalte (so stehts in Anleitung)?

Hoffe darauf finde ich auch noch eine Antwort.

p.s. darf ich eigentlich meinen ganzen Code posten, damit ich das leichter erklären kann?

Verfasst: 24.02.2007 18:41
von Kaeru Gaman
wenn er nicht zuuuu lang is, klar.

vielleicht solltest du denn den titel nochmal anpassen, damit die anderen wissen, worum sich die neuere frage dreht...
deine postings haben nen edit button, im ersten posting kannst du auch den titel von topic verändern...

Verfasst: 24.02.2007 19:00
von kreeph
Wie lang gehts denn noch? Den Code meine ich.

Verfasst: 24.02.2007 19:21
von ts-soft
>> p.s. darf ich eigentlich meinen ganzen Code posten, damit ich das leichter erklären kann?
Wenn Du ihn auf ein minimum Kürzen würdest, wären wir Dir dankbar, ist
dann übersichtlicher und man kann Dir schneller helfen.

Also Fenster mit 2 ListView und 2 Button, EventLoop und dann die
Fehlerbeschreibung!

Gruß
Thomas

PS: Vergiß die Code-Tags nicht (vorsichtshalber weil Du neu bist :wink: )

Verfasst: 24.02.2007 19:58
von kreeph

Code: Alles auswählen

#WindowWidth  = 390
#WindowHeight = 290

If OpenWindow(0, 100, 120, #WindowWidth, #WindowHeight, #PB_Window_MinimizeGadget, "Armeelistensystem")

 If CreateGadgetList(WindowID())
   
   CreateStatusBar(#99, WindowID())
   AddStatusBarField(380)
   
    Top = 10
    GadgetHeight = 24
PanelGadget(#3, 20, Top, #WindowWidth-50, #WindowHeight-Top-60)

    AddGadgetItem(3, 0, "Klap")
   ButtonGadget(#6,  170, 10, 70, GadgetHeight, "Hinzufügen")
   ButtonGadget(#5,  250, 10, 70, GadgetHeight, "Entfernen")
    ListViewGadget(#4, 6, 10, 150, 148)    
AddGadgetItem(4, -1, "Objekt 4")
;[...]
AddGadgetItem(4, -1, "Objekt 5")
ListViewGadget(#7, 170, 40, 150, 118)

    AddGadgetItem(3, 0, "Magische Gegenstände")
   ButtonGadget(#9,  190, 10, 70, GadgetHeight, "Hinzufügen")
   ButtonGadget(#5,  260, 10, 70, GadgetHeight, "Entfernen")
    ListViewGadget(#2, 6, 10, 180, 148)
AddGadgetItem(2, -1, "Objekt 1")
;[...]
AddGadgetItem(2, -1, "Objekt 2")
ListViewGadget(#7, 190, 40, 140, 118)

 EndIf
 
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_EventGadget
Select EventGadgetID()

Case 5;Entfernen hier auch am besten das ausgewählte 
RemoveGadgetItem(7, 0)
StatusBarText(99, 0, "  - "+GetGadgetItemText(7, 1, 1), 0);Hier hätte ich die Frage was bei dem GetGadgetItemText die beiden letzten Werte sind und wie ich dort den Namen des ausgewählten Objekts bekomme. 

Case 6;Hinzufügen
AddGadgetItem(7, -1, ""+GetGadgetItemText(2, 1, 0))
StatusBarText(99, 0, "  +  "+GetGadgetItemText(4, 1, 1), 0)

Case 9;Hnzufügen
AddGadgetItem(7, -1, ""+GetGadgetItemText(2, 2, 0))
StatusBarText(99, 0, "  +  "+GetGadgetItemText(2, 1, 1), 0)

EndSelect

EndIf

Until EventID = #PB_EventCloseWindow

EndIf

End 
Das wäre mein Code bis jetzt gekürzt.

Probleme:

Text des ausgewählten Eintrags zu bekommen

Neuer eintrag wird nur auf einer anderen Liste angezeigt

Verfasst: 24.02.2007 20:31
von ts-soft
Funktionstüchtig war Vorraussetzung :wink:
Dies ist ein < PB4 Source. Die meisten nutzen PB 4.02. Es gibt gerade für
Neueinsteiger keinen Grund eine alte Version einzusetzen! Schreibe bitte die
verwendete Version in Deine Signatur.
Deine "Konstanten" sind nirgends deklariert

Bevor Du den Text ermittelst, mußte erstmal die Selektierung ermitteln.

Code: Alles auswählen

Actuell = GetGadgetState(2)
AddGadgetItem(7, -1, ""+GetGadgetItemText(2, Actuell, 0))