ID und URL eines Links ändern


Zum Ändern einer ID oder URL benötigen wir zuerst eine Variable vom Typ TLItem. Dieses Record erwartet zuerst in der mask-Membervariablen die Flags, die angeben, was wir ändern wollen. In jedem Fall muss das Flag LIF_ITEMINDEX gesetzt werden, da wir den jeweiligen Link über dessen internen Index ansprechen. Wollen wir die ID ändern, geben wir zusätzlich das Flag LIF_ITEMID an. Bei der Änderung der URL wäre stattdessen LIF_URL zu benutzen:

li.mask   := LIF_ITEMINDEX or LIF_ITEMID;

Dann geben wir den Index des Links an, den wir ändern wollen:

li.iLink  := 0;

Nun kopieren wir entweder die neue ID oder die neue URL in den jeweils dafür vorgesehenen Textpuffer des Records. Weil es sich um widechar-Arrays handelt, ist "lstrcpyW" zu benutzen. Als Beispiel wollen wir einem Link eine neue ID zuweisen und benutzen dafür szId:

lstrcpyW(li.szId,'Morgenstund');

Bei einer neuen URL sähe die Anweisung so aus (beachten Sie, dass hier szUrl gefüllt wird):

lstrcpyW(li.szUrl,'http://www.borland.com');

Die neuen Einstellungen reichen wir dann mit Hilfe der Nachricht "LM_SETITEM" an das jeweilige SysLink-Control weiter.

SendMessage(hLink1,LM_SETITEM,0,LPARAM(@li));


Hinweis

Beachten Sie bitte, dass es auch möglich ist, einem href-Link eine neue ID zuzuweisen. Das macht zwar nicht viel Sinn, funktioniert aber.

li.mask   := LIF_ITEMINDEX or LIF_ITEMID;
li.iLink  := 0;
lstrcpyW(li.szId,'blabla');
SendMessage(hLink2,LM_SETITEM,0,LPARAM(@li));

In dem Fall hätte nun der URL-Link des zweiten SysLink-Controls die ID "blabla". Angezeigt wird allerdings (auf Grund der Auswertung im Beispielprogramm) weiterhin die originale URL. Letztlich entscheiden Sie also, womit Sie arbeiten und was Sie ändern.


Text des SysLink-Controls ändern

Wenn Sie den Text des Controls komplett ändern wollen, dann benutzen Sie dazu die Unicode-Version des bereits bekannten Befehls "SetWindowText" ("SetWindowTextW"):

SetWindowTextW(hLink2,
  'Das hier ist <a href=" http://www.borland.com">Borland</a>-Revier.');