Linienbegleitende Texte |
Top Previous Next |
Mit dem Pseudoattribut $baselineID können die Zeichen eines Textelements entlang des Verlaufs eines Stringelements gezeichnet werden. Dazu muß das Pseudoattribut auf die ID des Stringelements gesetzt werden. Mit dem folgenden Befehl erhält $baselineID des geöffneten Textelements zum Beispiel die ID 0d6488912f7ded58:
Attr( db_GetElement() ->$baselineID 0d6488912f7ded58)
Die ID des Stringelements wird dabei permanent gemacht und ändert daher ihren Wert, wenn sie nicht bereits vorher permanent war. Nach einem Redraw wird der Text dann linienbegleitend gezeichnet. Das folgende kurze Skript demonstriert eine interaktive Anwendung, bei der zuerst das Stringelement und dann das Textelement identifiziert werden und letzteres automatisch linienbegleitend gesetzt wird.
Begin Echo /save Echo /nostop ! ************************************************************************ ! Textelement linienbegleitend zu einem Stringelement setzen. ! 1. Identifizieren des Stringelements ! 2. Identifizieren des Textelements ! ************************************************************************ Declare id ptr res Echo Basislinie identifizieren IdentifyElement /nomarker %%input Value( id DBquery( $id from open string /noq)) c_if "m_lt( 1 s_strlen( Value( id)))" Echo Text identifizieren IdentifyElement /nomarker %%input Value( ptr DBquery( $pointer from open text /noq)) c_if "m_lt( 1 s_strlen( Value( ptr)))" Value( res Attr( Value( ptr) ->$baselineID Value( id))) c_if "m_ne( 0 Value( res))" Echo Attribut $baselineID konnte nicht gesetzt werden c_endIf c_else Echo kein Text c_endIf c_else Echo keine Basislinie c_endIf Clear Redraw Echo /restore End
|