Home

Tutorial AppleScript Studio

Chapitre 2 - Gestion des tableaux -

Etape 6 - Sélection d'une rangée d'un tableau

Sous Léopard - xCode 3.0

Soit la sélection d'une rangée par un seul click. Elle s'affiche avec un fond bleu.


image
Photo 10


Comme exercice nous allons afficher un message avec le nom et le prix.


image
Photo 15


Pour cela il faudra :

  1. Pointer sur le tableau.
  2. Récupérer l'adresse de la rangée sélectionnée.
  3. Vérifier que l'adresse n'est pas vide (click en dehors du tableau).
  4. Récupérer les données.
  5. Afficher.

Le code se trouve dans on clicked theObject dans le bloc exécuté pour le tableau. Block reconnu par la commande if .


on clicked theObject

if (the name of theObject is "notesTableView") then



Ne pas oublier d'affecter le "clicked" au tableau.


image
Léopard - Photo 18



Définition d'un pointeur sur le tableau

set notesTablePointeur to table view "notesTableView" of scroll view "notesScrollView" of window "Main"



notesTablePointeur contiendra "table view id 4 of scroll view id 3 of window id 1".





Récupération de l'adresse de la rangée sélectionnée

set selectedDataRows to selected data rows of notesTablePointeur

selectedDataRows contiendra "{data row id 19 of data source id 12}".

Notez bien les { } qui indique que c'est une liste. Dans ce cas la liste n'a qu'un élément. C'est néanmoins une liste. Il faudra donc s'adresser à item 1 of selectedDataRows.





Vérifions que l'adresse n'est pas vide

C'est le cas d'un click en dehors du tableau.


if (count of selectedDataRows ) > 0 then




Récupérons les données

set uneLigne to item 1 of selectedDataRows

Résultat :

{|Col5|:"", |Col6|:"", |Date|:date "vendredi 7 décembre 2007 0:00:00", |Prix|:69, |Description|:"Editeur de CSS & HTML", |Name|:"Coda"}.


C'est le moment de rassembler vos souvenirs en AppleScript entre une liste d'élément et une liste de record. Le résultat est une liste de record. L'ordre n'a pas d'importance, les données sont référencées par leurs noms.

Pour obtenir le nom et le prix faisons :


set leNom to |Name| of laLigne

set lePrix to |Prix| of laLigne


Prenez garde aux "|" qui indiquent que c'est un record.

Le raccourci est alt+majuscule+b


Pour afficher faisons :

display dialog leNom & " coûte " & lePrix & " €"

image
Léopard - Photo 15


Le code complet


image
Léopard - Photo 20


Pour obtenir la visibilité du "log" cliquez sur image dans xCode.



Je n'ai pas laissé le code dans l'application pour éviter le message à chaque fois que vous cliquerez dans le tableau. Le voici, pour copier/coller et vous exercer.


if (the name of theObject is "notesTableView") then set notesTablePointeur to table view "notesTableView" of scroll view "notesScrollView" of window "Main" log notesTablePointeur set selectedDataRows to selected data rows of notesTablePointeur -- Le résultat est "data row id 9 of data source id 5" log selectedDataRows if (count of selectedDataRows) > 0 then if (the option key down of event 1 is true) then delete (item 1 of selectedDataRows) -- item 1 obligatoire c'est une liste else set uneLigne to item 1 of selectedDataRows --> data row id 19 of data source id 12 set laLigne to content of uneLigne --> {|Col5|:"c5", |Col6|:"c6", |Date|:date "mercredi 6 décembre 2006 0:00:00", |Prix|:29, |Description|:"FTP", |Name|:"Transmit"} log laLigne set leNom to |Name| of laLigne set lePrix to |Prix| of laLigne display dialog leNom & " coûte " & lePrix & " €" end if end if end if





La suite - Suppression d'une rangée d'un tableau


Page précédente

Page suivante


Merci de votre visite


UP