Objekt bearbeiten=>Eigenschaften

In diesem Dialogfeld kann der Objekt-Name bearbeitet werden sowie andere Eigenschaften eines Objekts festgelegt werden.

../../_images/ObjektbearbeitenEigenschaften.png
Name
In Textfeld können Sie den Namen eines Objekts ändern. Der Objekt-Name wird angezeigt, wenn Sie die Funktion ObjShow im Kommandofenster aufrufen (siehe Ansicht=>Kommando-Fenster).
Position und Größe schützen
Sie können die Position und Größe von Flächen-Objekten gegen versehentliches Verändern mit der Maus schützen.
Nicht Drucken
Mit diesem Kontrollfeld können Sie festlegen, das ein Objekt nur auf dem Monitor angezeigt wird.
Als Schaltfläche anzeigen
Der Text wird als graue Schaltfläche angezeigt. Beim Überfahren der Schaltfläche ändert sich die Farbe in blau.
OnClick-Callback-Name

Hier kann der Name einer Funktion angegeben werden, der beim Klicken der Schaltfläche aufgerufen wird.

Beispiel: Es soll eine Schaltfläche erzeugt werden, die beim Anklicken das Dokument als PDF-Datei schreibt.

Erzeugen Sie dazu die folgende Datei und speichern Sie sie im Autoload-Verzeichnis von UniPlot, damit sie nach jedem Start von UniPlot zur Verfügung steht:

def button_pdf_export()
{
    hDoc = AppGetActiveDocument();
    ssPath = DocGetPathName(hDoc);
    if (ssPath == "") {
        MessageBoxError("Please save the UniPlot document before PDF-Export");
        return FALSE;
    }
    sv = SplitPath(ssPath);
    sv[4] = ".pdf";
    DocPrintPDF(hDoc, sum(sv));
    ShellExecute(sum(sv));
    return TRUE;
}

Anstatt die Funktion im Autoload-Verzeichnis von UniPlot zu speichern, können Sie sie auch mit DocSetScript im Dokument einbetten.

Anmerkungen

  • Wenn die Callback-Funktion eingeschaltet ist, kann das Textfeld noch über die rechte Maustaste bearbeitet werden.

  • Über hMap = OBJGetMap(hText, "CallbackFunctions") erhält man den Namen der Callback-Funktion (siehe OBJGetMap, MapLookup, MapPrint).

  • Über _g()._handle kann innerhalb der Callbackfunktion auf die Zugriffsnummer des Textfeldes zugegriffen werden. Die Callbackfunktion kann z. B. den Anzeigetext der Schaltfläche ändern.

  • Über das Attribut „Nicht drucken“ (BL_NOPRINT, siehe auch OBJSetProtect) kann die Druckausgabe verhindert werden, wenn das Textfeld nur als Schaltfläche verwendet werden soll.

  • Über OBJGetProtect / OBJSetProtect können die Attribute BL_CLICKBUTTON, BL_DISPLAYBUTTON per Programm verändert werden.

  • Sollen der Callback-Funktion weitere Informationen zur Verfügung stehen kann hinter den Funktionsnamen ein Fragezeichen ? geschrieben werden, gefolgt von beliebigem Text. Es empfiehlt sich die Query-String Syntax von URLs (Uniform Resource Locator), also ?par1=val1&par2=val2.

    Beispiel 1: Hyperlink-Funktion:

    // button_link?http://www.uniplot.de
    def button_link()
    {
        hTB = _g()._handle();
    
        ssFuncName = ObjectGetCallbackFunctionName(hTB, "ObjectClickCallback");
        sv = strtok(ssFuncName, "?")
        if (len(sv) >= 2) {
            s = strcat(sv[2:len(sv)], "?")
            ShellExecute(s);
        } else {
            ShellExecute(TBGetText(hTB));
        }
    }
    

    Die Funktion prüft, ob Text hinter dem ? vorhanden ist, falls ja wird dieser Text als Ziel verwendet, ansonsten wird der Text des Textfeldes verwendet. Als Ziel können Internetseiten oder Dateien angegeben werden, siehe ShellExecute.

    Beispiel 2: Achsen Ein- und Ausschalten:

    ../../_images/button.png

    Quelltext:

    // button_layer_show?Diagram1
    def button_layer_show()
    {
        hTB = _g()._handle();
        hPage = AppGetActivePage()
    
        ssFuncName = ObjectGetCallbackFunctionName(hTB, "ObjectClickCallback");
        sv = strtok(ssFuncName, "?")
    
        hLayer = PageGetLayerHandle(hPage, sv[2])
        nFlags = OBJGetProtect(hLayer)
        if (nFlags & BL_HIDE) {
            OBJSetProtect(hLayer, nFlags & ~BL_HIDE)
            TBSetText(hTB, "Hide")
        } else {
            OBJSetProtect(hLayer, nFlags | BL_HIDE)
            TBSetText(hTB, "Show")
        }
        PageReplot(hPage);
        return TRUE;
    }
    

id-665238