Kleineres Ärgernis mit der WPS
Kleineres Ärgernis mit der WPS
Schon seit Urzeiten beobachte ich ein lästiges Verhalten bei der Positionierung von Icons auf der Arbeitsoberfläche (bzw. Desktop), aber auch in Ordnern, die ich auf dem Desktop angelegt habe.
Nach jedem System-Neustart sind einige der Icons nicht mehr da, wo ich sie zuvor platziert hatte. Zumeist sind sie nach oben gerutscht, mit der Folge, dass ich am rechten Rand einen vertikalen Scroll-Balken kriege. (Ich meine nicht den Fall von System-Crash, nach dem zuvor frisch angelegte Icons im Nirvana stehen.)
Das trifft nicht für alle Icons zu, aber ich kann da keine Regelmäßigkeit entdecken.
Auf der Suche nach einer Ursache ist mir bewußt geworden, dass ich gar nicht weiß, wo die Bildschirm-Positionen für Objekte gespeichert sind. Weiß da jemand Genaueres? Und gibt es Möglichkeiten, diese Bildschirm-Positionen zu korrigieren? Dann könnte man vielleicht ein Rexx-Script schreiben, das diese Korrektion vornimmt (im Startup-Folder).
In dem Zusammenhang ist mir noch eine Merkwürdigkeit aufgefallen:
Es gibt eine Rexx-Funktion SysCreateObject(). Dort kann man als Teil des Setup-Strings die gewünschte Bildschirm-Position ("ICONPOS=") mitgeben. Vergeblich aber suche ich nach einer entsprechenden Funktion SysQueryObject(), wo man die Parameter abfragen könnte. Gibt es die tatsächlich nicht oder habe ich nur nicht richtig gesucht? Eine solche Funktion könnte mein Problem der verrutschten Icons leicht lösen.
Danke,
Lutz Wagner
Nach jedem System-Neustart sind einige der Icons nicht mehr da, wo ich sie zuvor platziert hatte. Zumeist sind sie nach oben gerutscht, mit der Folge, dass ich am rechten Rand einen vertikalen Scroll-Balken kriege. (Ich meine nicht den Fall von System-Crash, nach dem zuvor frisch angelegte Icons im Nirvana stehen.)
Das trifft nicht für alle Icons zu, aber ich kann da keine Regelmäßigkeit entdecken.
Auf der Suche nach einer Ursache ist mir bewußt geworden, dass ich gar nicht weiß, wo die Bildschirm-Positionen für Objekte gespeichert sind. Weiß da jemand Genaueres? Und gibt es Möglichkeiten, diese Bildschirm-Positionen zu korrigieren? Dann könnte man vielleicht ein Rexx-Script schreiben, das diese Korrektion vornimmt (im Startup-Folder).
In dem Zusammenhang ist mir noch eine Merkwürdigkeit aufgefallen:
Es gibt eine Rexx-Funktion SysCreateObject(). Dort kann man als Teil des Setup-Strings die gewünschte Bildschirm-Position ("ICONPOS=") mitgeben. Vergeblich aber suche ich nach einer entsprechenden Funktion SysQueryObject(), wo man die Parameter abfragen könnte. Gibt es die tatsächlich nicht oder habe ich nur nicht richtig gesucht? Eine solche Funktion könnte mein Problem der verrutschten Icons leicht lösen.
Danke,
Lutz Wagner
Das hängt u. a. davon ab, ob auch einige der Objektsymbole fixiert worden sind.
Wenn es kein Object REXX sein soll, hilft in diesem Fall die Bibliothek WPTools (ftp://ftp.netlabs.org/pub/wptools/hektools.zip) weiter.In dem Zusammenhang ist mir noch eine Merkwürdigkeit aufgefallen:
Es gibt eine Rexx-Funktion SysCreateObject(). Dort kann man als Teil des Setup-Strings die gewünschte Bildschirm-Position ("ICONPOS=") mitgeben. Vergeblich aber suche ich nach einer entsprechenden Funktion SysQueryObject(), wo man die Parameter abfragen könnte. Gibt es die tatsächlich nicht oder habe ich nur nicht richtig gesucht? Eine solche Funktion könnte mein Problem der verrutschten Icons leicht lösen.
Dagegen hilft einen fehlerhaften Eintrag aus der Ini zu löschen. Leider wird der von Zeit zu Zeit wieder neu und falsch geschrieben.
MovingDesktopObjects auf Hobbes
Von der .cmd-Datei ein Programmobjekt erzeugen und den Parameter "run" eintragen. Dieses Programmobjekt dann am besten in den Shutdown-Folder verschieben. Falls kein Ini-Eintrag gefunden wird, ist alles gut, das Skript gibt dies aber trotzdem aus.
Den Shutdown-Folder musst Du erzeugen, wenn er noch nicht existiert: Desktop -> Kontextmenü -> Properties -> Seite XShutdown:
[ Create XShutdown folder ]
Statt des Shutdown-Folders kannst Du notfalls auch den Startup-Folder nehmen.
Das funktioniert auf meinen System schon seit 2014. In das nächste IFX wird das übrigens eingebaut sein.
MovingDesktopObjects auf Hobbes
Von der .cmd-Datei ein Programmobjekt erzeugen und den Parameter "run" eintragen. Dieses Programmobjekt dann am besten in den Shutdown-Folder verschieben. Falls kein Ini-Eintrag gefunden wird, ist alles gut, das Skript gibt dies aber trotzdem aus.
Den Shutdown-Folder musst Du erzeugen, wenn er noch nicht existiert: Desktop -> Kontextmenü -> Properties -> Seite XShutdown:
[ Create XShutdown folder ]
Statt des Shutdown-Folders kannst Du notfalls auch den Startup-Folder nehmen.
Das funktioniert auf meinen System schon seit 2014. In das nächste IFX wird das übrigens eingebaut sein.
Andreas Schnellbacher
@akt120:
Danke für den Tip. Die hektools enthalten tatsächlich ein Äquivalent des von mir vermißten SysQueryObject(). Bei ihm heißt die Funktion WPToolsQueryObject und macht genau das, wonach ich gesucht habe: Den Setupstring eines vorgegebenen Objektes zu extrahieren.
Jedoch gibt's da einen Haken:
Wenn ich ein Objekt erzeuge, z.B. ein Programm-Objekt (mit SysCreateObject()), dann kann ich mittels SetupString die von mir gewünschte Icon-Position mitgeben: "ICONPOS=x,y" (wobei interessanterweise x,y nicht etwa Pixel-Koordinaten sind, sondern Prozentsätze vom Bildschirm, ausgehend von links unten).
Das funktioniert problemlos, jedoch:
Wenn ich nun aber diese Icon-Position wieder abfragen will, nützt mir Henk's WPToolsQueryObject() leider gar nichts: Diese Funktion liefert mir zwar den korrekten SetupString zurück, aber leider ausgerechnet ohne den ICONPOS-Parameter.
@aschn:
Das Problem, für das du dieses MovingDesktopObjects geschrieben hast, scheint tatsächlich genau meines zu sein (wobei ich bis dato nicht wußte, was die Ursache dafür ist). Ich habe mal in das Rexx-Script reingeschaut: Sehe ich das richtig, dass dein Script die fehlerhaften Icon-Positionen nicht korrigiert, sondern die Angaben aus der OS2.INI entfernt?
Führt das nicht dazu, dass das Objekt beim nächsten Systemstart "irgendwo" planlos in der Gegend herumhängt (wahrscheinlich einfach von oben links am Bildschirmrand angeordnet)?
Mein Ziel wäre es:
Ein Script im Shutdown-Folder, das alle Icon-Positionen ausliest und irgendwo speichert. Dann ein zweites Script (im Startup-Folder oder nach Bedarf), das alle (oder ausgewählte) Icon-Positionen wieder herstellt. Das müßte doch möglich sein?
BTW:
Als wertvolle Erkenntnis aus der Lektüre deines Scriptes nehme ich mit: Die Icon-Positionen werden in der OS2.INI gespeichert, und zwar nicht etwa unter ihrer ObjectID (wo ich vergeblich gesucht hatte), sondern gemeinsam in der INI-App 'PM_Workplace:Location'. Uff, das ist schon so ein Geheimwissen ...![Lächeln :-)](./images/smilies/icon_e_smile.gif)
Gibt's da eigentlich Literatur drüber?
Danke,
Lutz Wagner
Danke für den Tip. Die hektools enthalten tatsächlich ein Äquivalent des von mir vermißten SysQueryObject(). Bei ihm heißt die Funktion WPToolsQueryObject und macht genau das, wonach ich gesucht habe: Den Setupstring eines vorgegebenen Objektes zu extrahieren.
Jedoch gibt's da einen Haken:
Wenn ich ein Objekt erzeuge, z.B. ein Programm-Objekt (mit SysCreateObject()), dann kann ich mittels SetupString die von mir gewünschte Icon-Position mitgeben: "ICONPOS=x,y" (wobei interessanterweise x,y nicht etwa Pixel-Koordinaten sind, sondern Prozentsätze vom Bildschirm, ausgehend von links unten).
Das funktioniert problemlos, jedoch:
Wenn ich nun aber diese Icon-Position wieder abfragen will, nützt mir Henk's WPToolsQueryObject() leider gar nichts: Diese Funktion liefert mir zwar den korrekten SetupString zurück, aber leider ausgerechnet ohne den ICONPOS-Parameter.
@aschn:
Das Problem, für das du dieses MovingDesktopObjects geschrieben hast, scheint tatsächlich genau meines zu sein (wobei ich bis dato nicht wußte, was die Ursache dafür ist). Ich habe mal in das Rexx-Script reingeschaut: Sehe ich das richtig, dass dein Script die fehlerhaften Icon-Positionen nicht korrigiert, sondern die Angaben aus der OS2.INI entfernt?
Führt das nicht dazu, dass das Objekt beim nächsten Systemstart "irgendwo" planlos in der Gegend herumhängt (wahrscheinlich einfach von oben links am Bildschirmrand angeordnet)?
Mein Ziel wäre es:
Ein Script im Shutdown-Folder, das alle Icon-Positionen ausliest und irgendwo speichert. Dann ein zweites Script (im Startup-Folder oder nach Bedarf), das alle (oder ausgewählte) Icon-Positionen wieder herstellt. Das müßte doch möglich sein?
BTW:
Als wertvolle Erkenntnis aus der Lektüre deines Scriptes nehme ich mit: Die Icon-Positionen werden in der OS2.INI gespeichert, und zwar nicht etwa unter ihrer ObjectID (wo ich vergeblich gesucht hatte), sondern gemeinsam in der INI-App 'PM_Workplace:Location'. Uff, das ist schon so ein Geheimwissen ...
![Lächeln :-)](./images/smilies/icon_e_smile.gif)
Gibt's da eigentlich Literatur drüber?
Danke,
Lutz Wagner
Probier's doch einfach aus. Wenn die Symbole verschoben sind, dann musst Du sie aber noch einmal von Hand verschieben, bis der Rollbalken weg ist.
Vieles ist undokumentiert, aber es gibt Einige, die ein paar Gesetzmäßigkeiten herausgefunden haben.
Vieles ist undokumentiert, aber es gibt Einige, die ein paar Gesetzmäßigkeiten herausgefunden haben.
Zuletzt geändert von aschn am So 13. Okt 2019, 17:41, insgesamt 1-mal geändert.
Andreas Schnellbacher
Hier benötigt man die Informationen, welche in dem erweiterten Attribut (.ICONPOS) des entsprechenden Ordnerobjekts, der die fraglichen Objekte enthält, eingetragen sind.
Mit den SOM-tauglichen Sprachen könnte man die jeweiligen Methoden nutzen:
~ wpFreeIconPosData
~ wpInitIconPosData
~ wpQueryDefaultIconPosition
~ wpQueryIconPosition
~ wpQueryNextIconPosition
~ wpSetDefaultIconPosition
~ wpSetNextIconPosition
~ wpStoreIconPosData
Siehe Workplace Shell Programming Reference für weiterführende Beispiele
Danke für diesen Hinweis.
Jetzt müßte ich nur noch wissen, wie die Daten gegliedert sind (hinter den 2 Bytes Typ-Info).
Hab die genannten Manuals in edm2.com gefunden (CP1.INF, CP2.INF, CP3.INF). Kann dort leider zwar zahlreiche Methoden finden, die sich um die .ICONPOS drehen, nur leider keine Datenstruktur.
Kannst du mir da weiterhelfen?
Danke,
Lutz Wagner
Zuletzt geändert von DonLucio am Mo 14. Okt 2019, 19:06, insgesamt 1-mal geändert.
Das sollte implementierungsabhängig dem Datentyp POINTL oder dem jeweiligen Zeiger entsprechen.
Wenn man das Toolkit bereits installiert hat, erhält man die WP Shell Programming Reference aus den Dateien wps1.inf+wps2.inf+wps3.inf (im Unterverzeichnis \os2tk45\book), welche die Datentypen zumindest C-mäßig beschreibt. Oder einfach mal in der \os2tk45\inc\pmwp.inc bzw pmtypes.inc nachsehen, bzw. \idl\wptypes.idl.Hab die genannten Manuals in edm2.com gefunden (CP1.INF, CP2.INF, CP3.INF). Kann dort leider zwar zahlreiche Methoden finden, die sich um die .ICONPOS drehen, nur leider keine Datenstruktur.
Zuletzt geändert von ak120 am Do 17. Okt 2019, 10:42, insgesamt 1-mal geändert.
Wieviele verschiedene "Toolkits" gibt es eigentlich?ak120 hat geschrieben: ↑Do 17. Okt 2019, 09:57 Wenn man das Toolkit bereits installiert hat, erhält man die WP Shell Programming Reference aus den Dateien wps1.inf+wps2.inf+wps3.inf (im Unterverzeichnis \os2tk45\book), welche die Datentypen zumindest C-mäßig beschreibt. Oder einfach mal in der \os2tk45\inc\pmwp.inc bzw pmtypes.inc nachsehen, bzw. \idl\wptypes.idl.
Ich habe installiert das "IBM Developer's Toolkit for OS/2 2.1." Es befindet sich in x:\Toolkit21 und enthält im ..BOOK\-Unterverzeichnis diese inf-Dateien:
Code: Alles auswählen
cpgref1 .inf 711,830 .a.. 30-04-93 1:29:12
cpgref2 .inf 366,241 .a.. 30-04-93 1:34:32
cpgref3 .inf 565,951 .a.. 22-04-93 19:43:58
ipfc20 .inf 461,870 .a.. 30-04-93 1:26:02
ipfcexmp .inf 128,733 .a.. 22-04-93 19:33:28
kdebug .inf 94,381 .a.. 30-04-93 1:22:12
pmfun .inf 625,695 .a.. 22-04-93 19:54:42
pmgpi .inf 944,784 .a.. 6-05-93 22:15:28
pmhok .inf 193,463 .a.. 22-04-93 20:09:42
pmmsg .inf 1,286,089 .a.. 22-04-93 20:31:40
pmrel .inf 303,638 .a.. 22-04-93 20:34:50
pmwin .inf 905,173 .a.. 6-05-93 22:24:52
pmwkp .inf 543,357 .a.. 6-05-93 22:31:12
rexxapi .inf 113,048 .a.. 22-04-93 20:57:22
som .inf 200,863 .a.. 22-04-93 19:40:10
toolinfo .inf 389,291 .a.. 6-05-93 22:17:06
Zum Thema selbst ist zu sagen: Ich habe beschlossen, darauf zu verzichten, das Geheimnis der .ICONPOS selbst zu ergünden. Immerhin ist es in Hank Kelders Paket WPTOOLS ausreichend gelöst. Wie er es geschafft hat, diese .ICONPOS zu ermitteln, will ich gern sein Geheimnis sein und bleiben lassen
![Lächeln :-)](./images/smilies/icon_e_smile.gif)
Gruß,
Don Lucio.
Zu jeder OS/2-Version zumindest eines.
Es sollte nachvollziehbar sein, daß ein Toolkit von 1993, welches für die OS/2 Versionen 1.3 bis 2.1 durchaus brauchbar ist, die in Warp 4 enthaltenen zusätzlichen Funktionen nicht umfaßt.Ich habe installiert das "IBM Developer's Toolkit for OS/2 2.1." Es befindet sich in x:\Toolkit21 und enthält im ..BOOK\-Unterverzeichnis diese inf-Dateien:
Spätestens seit dem Jahr 2001 wird das Toolkit auf den Installationsmedien des Betriebssystems mitgeliefert, dort wo auch Java und der Webbrowser drauf sind.
Zuletzt geändert von ak120 am So 20. Okt 2019, 00:17, insgesamt 1-mal geändert.
@Lothar S.:
Tatsächlich, habe auf meiner ArcaOS-DVD das Toolkit 4.5 und alle erforderlichen WPS?.INF gefunden.
Also ich denke, es ist nachvollziehbar, dass ich meine Finger von solchen Sachen lasse, da meine C++-Kenntnisse und praktischen Erfahrungen aus eben diesen Jahren stammen...
25 Jahre Erfahrungen mit (VX-) Rexx haben mich für die höheren Weihen der Software-Entwicklung verdorben. Bisher konnte ich - dank zahlreicher Rx*.DLLs - alles Nötige, auch systemnahes Zeugs, mit Rexx lösen. Wenn es halt mit diesen geheimnisvollen .ICONPOS nicht geht, dann überlasse ich gern Anderen das Feld. Zumal, wie bereits geschrieben, mit den WPTools von Hank Kelder ein brauchbares Workaround existiert.
Gruß,
und nochmal danke für eure Bemühungen,
Don Lucio.
Tatsächlich, habe auf meiner ArcaOS-DVD das Toolkit 4.5 und alle erforderlichen WPS?.INF gefunden.
Oh, so alt schon ....
Also ich denke, es ist nachvollziehbar, dass ich meine Finger von solchen Sachen lasse, da meine C++-Kenntnisse und praktischen Erfahrungen aus eben diesen Jahren stammen...
![Überglücklich :D](./images/smilies/icon_e_biggrin.gif)
25 Jahre Erfahrungen mit (VX-) Rexx haben mich für die höheren Weihen der Software-Entwicklung verdorben. Bisher konnte ich - dank zahlreicher Rx*.DLLs - alles Nötige, auch systemnahes Zeugs, mit Rexx lösen. Wenn es halt mit diesen geheimnisvollen .ICONPOS nicht geht, dann überlasse ich gern Anderen das Feld. Zumal, wie bereits geschrieben, mit den WPTools von Hank Kelder ein brauchbares Workaround existiert.
Gruß,
und nochmal danke für eure Bemühungen,
Don Lucio.
Nur nebenbei: Das ist so nicht richtig. Außerdem heißt er Henk.
Andreas Schnellbacher
-
- Beiträge: 5
- Registriert: Do 17. Okt 2019, 19:48
Einfach jedes Mal das WPS sichern und wiederherstellen?
Besser, getestet während einer Installation von eCS 1.2:
0. Objekte in der Nähe von mindestens 3 Ecken des Bildschirms verhindern nicht zusammenhängende, geringfügige Bewegungen später.
1. Herunterfahren. Ändern der Einstellung zum Herunterfahren auf Neustart.
2. Neustart.
3. Das Umschalten der Abschaltoption ist das, worum es geht. Sie können diese Einstellung beim nächsten Mal rückgängig machen.
Besser, getestet während einer Installation von eCS 1.2:
0. Objekte in der Nähe von mindestens 3 Ecken des Bildschirms verhindern nicht zusammenhängende, geringfügige Bewegungen später.
1. Herunterfahren. Ändern der Einstellung zum Herunterfahren auf Neustart.
2. Neustart.
3. Das Umschalten der Abschaltoption ist das, worum es geht. Sie können diese Einstellung beim nächsten Mal rückgängig machen.
Zuletzt geändert von André Heldoorn am Mo 21. Okt 2019, 04:38, insgesamt 2-mal geändert.
Seit ich unter ArcaOS 5.0.3 das X-Center nicht mehr ständig als Fußzeile anzeige, sondern nur noch wenn ich den Cursor am unteren Bildschirmrand platziere. Habe ich diese "wandernden" Icons nicht mehr!Nach jedem System-Neustart sind einige der Icons nicht mehr da, wo ich sie zuvor platziert hatte. Zumeist sind sie nach oben gerutscht, mit der Folge, dass ich am rechten Rand einen vertikalen Scroll-Balken kriege.
Tatsächlich! Funktioniert.
Danke für den Tip.
Don Lucio.
-
- Beiträge: 5
- Registriert: Do 17. Okt 2019, 19:48
Mit eCenter oder xCenter: Herunterfahren. Ändern der Einstellung zum Herunterfahren auf Neustart, Neustart.
Wenn du damit meinst, dass im Rahmen einer laufenden OS/2-Installation die WPS-Dinge wiederhergestellt werden sollen: Nein, das war nicht mein Ansatz beim Erstellen dieses Threads.André Heldoorn hat geschrieben: ↑Mo 21. Okt 2019, 04:36 Einfach jedes Mal das WPS sichern und wiederherstellen?
Mir geht es darum, die WPS-Einstellungen eines funktionsfähigen OS/2-Systems zu übertragen auf ein neues, frisch installiertes OS/2-System. (Wenn ich hier von OS/2 rede, meine ich immer OS/2 inkl. aller Derivate wie eCS, ArcaOS, etc.)
Der Punkt ist, dass ich alle paar x Jahre (x=eine leider nicht sehr große Zahl, bisweilen auch kleiner 1) mein System neu installieren muß, wg. Plattencrash oder anderer äußerer Umstände. Und jedes mal bin ich gefühlt 1 Woche damit beschäftigt, bis alle meine WPS-Einstellungen wieder so sind, wie sie im alten System waren.
Das Backup und Restore der reinen Daten ist prinzipiell gelöst. Aber diese ganzen abstrakten Objekte, die das OS/2 bietet (und die den eigentlichen Reiz dieses OS ausmachen) lassen sich nicht so einfach "backuppen".
Es gibt dafür verschiedene Ansätze, das Problem zu lösen, z.B. den Desktop Backup Advisor (als Bestandteil des kostenpflichtigen Produktes "Object Desktop" von Stardock) oder die hier schon einige Male erwähnte Freeware "WPTools" von Henk Kelder.
Vor allem letztere hat sich (jedenfalls bei mir) als einzige wirklich zuverlässige Lösung erwiesen: Regelmäßig WPSBKP fahren, dann bei Bedarf WPSREST. Man kann das beides wunderbar in eigene Shell-(Rexx-) Skripte einbauen, z.B. in STARTUP.CMD.
Damit könnte ich ja zufrieden sein. Aber: Für den allgemeinen Backup & Restore (also die "echten" Daten) habe ich mir ein eigenes kleines VXRexx-Programm geschrieben und da wollte ich einfach die Funktion des Sicherns der WPS-Objekte mit einbauen (gewissermaßen "seamless"). Ich bin auch soweit gekommen, alle Parameter eines abstrakten Objjektes (den sagenumwobenen "SETUP-String") zu ermitteln und damit das Objekt in meiner eigenen Umgebung zu speichern. Leider mit der Ausnahme von ICONPOS. Daran bin ich gescheitert, da ich nicht über das C++- und OO-Knowhow verfüge, das offenbar erforderlich ist, dem OS/2 seine Geheimnisse zu entreissen.
Henk Kelder hat es gekonnt und ich büße nur wenig an Bedien-Komfort ein, wenn ich seine Programme in mein Programm einfach so, wie sie sind, einbaue.
Von daher hat sich dieser Thread erledigt. Und mit meiner Wissens-Lücke werde ich zu leben lernen
![Zwinkern ;)](./images/smilies/icon_e_wink.gif)
Gruß,
Don Lucio.
-
- Beiträge: 5
- Registriert: Do 17. Okt 2019, 19:48
Einverstanden. Einmalig; nicht kontinuierlich.DonLucio hat geschrieben: ↑Mo 21. Okt 2019, 16:23Mir geht es darum, die WPS-Einstellungen eines funktionsfähigen OS/2-Systems zu übertragen auf ein neues, frisch installiertes OS/2-System. (Wenn ich hier von OS/2 rede, meine ich immer OS/2 inkl. aller Derivate wie eCS, ArcaOS, etc.)
Und jedes mal bin ich gefühlt 1 Woche damit beschäftigt, bis alle meine WPS-Einstellungen wieder so sind, wie sie im alten System waren.
Ich habe 12 eigene Skripte, die so viel wie möglich tun, aber nicht übertreiben. Ohne ICONPOS. Danach kostet die pixelgenaue Positionierung unabhängig von der Bildschirmauflösung weniger als einen halben Tag. Die Installationsprogramme von Watcom verwenden ICONPOS mit unterschiedlichen Bildschirmauflösungen, FWIW:
Code: Alles auswählen
if (szVideoMode = "1024x768") then do
y = 45;
nDeltaY = -10;
nDeltaX = 13;
end
...
x = 5;
x = x + nDeltaX;
y = y + nDeltaY;
...
'ICONPOS=' || x || ',' || y || ';' ||,