Widget Inhalt (ScrollBox zu ScrollBox)

  • Hallo miteinander!


    Ich bin gerade dabei das Auftragsystem fertig zu stellen und nun habe ich ein Problem mit den Widgets.

    Grob erklärt:
    Man erstellt einen Auftrag und darin kann man benötigte Gegenstände als Widgets anheften, die dann mit entsprechend Stückzahl angezeigt werden.


    Z.B.

    Der Schmied braucht: 3x Eisenbarren, 4x Holz, 10x Stein usw.


    Das funktioniert alles super (bis auf die Stückzahl, dazu später mehr).

    Mein Problem ist nun das ich 2 Scrollboxen habe, 1x für den Bereich wo man den Auftrag erstellt (BearbeitenFenster) und einmal für die Vorschau/Hauptseite des Auftrages (sozusagen die HauptFenster). Im Grunde sind es Bereiche im Fenster und es wird entsprechend die eine Seite ausgeblendet und die andere angezeigt.


    Nun muss ich aber den Inhalt von ScrollBox 1 (BearbeitenFenster) in die ScrollBox 2 (HauptFenster) transferieren, damit man bei der Vorschau sehen kann wie der Auftrag im fertigen Zustand aussehen könnte. Leider funktioniert das nicht. (Siehe Screenshot)



    ---


    Das zweite Problem ist das ich im Auftragssystem (Struct) 2 Werte als Array habe.

    1x ActorClass Array (damit man weiss welcher Gegenstand es ist)

    1x Integer Array (für die Stückzahl).


    Das mit dem ActorClass Array funktioniert super, für jeden Actor im Array wird ein neues Fenster in der ScrollBox (Hauptfenster) erstellt.

    Aber leider klappt das nicht für den Integer Array, eben für die Stückzahl der Gegenstände.


    Das ganze habe ich mir so gedacht:

    Für jeden Actor im "ActorClass Array" soll entsprechend der richtige Wert im "Integer Array" (Stückzahl) genommen werden, damit die Stückzahl einfach in den Wert des Widgets kopiert wird.

    Aber wie mache ich das ActorClass Array und Integer Array 1:1 den gleichen Wert nehmen?

    Ich weiss nicht wie ich das erklären soll... es geht darum das nicht falsche Werte genommen werden.


    Z:B.

    Eisenbarren

    1 Stück


    Holz

    3 Stück


    usw.


    Jetzt sollte aber Eisenbarren (ActorClass Array) auch 1 Stück von (integer Array) nehmen und nicht die 3 Stück vom Holz... wenn ihr wisst was ich damit meine :)


    Die Stückzahl wird vom "StückZahlEditableText" genommen und im Array abgespeichert.


    Das StückzahlArray und ActorClassArray, werden beide im Auftrag Struct gespeichert und wenn man den Auftrag öffnet oder anschaut, dann werden die ganzen Werte entsprechend eingelesen und angezeigt.



    Danke für eure Infos!


    Schönes Wochenende euch allen!

  • Zu Punkt zwei:

    Ich verstehe generell das Problem nicht? Wenn du die Werte direkt im Anschluss hinzufügst, dann müssten diese ja denselben Index haben. Dann kannst du die ja einfach aus dem anderen Array holen.

    Und: Wieso zwei Arrays und nicht ein Array aus Structs mit sowohl einer Actor-Class als auch einer Integer Variable?


    Zu Punkt eins:

    Musst du die vielleicht noch vorher aus der anderen Box entfernen?

  • Zu 1. Wie meinst du das mit Zwei Arrays in einem?

    Das wäre meine eigentlich Frage gewesen. So das es dafür keine Verwechslung mehr gibt.

    Wie macht man ein Array mit zwei Funktionen? Sprich ActorClass/Integer Array


    Zu 2.

    Kann ich eine ScrollBox zweimal verwenden und wie geht das? Weil wenn ich zweimal die gleiche ScrollBox habe, dann würde ich mir das hin und her transferieren sparen.

    Was meinst du mit "vorher aus der anderen Box entfernen"?

    Kann man nicht einfach den Inhalt von ScrollBox 1 in ScrollBox 2 "schieben"?

  • Zu 1. Wie meinst du das mit Zwei Arrays in einem?

    Ich meinte, dass du dir eine Struct-Klasse erstellst mit einer Variable für die Actor-Class und einer für die Stückzahl. Dann kannst du ein Array von dieser Struct-Klasse erstellen und kannst für jeden Eintrag einfach Klasse und Anzahl auslesen, da sie immer beisammen sind.


    Zitat

    Zu 2.

    Ich bin halt der Meinung, dass man nicht einfach Add Child aufrufen kann. Theoretisch müsste das Widget, wenn man es nicht vorher entfernt, dann ja an zwei Stellen gleichzeitig ein Child sein. Deshalb wollte ich vorschlagen, ob du das nicht mal testen magst.


    Und ja, theoretisch kannst du auch einfach die Scrollbox verschieben. Wenn sie in einem Canvas-Panel sein sollte, kannst du den Canvas-Panel-Slot für die Scrollbox holen und sie dann verschieben.

  • Hier die Lösung für alle die danach suchen!

    "GetWidgetChildren" von einer ScrollBox, mit ForEachLoop für jedes Teil darin und dann einfach Add zu der anderen ScrolLBox!


    Ich habe das mit einem FlipFlop gemacht, weil das so am besten funktioniert.








    ----------


    Ich habe noch ein Problem mit dem Finden des richtigen Gegenstandes in einem Array.


    Ich habe eine AuftragStruct die verändert wurde, nun muss aus der "AuftragInventar" das alte Struct mit dem neuen Struct ersetzen. Aber der macht das nicht, egal wie ich das drehe und wende.


    "AuftragAuswahlIndexMyCharacter" ist sozusagen der Index für das Widget das man derzeit ausgewählt hat, aber das funktioniert auch nicht!


    Hat da jemand eine Idee wie man in einem Array etwas ersetzen kann?


    Danke