GenContentClass mit Gen-Objekten...

  • Hallo liebe Programmierer (hallo Rainer!),

    ich beobachte ein merkwürdiges Phänomen.... vielleicht hat das ja schon mal jemand gehabt.

    Ich habe einen GenView mit einem GenContent. Dem GenContent werden zur Laufzeit dynamisch Trigger hinzugefügt (via ObjInstantiate). Das klappt auch problemlos. Hintergrund, warum die Trigger in einem GenContent sitzen, ist, dass das Fenster eine stabile Größe haben und die Liste mit den Buttons scrollbar sein soll. Das funktioniert so auch.

    Wenn ich nun zur Laufzeit die Buttons verändere, läuft das so, dass ich zuerst alle Buttons vom GenContent entferne und hinterher wieder neu anlegen lassen. Dabei kommt es aber nun zu dem Effekt, dass die Buttons MANCHMAL (nicht immer!) hinterher als TOOL-Buttons (also mit flachen Rand) angezeigt werden. Initial passiert das nie, da werden sie immer sauber als Buttons gerendert, aber wenn ich sie später neu anlegen lasse, gibt es den genannten Effekt. (....überschreibe ich irgendwo illegal Speicher und merke es nicht :pinch: ????)

    Vielen Dank wie immer im Voraus!

  • Hallo Konstantin,

    ich frage mich, welche Änderungen du vornimmst, dass es nötig ist alle Button zu destroyen (machst du doch, oder) und dann wieder neu anzulegen. Bei mir hat es immer gereicht, den zu ändernden Button NOT_USABLE zu setzen, die Änderungen vorzunehmen und ihn dann wieder auf _USABLE setzen. Ggf setzt du temporäre das ganze GenContent auf NOT_USABLE.

    Ansonsten: Was sagt pobj unter swat? Ein guter Test für Speicher-Lecks ist auch das EC-Flag unlock-move. Ich benutze als finalen Test oft "ec all".

    Soweit erst mal
    Rainer

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

  • Hm, okay. Also die Buttons werden deswegen alle immer entfernt und wieder angelegt, weil sie völlig dynamisch sind, das heißt weder Moniker, Reihenfolge oder Anzahl ist in Stein gemeißelt. Vielleicht bin ich aber auch durch die Webprogrammierung verdorben, wo man sowas üblicherweise so handhabt...

    Die Idee mit USABLE für den GenContent war natürlich prima, leider funktioniert es in diesem speziellen Kontext (FM-Tool) nicht: nach dem NOT_USABLE setzen kriege ich das GenContent mit SET_USABLE nicht wieder sichtbar - warum auch immer....

    Ansonsten: inwiefern würde mir pobj helfen? Und wie setze ich das "Unlock-move" flag? Und wann rufe ich "ec all" auf - wenn ich das nach Beendigung des Tools tue, macht er einfach gar nix....?

    "Hilf mir, o Weiser!"

    :)

    Schönes Wochenende!

    Konstantin

  • Ich hab meine Trigger jetzt noch mal in eine GenInteraction gepackt, was noch zwei - drei andere Vorteile hat (es funktionieren noch ein paar andere Hints). Damit scheint es zu gehen.

  • nach dem NOT_USABLE setzen kriege ich das GenContent mit SET_USABLE nicht wieder sichtbar

    Ist ja komisch. Ruf mal versuchsweise für das View die Readraw_content Message. Ansonsten klappere ich in solchen Fällen die Liste Messages der betroffenen Objkete (in dem Fall der View und Content ) ab und probiere aus, was mir nur irgendwie sinnvoll erscheint. Try and (viel) error.

    Ansonsten: inwiefern würde mir pobj helfen? Und wie setze ich das "Unlock-move" flag? Und wann rufe ich "ec all" auf - wenn ich das nach Beendigung des Tools tue, macht er einfach gar nix....?

    Du musst einen Breakpoint so setzen, dass dein Tool gerade aktiv ist. Z.B. "stop in VonMeinemToolgerufeneRoutine". ** Dann brauchts du den optr des interessanten Triggers, der ggf den falschen HINT enthält und rufst am prompt "pobj OptrDesTriggers". Das listet die Instancevariablen inklusive der gesetzten Hints auf und auch alles was ggf. dort an Müll steht. Wenn du das noch nie gemacht hast, ist es interessant, das mal auf andere Objekte anzuwenden.

    Für die EC-Flags muss die EC-Version laufen. Im Breakpoint-Prompt einfach "ec all" ("ec" listet alle gesetzten Flags) und später "ec none", wenn sie wieder weg sollen. "ec unlock-move" setzt nur genau dieses eine Flag. "help ec" oder "help pobj" am Prompt kann auch helfen

    Falls du es noch nicht durch hast, empfehle ich das Tutorial aus dem SDK. Da sind eine ganze Menge nützliche swat-Befehle eingestreut und erklärt was sie tun. Ich fand das sehr hilfreich.

    So, ich hoffe ich habe jetzt nicht zu viele Eulen nach Athen getragen.

    Viel Spaß
    Rainer

    ** Am Prompt nach "Ctrl-C" einfach den Namen des Threads eingeben, den du debuggen willst, geht auch. Welcher das beim FM-Tool ist, weiß ich aber nicht aus dem Kopf.

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

  • Danke noch mal für die Swat-Tipps, Rainer.... Mit Swat stehe ich immer noch auf Kriegsfuß. Vor allem auch, weil die Kommandohistorie bei mir nicht so will.... Scheint aber an ChromeOS zu liegen....

  • Gerne doch. Bei mir funktioniert am swat-Prompt das Einfügen der Zwischenablage per rechter Maustaste sowie das Kopieren von Text aus dem swat-prompt nach Markieren mit der Maus. Das ist echt hilfreich und spart eine Haufen Tipparbeit.
    Rainer

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.