// déclaration variables
var LinkList,ComboList:TStringList;
i:integer;
style:string;
FormName,ComboName,CLassCss,comboLabel,source:string;
begin
// style d'affiche
// classic : liste de lien
// combobox : liste déroulante (uniquement en html/htmlhelp, popup en hlp)
style := GetParam('Style','list');
// création de la liste qui contiendra les rubriques liées
LinkList := TStringList.create;

// récupération des rubriques liées
// GetNum retourne le numéro de la rubrique où se joue le script
GetTopicLink(GetNum,LinkList);

if (Condition('_PDF_') or Condition('_RTF_WORD_')) then style := 'list';

// ne travailler que s'il existe des liens
if LinkList.Count>0 then
begin

if style = 'list' then
begin
for i:=0 to Linklist.count-1 do
writeln('<<JMP(')>>+Linklist.strings[i]+<<FNT(STRING.-,-,-,-:',')>>+GetNomOf(GetNumOf(LinkList.strings[i]))+<<FNT(STRING.-,-,-,-:')>>');
end else begin
// extraire le style css éventuel
ClassCss := GetParam('css','voiraussi');
ComboLabel := GetParam('Label','Voir aussi : ');
// en html/htmlhelp on va utiliser une liste déroulante
if Condition('_HTML_') then
begin
// les éléments comme les listes doivent être placés dans des formulaires
// chaque formulaire doit avoir son nom propre ainsi que chaque élément

// il ne sert à rien de placer plusieurs composants linkedtopic mais
// d'autres composants peuvent utiliser des formulaires, il vous faudra alors veiller à l'unicité des noms

FormName := GetParam('FormName','LinkedTopic');
ComboName := GetParam('ComboName','LinkedCombo');


if ClassCss<>'' then ClassCss:=' class="'+ClassCss+'" ';
// création de la liste qui contiendra les code html pour chaque item
ComboList := TStringList.create;
for i:=0 to LinkList.Count-1 do
ComboList.add('<option value="'+TitreToHtmlFile(Linklist.strings[i])+ '">'+Linklist.strings[i]+'</option>');
// produire le code html final
if ComboList.Count>0 then
begin
// Pour pouvoir insérer des éléments dans notre formulaire
// il faut les regrouper dans une balise de type bloc qui accepte le contenu en-ligne
// pour cela nous allons utiliser un <div>
write(' <form style="margin:0px" action="" id="'+FormName+'"><div>');
//write('<label for="'+ComboName+'">'+comboLabel+'</label>');
write('<select'+classCss+' name="'+ComboName+'" onchange="window.location.href=document.getElementById('+ #39+FormName+#39+').'+ComboName+'.options[document.getElementById('+ #39+FormName+#39+').'+ComboName+'.selectedIndex].value">');
write('<option selected="selected" value="javascript:void(0)">'+ComboLabel+ '</option>');
for i:=0 to ComboList.count-1 do write(ComboList.strings[i]);
write('</select>');
write('</div></form> ');
end else write(' ');


// détruire la liste
ComboList.free;
end else begin

source := '';
// on va créer une liste classique que l'on va placer
// dans une rubrique dynamiquement créé, affichée sous forme de popup
for i:=0 to Linklist.count-1 do
source := source+'<<JMP(')>>+Linklist.strings[i]+<<FNT(STRING.-,-,-,-:',')>>+GetNomOf(GetNumOf(LinkList.strings[i]))+<<FNT(STRING.-,-,-,-:')>>'+ #13+#10; // #13+#10 = retour à la ligne
// on place cela dans une rubrique créée dynamiquement
SetDynaTopic(GetNom+'_link',source);
//write(source);
// on place un lien en utilisant une macro d'affichage popup
// on efface les éventuels : contenu dans le label car cela empêche la macro de fonctionner
// trim sert à supprimer les espaces en début et fin de chaîne

write('<<MCR(PI(qchPath,`')>>+GetNom+<<FNT(STRING.-,-,-,-:'_link')>>+<<FNT(NUMBER.-,-,-,-:#39)>>+<<FNT(STRING.-,-,-,-:'):')>>+trim(replace(ComboLabel,<<FNT(STRING.-,-,-,-:':')>>,<<FNT(STRING.-,-,-,-:'')>>))+<<FNT(STRING.-,-,-,-:')>>');
end;
end;
end;
// destruction de la liste
LinkList.free;
end;
end.

Sommaire