Script: Listeneinstellungen kopieren

Kopiert die Listeneinstellung eines anderen Ordners in den aktuellen Ordner.

Ausführen

Muss auf dem Ordner ausgeführt werden, der die Listeneinstellungen erhalten soll. Für das Kopieren von Listeneinstellungen gibt es auch die Excel-Datei Listeneinstellungen kopieren (via Excel). Diese kann auch auf Containern ausgeführt werden.

Der Ordner, der die Listeneinstellungen enthält, muss über die ID angegeben werden. Sie können die ID einsehen, indem Sie auf dem Ordner mit rechter Maustaste Eigenschaften anwählen.

Script

CopyListeneinstellungen.py

Scripttext

# coding: windows-1252
#
#---Bezeichnung: Listeneinstellungen kopieren
#   Klassen: Eintrag
#   CondExpression:
#   ObjectScript: No
#   ContainerScript: Yes
#   EventType: Kein
#   EventClass:
#   EventMembers:
#   ExtendedRights: N
#---Kopiert die Listeneinstellung eines anderen
#   Ordners in den aktuellen Ordner. Muss auf dem Ordner
#   ausgeführt werden, der die Listeneinstellungen erhalten soll.
#   Der Ordner, von dem die Listeneinstellungen übernommen werden sollen,
#   muss über die ID angegeben werden.
#   Die ID finden Sie auf dem Ordner mit rechter Maustaste > Eigenschaften.
#---Ab Vertec Version 5.0.6. Berücksichtigt das GridDef Objekt.
#---28.11.2005, Vertec AG: erstellt
#---15.10.2013, mw: Angepasst auf 5.8: xTranslation gelöscht, Abbruchbedingungen implementiert.
#---10.03.2017, sr: Script in Python erstellt
#---21.03.2017, tk: Script ist auch auf LinkContainern ausführbar
#---                Kopieren der Attribute editing, ghostrow und controlDefinition

def copymember(sourcegridcol, destinationgridcol, name):
    setattr(destinationgridcol, name, getattr(sourcegridcol, name))

def main(destination):
    #Ist das aktuelle Objekt ein Ordner
    
    if not destination.eval('oclisKindOf(AbstractOrdner)'):
        if destination.eval("oclIsKindOf(LinkContainer)"):
            destination = destination.rolle
        else:
            destination = Nothing
            vtcapp.msgbox('Sie können dieses Skript nur auf einem Ordner und LinkContainern ausführen')
    
    if destination:
        sourceID = vtcapp.inputbox('Vertec','Geben Sie die ID des Ordners an, dessen Listeneinstellungen Sie übernehmen möchten','')
        try:
            source = vtcapp.getobjectbyid(sourceID)
            #Analog zur destination
            if source.eval("oclIsKindOf(LinkContainer)"):
                source = source.rolle
            #Erst werden die bestehenden GridDef's gelöscht.
            for griddef in list(destination.griddefs):
                destination.griddefs.remove(griddef)
            #Hole nun die GridDefs des Source-Ordners
            for griddefs in source.griddefs:
                griddefd = vtcapp.createobject('GridDef')
                destination.griddefs.append(griddefd)
                #Kopiere die GridDefs
                copymember(griddefs, griddefd, 'klasse')
                copymember(griddefs, griddefd, 'zeilenhoehe')
                copymember(griddefs, griddefd, 'editing')
                copymember(griddefs, griddefd, 'ghostrow')
                #---Kann nun die gridcoldefs kopieren.
                for gridcols in griddefs.gridcols:
                    gridcold = vtcapp.createobject('GridColDef')
                    griddefd.gridcols.append(gridcold)
                    copymember(gridcols, gridcold, 'alignment')
                    copymember(gridcols, gridcold, 'breite')
                    copymember(gridcols, gridcold, 'color')
                    copymember(gridcols, gridcold, 'controlName')
                    copymember(gridcols, gridcold, 'expression')
                    copymember(gridcols, gridcold, 'writeableExpression')
                    copymember(gridcols, gridcold, 'fontColor')
                    copymember(gridcols, gridcold, 'fontName')
                    copymember(gridcols, gridcold, 'fontSize')
                    copymember(gridcols, gridcold, 'fontStyle')
                    copymember(gridcols, gridcold, 'nurLesen')
                    copymember(gridcols, gridcold, 'orderIdx')
                    copymember(gridcols, gridcold, 'rendererName')
                    copymember(gridcols, gridcold, 'representation')
                    copymember(gridcols, gridcold, 'sortOrder')
                    copymember(gridcols, gridcold, 'summiert')
                    copymember(gridcols, gridcold, 'tabStop')
                    copymember(gridcols, gridcold, 'titel')
                    copymember(gridcols, gridcold, 'titelAlignment')
                    copymember(gridcols, gridcold, 'titelColor')
                    copymember(gridcols, gridcold, 'titelFontColor')
                    copymember(gridcols, gridcold, 'titelFontName')
                    copymember(gridcols, gridcold, 'titelFontSize')
                    copymember(gridcols, gridcold, 'titelFontStyle')
                    copymember(gridcols, gridcold, 'dpklasse')
                    copymember(gridcols, gridcold, 'controlDefinition')
            # Nur für Ordner:
            if source.eval('oclisKindOf(AbstractOrdner)') and destination.eval('oclisKindOf(AbstractOrdner)'):
                destination.tabsproklasse = source.tabsproklasse
        except:
            vtcapp.msgbox('Kein Ordner mit dieser ID gefunden')

main(argobject)

28.11.2005 | 04.04.2017: Script ersetzt: Ist neu auch auf LinkContainern ausführbar. Kopieren der Attribute editing, ghostrow und controlDefinition.
Produktlinien: Expert
Module: Leistung & CRM