Zeilen nach oben schieben

Startseite Foren Deutsches LiveCode-Forum Zeilen nach oben schieben

Ansicht von 17 Antwort-Themen
  • Autor
    Beiträge
    • #26949
      Oliver122
      Teilnehmer

        Hallo zusammen,

        ich habe mal ein neues Problem. Meine Plattform ist Win.

        Ich versuch das Problem mal zu beschreiben.
        Mit einem Klick auf einen btn kann man eine Zeile aus mehreren Feldern genannt
        grp („block“&s) erzeugen. Das kann man sic wie die Zeilen einer Excel Tabelle vorstellen. Diese kann man dann beschreiben. Das funktioniert auch perfekt.

        Wenn eine Zeile nicht mehr gebraucht wird, kann man sie löschen. Mein Problem ist folgendes:
        Wenn eine Zeile gelöscht wird, sollen alle darunterliegenden aufrücken.
        Dies funktioniert aber nur selten. Meistens rücken sie nicht auf oder werden wild an eine andere Stelle gesetzt.

        Mein aktueller Versuch:

         if there is a grp ("block"&s) and the top of grp ("block"&s) > oben2 then
              put the top of grp ("block"&s) into oben3
              set the top of grp ("block"&s) to oben3 -25 
           end if

        In oben2 steht der top Wert, der gelöschten Zeile.
        Auch andere Varianten haben nicht funktioniert.

        Ich hoffe ihr könnt mit der Beschreibung etwas anfangen.
        Danke im Voraus.

        Oliver

      • #26951
        Klaus Major
        Administrator

          Dein kleines Skript ist natürlich völlig korrekt!

          Daher kommt es auf den Rest des Skriptes an, sieht ja aus,
          als würde Obiges in einem REPEAT Loop vorkommen.
          Also bitte mal posten.

        • #26952
          Oliver122
          Teilnehmer

            Hallo Klaus,

            hier das ges. Skript:

            global s, oben2, posi, lnr, tSkript3, tZahl, zz, grplist, oben3
            
            on openCard
               if the environment is "mobile" then
                  put specialFolderPath("engine") into programmPfad
               else
                  put the filename of this Stack into programmPfad
                  set the itemDelimiter to "/"
                  delete the last item of programmPfad
               end if
               if there is not a folder (specialFolderPath("documents")&"/Speicherdatenhaus/SVar" ) then
                  create folder (specialFolderPath("documents")&"/Speicherdatenhaus/SVar")
               else
                  
               end if
               put programmPfad &"/splash.livecode" into tZieldatei
               start using stack tZieldatei
            end openCard
            
            on posisetzen
               if posi = empty then
                  put empty into lnr
                  put 0 into oben2
                  put 0 into s
                  put empty into grplist
                  put 0 into tZahl
                  repeat with y = 1000000 down to 225 step - 25
                     put y & return after posi
                  end repeat
                  sort lines of posi numeric
                  //speichern
                  posisetzen2
               else
                  posisetzen2
               end if
            end posisetzen
            
            on posisetzen2
               add 1 to s 
               put line 1 of posi into oben2
               delete line 1 of posi
               //speichern
               silberline
            end posisetzen2
            
            // Spalten erstellen
            
            on silberline
               lock screen
               set the label of btn "Münzen2" to "New Line"
               
               create grp ("block"&s) in grp "GoSi"
               put the short name of grp ("block"&s) of grp "GoSi" & return after grplist
               
               create fld "Nr" in grp ("block"&s) of grp "GoSi"
               set the width of fld "Nr" of grp ("block"&s)  to 30
               set the height of fld "Nr" of grp ("block"&s)  to 25
               set the left of fld "Nr" of grp ("block"&s)  to 53
               set the locktext of fld "Nr" of grp ("block"&s) to true
               
               create fld "edelme" in grp ("block"&s) of grp "GoSi"
               set the width of fld "edelme" of grp ("block"&s)  to 250
               set the height of fld "edelme" of grp ("block"&s)  to 25
               set the left of fld "edelme" of grp ("block"&s) to 83
               
               create fld "kafda" in grp ("block"&s) of grp "GoSi"
               set the width of fld "kafda" of grp ("block"&s)  to 100
               set the height of fld "kafda" of grp ("block"&s)  to 25
               set the left of fld "kafda" of grp ("block"&s)  to 333 
               
               create fld "kafpr" in grp ("block"&s) of grp "GoSi"
               set the width of fld "kafpr" of grp ("block"&s)  to 100
               set the height of fld "kafpr" of grp ("block"&s)  to 25
               set the left of fld "kafpr" of grp ("block"&s)  to 433
               
               create fld "anz" in grp ("block"&s) of grp "GoSi"
               set the width of fld "anz" of grp ("block"&s)  to 100
               set the height of fld "anz" of grp ("block"&s)  to 25
               set the left of fld "anz" of grp ("block"&s)  to 533
               
               create fld "gew" in grp ("block"&s) of grp "GoSi"
               set the width of fld "gew" of grp ("block"&s)  to 100
               set the height of fld "gew" of grp ("block"&s)  to 25
               set the left of fld "gew" of grp ("block"&s)  to 633
               
               create fld "uz1" in grp ("block"&s) of grp "GoSi"
               set the width of fld "uz1" of grp ("block"&s)  to 50
               set the height of fld "uz1" of grp ("block"&s)  to 25
               set the left of fld "uz1" of grp ("block"&s)  to 733
               
               create btn "del1" in grp ("block"&s) of grp "GoSi"
               set the width of btn "del1"  of grp ("block"&s)  to 10
               set the height of btn "del1"  of grp ("block"&s)  to 25
               set the left of btn "del1"  of grp ("block"&s)  to 783
               set the label of btn "del1" of grp ("block"&s) to "x"
               put "global zz, posi" & CR & "on mouseUp" & CR & "put the top of the owner of me & return after posi" & CR & "put the short name of the owner of me into zz" & CR & "del1" & CR & "end mouseUp" into tSkript3
               set the script of btn "del1" of grp ("block"&s)  to tSkript3
               
               set the top of grp ("block"&s) of grp "GoSi" to oben2
               add 1 to tZahl
               del2
               unlock screen
            end silberline
            
            on del1
               sort lines of posi numeric
               show grp "dele"
            end del1
            
            on del3
               // Höhen anpassen
            repeat tZahl
                  if there is a grp ("block"&s) and the top of grp ("block"&s) > oben2 then
                     put the top of grp ("block"&s) into oben3
                     set the top of grp ("block"&s) to oben3 -25 
                  end if
            end repeat
               put empty into posi
               repeat with y = 1000000 down to 225 step - 25
                  put y & return after posi
               end repeat
               sort lines of posi numeric
               delete line 1 to tZahl of posi
            end del3
                  
            on del2
               // nummerieren
               put empty into lnr
               if there is a grp ("block"&s) then
                  repeat with g = 1 to tZahl
                     put g & return  after lnr
                  end repeat
                  sort lines of lnr numeric
               end if
               if there is a grp ("block"&s) then
                  repeat for each line c in lnr
                     put line c of lnr into fld "Nr" of grp ("block"&s)
                  end repeat
               end if
            end del2

            Wenn man auf den Löschen btn del1 drückt, wird von tZahl eins abgezogen.
            Durch btn del1 wird die Zeile gelöscht und dann del3 und dann del2 ausgelöst.

          • #26958
            Klaus Major
            Administrator

              Hi Oliver,

              habe heute nicht so viel Zeit, daher hier nur ein paar wichtige Sachen, den Loop schaue ich mir am Wochenende an. Bitte alle Kommentare lesen und verstehen! 🙂

              on openCard
                 #   if the environment is "mobile" then
                 
                 ## Alles was wir unter "Copy files" in den Standalone Application Settings" unserer Runtime hinzugefügt haben,
                 ## finden wir später in -> specialfolderpath("resources")
                 ## Dieser Specialfolderpath funktioniert auch in der IDE
                 #      put specialFolderPath("engine") into programmPfad
                 #   else
                 #      put the filename of this Stack into programmPfad
                 #      set the itemDelimiter to "/"
                 #      delete the last item of programmPfad
                 #   end if
                 
                 ## ABER!!!!
                 ## Wir haben keine Schreibrechte in der Runtime in specialfolderpath("resources")!!!
                 put specialfolderpath("documents") into programmPfad
                 
                 ## Du kannst immer nur EINEN Ordner zur selben Zeit erstellen, 
                 ## daher muss das in zwei Schritten passieren!
                 ## 1.
                 put "/Speicherdatenhaus" after programmPfad
                 if there is not a folder programmPfad then
                    create folder programmPfad
                 end if
                 
                 ## 2. 
                 put "/SVar" after programmPfad
                 if there is not a folder programmPfad then
                    create folder programmPfad
                 end if
                 
                 #   if there is not a folder (specialFolderPath("documents")&"/Speicherdatenhaus/SVar" ) then
                 #      create folder (specialFolderPath("documents")&"/Speicherdatenhaus/SVar")
                 #      ## Ohne einen ELSE Falls brauchen wir auch kein ELSE!
                 #   else
                 
                 #   end if
                 
                 ## WICHTIG!!!
                 ## Du musst er checken, ob es diese Datei dort schon gibt!
                 ## Wenn nicht, musst Du sie von irgedwo (aus specialfolderpath("resources"), denke ich!?)  zuerst dorthin kopieren!
                 ## put programmPfad &"/splash.livecode" into tZieldatei
                 ## start using stack tZieldatei
              end openCard
              ## Sowohl im IF als auch im ELSE Falls gibt es den selben Befehl, das ist Redundanz! :-)
              ## Daher machen wir es besser so:
              on posisetzen
                 if posi = empty then
                    put empty into lnr
                    put 0 into oben2
                    put 0 into s
                    put empty into grplist
                    put 0 into tZahl
                    repeat with y = 1000000 down to 225 step - 25
                       put y & return after posi
                    end repeat
                    sort lines of posi numeric
                    //speichern
                    #      posisetzen2
                    #   else
                    #      posisetzen2
                 end if
                 posisetzen2
              end posisetzen

              Gruß

              Klaus

            • #27014
              Oliver122
              Teilnehmer

                Hallo Klaus,

                kannst du schon was über den Loop sagen?

                Danke im Voraus

                Oliver

              • #27016
                Klaus Major
                Administrator

                  Der Loop selber ist korrekt, aber ganz ohne Zusammenhang.
                  Ich suche nach dem Skript, was eine Deiner Gruppen löscht und die restlichen Gruppen „aufrücken“ lässt!

                • #27019
                  Oliver122
                  Teilnehmer

                    Hallo Klaus,

                    ah ok das stelle ich nachher mit einigen Erläuterungen ein.

                    Danke

                  • #27033
                    Oliver122
                    Teilnehmer

                      Hallo Klaus,

                      das Skript zum Löschen ist:

                      global oben2,zz, tZahl, grplist
                      
                      on mouseUp
                         put the top of grp zz into oben2
                         delete grp zz
                         subtract 1 from tZahl
                         del3
                         del2
                         hide grp "dele"
                      end mouseUp

                      Dies wird über

                      on del1
                         sort lines of posi numeric
                         show grp "dele"
                      end del1

                      aufgerufen. Beim Druck auf ok, wird dann die Zeile gelöscht.

                      Danke für deine Hilfe.

                    • #27034
                      Klaus Major
                      Administrator

                        Wo wird zz mit einem Wert gefüllt?
                        Finde ich nicht in Deinen Skripten hier.

                      • #27041
                        Oliver122
                        Teilnehmer

                          Wenn der btn del1 erzeugt wird.
                          Dieser schreibt den Short name, der grp, bei Benutzung
                          in die Variable zz.

                        • #27054
                          Klaus Major
                          Administrator

                            Ich verstehe leider nicht, nach welchem Prinzip Du die Sache programmiert hast!?

                            Was enthält die Variable -> posi
                            Wozu:

                            ...
                            repeat with y = 1000000 down to 225 step - 25
                               put y & return after posi
                            end repeat
                            ...

                            Wie ist der Workflow, bitte in klaren Worten erklären und kannst Du bitte noch einmal alle Skripte posten mit:
                            #########################################
                            als Trenner für den Ort der Skripte. also sowas:

                            ## Stack script:
                            on openstack

                            #########################################
                            ## Button 1
                            on mouseup

                            ########################################

                            Danke, sonst komme ich nämlich einfach nicht „rein“.

                          • #27066
                            Oliver122
                            Teilnehmer

                              Hallo Klaus,

                              hier das ges. Skript:

                              Skript Card Sparen; Open Card
                              ###########################################################

                              #### Ich denke deine Erklärungen hierzu habe ich verstanden.
                              #### Dasganze wird aber noch angepasst. Das kommt später dran

                              global s, oben2, posi, lnr, tSkript3, tZahl, zz, grplist, oben3
                              
                              on openCard
                                 if the environment is "mobile" then
                                    put specialFolderPath("engine") into programmPfad
                                 else
                                    put the filename of this Stack into programmPfad
                                    set the itemDelimiter to "/"
                                    delete the last item of programmPfad
                                 end if
                                 if there is not a folder (specialFolderPath("documents")&"/Speicherdatenhaus/SVar" ) then
                                    create folder (specialFolderPath("documents")&"/Speicherdatenhaus/SVar")
                                 else
                                    
                                 end if
                                 put programmPfad &"/splash.livecode" into tZieldatei
                                 start using stack tZieldatei
                              end openCard
                              ######################################################################################
                              ## Positionieren erzeugt nur eine Variable posi, in welcher in jeder line der Wert für top steht.
                              ## Wenn man den btn New Line ( Skript kommt noch) klickt und Silber, im Dropdown Menü wählt, wird 
                              ## eine Line aus mehreren Felder erzeugt. Das erste endhählt die LNr., die automatisch eingetragen
                              ## werden soll und das letzte ist ein btn, der die grp "dele" öffnet. Ein fld, mit zwei btn, abbrechen und
                              ## ok. Bein klick auf ok, wird die Zeile gelöscht und alle darunterliegenden sollten nachrücken.
                              ## In den fld dazwischen können Eintragungen gemacht werden.
                              
                              on posisetzen
                                 if posi = empty then
                                    put empty into lnr
                                    put 0 into oben2
                                    put 0 into s
                                    put empty into grplist
                                    put 0 into tZahl
                                    repeat with y = 1000000 down to 225 step - 25
                                       put y & return after posi
                                    end repeat
                                    sort lines of posi numeric
                                    //speichern
                                 end if
                                    posisetzen2
                              end posisetzen
                              
                              ###############################################################################
                              ## Die erstellte grp heißt grp ("block"&s). Die Variable s wir immer um 1 erhöht, damit sie alle
                              ## einen unterschiedlichen Namen haben. line 1 von posi, wird in oben2 kopiert und bildet den Wert für top.
                              ## Damit die nächste line nicht an der gleichen Stelle ist, wird line 1 gelöscht, sodass die nächste
                              ## line um 25 erhöht ist. Wenn eine line gelöscht wird, wird der top Wert an posi zurückgegeben und
                              ## posi numerisch geordnet. Das funktioniert alles. Nur das Aufrücken nicht. 
                              ## // speichern ist nur Platzhalter und kommt noch.
                              
                              on posisetzen2
                                 add 1 to s 
                                 put line 1 of posi into oben2
                                 delete line 1 of posi
                                 //speichern
                                 silberline
                              end posisetzen2
                              
                              // Spalten erstellen
                              ###########################################################################
                              ## Hier wird die line, inkl. Löschen btn (dele1) erzeugt.
                              ## tZahl gibt an wie viele dieser lines existieren. Beim Löschen also auch subtract 1
                              ## del2 wird ausgelöst
                              
                              on silberline
                                 lock screen
                                 set the label of btn "Münzen2" to "New Line"
                                 
                                 create grp ("block"&s) in grp "GoSi"
                                 put the short name of grp ("block"&s) of grp "GoSi" & return after grplist
                                 
                                 create fld "Nr" in grp ("block"&s) of grp "GoSi"
                                 set the width of fld "Nr" of grp ("block"&s)  to 30
                                 set the height of fld "Nr" of grp ("block"&s)  to 25
                                 set the left of fld "Nr" of grp ("block"&s)  to 53
                                 set the locktext of fld "Nr" of grp ("block"&s) to true
                                 
                                 create fld "edelme" in grp ("block"&s) of grp "GoSi"
                                 set the width of fld "edelme" of grp ("block"&s)  to 250
                                 set the height of fld "edelme" of grp ("block"&s)  to 25
                                 set the left of fld "edelme" of grp ("block"&s) to 83
                                 
                                 create fld "kafda" in grp ("block"&s) of grp "GoSi"
                                 set the width of fld "kafda" of grp ("block"&s)  to 100
                                 set the height of fld "kafda" of grp ("block"&s)  to 25
                                 set the left of fld "kafda" of grp ("block"&s)  to 333 
                                 
                                 create fld "kafpr" in grp ("block"&s) of grp "GoSi"
                                 set the width of fld "kafpr" of grp ("block"&s)  to 100
                                 set the height of fld "kafpr" of grp ("block"&s)  to 25
                                 set the left of fld "kafpr" of grp ("block"&s)  to 433
                                 
                                 create fld "anz" in grp ("block"&s) of grp "GoSi"
                                 set the width of fld "anz" of grp ("block"&s)  to 100
                                 set the height of fld "anz" of grp ("block"&s)  to 25
                                 set the left of fld "anz" of grp ("block"&s)  to 533
                                 
                                 create fld "gew" in grp ("block"&s) of grp "GoSi"
                                 set the width of fld "gew" of grp ("block"&s)  to 100
                                 set the height of fld "gew" of grp ("block"&s)  to 25
                                 set the left of fld "gew" of grp ("block"&s)  to 633
                                 
                                 create fld "uz1" in grp ("block"&s) of grp "GoSi"
                                 set the width of fld "uz1" of grp ("block"&s)  to 50
                                 set the height of fld "uz1" of grp ("block"&s)  to 25
                                 set the left of fld "uz1" of grp ("block"&s)  to 733
                                 
                                 create btn "del1" in grp ("block"&s) of grp "GoSi"
                                 set the width of btn "del1"  of grp ("block"&s)  to 10
                                 set the height of btn "del1"  of grp ("block"&s)  to 25
                                 set the left of btn "del1"  of grp ("block"&s)  to 783
                                 set the label of btn "del1" of grp ("block"&s) to "x"
                                 put "global zz, posi" & CR & "on mouseUp" & CR & "put the top of the owner of me & return after posi" & CR & "put the short name of the owner of me into zz" & CR & "del1" & CR & "end mouseUp" into tSkript3
                                 set the script of btn "del1" of grp ("block"&s)  to tSkript3
                                 
                                 set the top of grp ("block"&s) of grp "GoSi" to oben2
                                 add 1 to tZahl
                                 del2
                                 unlock screen
                              end silberline
                              ##################################################################################
                              
                              ## del1 öfnet grp dele, wenn der btn "del1" benutzt wird um eine line zu löschen.
                              
                              on del1
                                 sort lines of posi numeric
                                 show grp "dele"
                              end del1
                              #############################################################################
                              ## Der top Wert, der gelöschten line, wird in oben2 kopiert und alle lines, welche einen
                              ## höheren Topwert haben, sollen aufrücken. Die anderen liegen ja bereits drüber.
                              ## posi wird neu erzeugt und soviele lines of posi gelöscht, wie es grp ("block"&s) gibt
                              ## damit es wieder zusammen passt und eine mögliche neue grp genau unter der letzten erzeugt wird.
                              
                              on del3
                                 // Höhen anpassen
                              repeat tZahl
                                    if there is a grp ("block"&s) and the top of grp ("block"&s) > oben2 then
                                       put the top of grp ("block"&s) into oben3
                                       set the top of grp ("block"&s) to oben3 -25 
                                    end if
                              end repeat
                                 put empty into posi
                                 repeat with y = 1000000 down to 225 step - 25
                                    put y & return after posi
                                 end repeat
                                 sort lines of posi numeric
                                 delete line 1 to tZahl of posi
                              end del3
                              ##################################################################################
                              ## del2 packt die laufende Nr. in das erste Feld, jeder line bzw. grp ("block"&s)
                                    
                              on del2
                                 // nummerieren
                                 put empty into lnr
                                 if there is a grp ("block"&s) then
                                    repeat with g = 1 to tZahl
                                       put g & return  after lnr
                                    end repeat
                                    sort lines of lnr numeric
                                 end if
                                 if there is a grp ("block"&s) then
                                    repeat for each line c in lnr
                                       put line c of lnr into fld "Nr" of grp ("block"&s)
                                    end repeat
                                 end if
                              end del2

                              ##############################################################################
                              ## Dies ist das Skript für den btn, mit welchen ich die lines block… erzeugen kann.
                              ## Die Auswahl Silber ist das was ich gerade schreibe, Gold, was goldline auslöst
                              ## kommt noch, ist aber ähnlich.

                              global menue
                              on menuPick 
                                 put the label of btn "münzen2"into menue
                                 if menue = "Silber" then
                                    posisetzen
                                 else
                                    goldline
                                 end if
                              end menuPick

                              #############################################################################
                              ## Wenn der btn dele1 betätigt wird, öffnet sich die grp dele. Drückt man auf ok,
                              ## wird das o.a. Skript ausgelöst und grp block…. gelöscht.
                              ## zz wird gefüllt, wenn man auf dem btn dele1 drückt, druch den Skriptbefehl
                              ## put the short name of the owner of me into zz. Wie gesagt das funktioniert auch.
                              ## Nur rücken die lines grp block… nicht auf, jedenfalls nicht immer, nur selten.
                              ## Drückt man auf Abbrechen wir natürlich nur hide grp „dele“ ausgelöst.
                              ## Das steht im btn Abbrechen.

                              global oben2,zz, tZahl, grplist
                              
                              on mouseUp
                                 put the top of grp zz into oben2
                                 delete grp zz
                                 subtract 1 from tZahl
                                 del3
                                 del2
                                 hide grp "dele"
                              end mouseUp

                              #############################################################

                              So das müsste eigentlich alles sein. Ich hoffe es ist vollständig und verständlich.

                              Danke schonmal vorab.

                              Gruß

                              Oliver

                            • #27076
                              Oliver122
                              Teilnehmer

                                Eine Sache habe ich noch vergessen. Alle Skripte sind auf der Card, mit Ausnahme der in den beiden btn.
                                Das wird bei einem nächsten Programm sicher besser werden. Da wird mehr Skript im Stack sein. Ich Stack befindet sich z.Z. Nur die Speichergeschichte, welche für Card Sparen noch nicht existiert.

                              • #27077
                                Axwald
                                Teilnehmer

                                  Hallo,

                                  wenn ich das richtig verstehe, baust Du so eine Art Tabellen-Kalkulation aus einzelnen Text-Feldern (eins pro Zelle)? So etwas habe ich mal angefangen, aber dann aufgegeben weil es schnell viel zu langsam wurde. (Sortieren & Löschen vor allem).
                                  Ich benutze jetzt ein normales Feld mit „ListBehavior“ & „tabStopps“ (aber OHNE „Basic Table object“ – das ist immer noch verbugt). Damit verzichte ich zwar auf Ausrichten (links, mitte, rechts) innerhalb der Zellen, dafür ist das sehr schnell & problemlos.
                                  DataGrid passt mir auch nicht, zu umständlich, unflexibel & auch zu träge (IMHO).

                                  Zu Deinem Problem – ein Rat:
                                  Versuche, die Daten zu manipulieren, und dann die Darstellung zu erneuern, also:

                                  1.) Bau Dir ein Skript, das passend zu Deinen Daten die erforderlichen Felder erzeugt, und dann die Daten einsetzt. Dafür eignet sich sehr gut ein „setProp“ Handler in der Gruppe – wenn Du die „cData of this grp“ änderst, löschst Du alle Felder & erzeugst sie neu. Und schreibst die Daten aus cData ‚rein.
                                  Dieses Skript optimierst Du auf Geschwindigkeit – keine „repeat with i“ mehr, nur „repeat for each“ usw. Mit „Lock/ unlock screen“ geht das recht flott.

                                  2.) Wenn jetzt eine Zeile gelöscht wird, löschst Du die in einer Variable (= Kopie von cData), und wirfst die geänderte cData einfach zurück in die Gruppe. Selbiges beim Sortieren. Rumms, wird die Darstellung angepasst 🙂

                                  Am Anfang Deiner setProp („setProp cData theData“, wobei „theData“ = die neuen Daten) prüfst Du, ob theData „empty“ ist (dann löschst Du einfach alle Felder) oder ob „(the number of lines of theData) = (the number of lines of the cData of me)“ ist (dann hat sich die Länge nicht geändert, und Du überschreibst einfach die Zellinhalte).

                                  Vergiss nicht:
                                  – Erst „pass cData“ am Ende der setProp schreibt theData in die „cData of me“ (auch wenn Du schon vorher die Felder ausgefüllt hast)!
                                  – behalte immer mindestens 1 Control (Linie, Rahmen, Hintergrund-Rect …) in der Gruppe – Gruppen ohne Inhalt können verschwinden, auch wenn sie ein Skript haben!

                                  Noch was:
                                  Wo Deine Skripte sich befinden ist weitgehend egal. Ich würde das so machen:
                                  a.) openStack/ preOpenStack: auf der ersten Card. Dann werden sie auch nur beim ersten Start dieses Stacks aufgerufen.
                                  b.) openCard: davon habe ich oft 2 – im Stack & in der Card. Im Stack für das, was immer passiert (z.B. Datum anzeigen), und in der Card das, was für diese Card spezifisch ist (z.B. Laden der Daten). „pass openCard“ am Ende sorgt dafür, daß das Event weitergereicht wird & die 2te Instanz erreicht.
                                  c.) Stack Skript: Alles, was auf mehreren Cards gebraucht wird. Und ggf. Stack-Initialisierung.
                                  d.) Card Skript: Nur das, was spezifisch für diese Card ist.

                                  Ich hoffe, zur allgemeinen Verwirrung beizutragen gekonnt zu haben 😉
                                  Viel Spaß!

                                • #27078
                                  Oliver122
                                  Teilnehmer

                                    Hallo Axwald,

                                    danke für deine Hilfe, aber ganz so soll es nicht sein.
                                    Eine grp Block… besteht aus sieben Feldern und muss auch gelöscht werden. Das erste ist die laufende Nr und alle anderen Können manuell beschrieben werden, zB. Art der Wertanlage, Kaufdatum……
                                    Wird eine Zeile bzw. Grp gelöscht, wurde diese Wertanlage verkauft.

                                    Grüße

                                    Oliver

                                  • #27092
                                    Axwald
                                    Teilnehmer

                                      Hallo,

                                      was ich meine ist das:
                                      Deine _Daten_ sind eine Tabelle. Die _Darstellung_ ist ein Haufen von Feldern.

                                      Du hast sowieso eine Funktion, die die _Daten_ in die _Darstellung_ übersetzt – sonst könntest Du sie nicht sehen.

                                      Statt nun, wenn Zeile 3 gelöscht wird, mit großem Aufwand die _Darstellung_ zu ändern (alle Felder in Zeile 3 löschen, alle Zeilen in Zeile 4 – 2.345 jeweils 1 nach oben schieben, evtl. laufende Nummern neu berechnen), kannst Du auch einfach sagen:

                                      delete line 3 of myData
                                      drawFields myData

                                      (wobei „drawFields“ der Handler wäre, der die _Darstellung_ erzeugt, und „myData“ – nun, die Daten)
                                      Damit sparst Du Dir einen Haufen unnötiger & fehlerträchtiger Coderei.

                                      So würde ich es jedenfalls machen. Viel Spaß!

                                    • #27174
                                      Klaus Major
                                      Administrator

                                        Hi Oliver,

                                        ich habe leider keine Zeit, das alles nachzubauen.
                                        Wenn Du magst, darfst Du mir Deinen Stack rüberschicken, dann schaue ich mal drüber.

                                        Gruß

                                        Klaus

                                      • #28177
                                        Oliver122
                                        Teilnehmer

                                          Hallo Klaus,

                                          es hat etwas länger gedauert, weil ich mich länger damit nicht beschäftigt habe.
                                          Manche der Befehle kannte ich nicht. Die hätten einiges erleichtert.
                                          Jetzt funktioniert es sehr gut.

                                          Bin gerade dabei mich da einzuarbeiten, aber schonmal tausend Dank für deine Hilfe.
                                          Du hast es echt super gemacht.

                                          Grüße Oliver

                                      Ansicht von 17 Antwort-Themen
                                      • Du musst angemeldet sein, um auf dieses Thema antworten zu können.