String Probleme (ListViewGadget) / verschiedene Fragen

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
kreeph
Beiträge: 98
Registriert: 24.02.2007 11:50

String Probleme (ListViewGadget) / verschiedene Fragen

Beitrag 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
Zuletzt geändert von kreeph am 24.02.2007 18:59, insgesamt 1-mal geändert.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
kreeph
Beiträge: 98
Registriert: 24.02.2007 11:50

Beitrag von kreeph »

oh danke :)

ja das klappt jetzt schon besser.

kann ich hier eigentlich noch weitere fragen reinschreiben?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
kreeph
Beiträge: 98
Registriert: 24.02.2007 11:50

Beitrag 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?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
kreeph
Beiträge: 98
Registriert: 24.02.2007 11:50

Beitrag von kreeph »

Wie lang gehts denn noch? Den Code meine ich.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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: )
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
kreeph
Beiträge: 98
Registriert: 24.02.2007 11:50

Beitrag 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
Zuletzt geändert von kreeph am 24.02.2007 22:25, insgesamt 1-mal geändert.
Ich benutze PureBasic 3.30
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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))
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten