Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TAGREEMENT


Information sur la source

Catégorie :Composants Classé sous : Accords, guitare, Composant, Record Niveau : Débutant Date de création : 20/12/2007 Date de mise à jour : 28/12/2007 22:56:49 Vu / téléchargé: 4 403 / 153

Note :
Aucune note

Commentaire sur cette source (24)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
ben voici un source spécialement pour Nico :

TAgreement est un composant permettant de visualiser plus de 900 accords de guitare.

Pour les mordus de records : bon appétit ^^.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

20 décembre 2007 13:42:20 :
Modification proposée par Cirec : réalisée. le fait que l'accord ne change pas quand on clique sur le scrollbar est fait volontairement : ca permet de défiler sans voir tout les accords apparaitrent.
21 décembre 2007 09:45:21 :
Pour faire plaisir à tout le monde : listbox remplacée par un combobox et ajout des noms des cordes pour M'sieur Cirec ;). Modification proposée par f0xi : réalisée. Pour la notation francaise des accords : je suis pas sur qu'elle existe.
21 décembre 2007 09:47:19 :
Un ptit soucis dans la modif du screenshot
22 décembre 2007 09:29:09 :
Modif proposées par Cirec et Japee
28 décembre 2007 22:56:50 :
A force de modifier et modifier on en arrive à s'emmeler les pinceaux. Enfin bref la version précédente était pas la bonne : présence de beugs et absence d'options. Donc voila la bonne version finalisée selon les recommendations de Cirec et Japee. Merci à tous.

Commentaires et avis

signaler à un administrateur
Commentaire de cirec le 20/12/2007 13:20:24 administrateur CS

C'est bien ... et très intéressant (pour ceux qui gratouille )

Mais ... il y a un mais ;)

Remplace Les :
          Self.Repaint;
          Self.Refresh;
Par :
          Invalidate;

Il y a encore d'autres petites choses mais le plus important est :
quand on clique sur les flèches rien ne change il faut cliquer sur le texte de la ListBox pour que le changement soit visible ...

Et la notation international c'est bien mais les deux serait mieux
A --> La
etc

Belle initiative ... j'y avais pensé il y a longtemps déjà mais je ne l'ai jamais fait.
Bravo

signaler à un administrateur
Commentaire de japee le 21/12/2007 00:05:27 administrateur CS

Salut Francky,

Ouais, y'a quelques accords que je connaissais pas... ;-)

J'ai noté un comportement trrrèèès bizarre :
Après avoir cliqué dans la TListBox pour faire apparaître les accords, si on clique sur le panel, les accords sont modifiés plusieurs fois, le premier étant le seul correct.
Sinon, c'est pratique, en saisissant directement l'accord concerné dans la ListBox, on accède rapidement aux derniers de la liste (heureusement pour le sol).

Bon, c'est pas tout ça, quand est-ce qu'on se le tape, ce boeuf ?

signaler à un administrateur
Commentaire de cirec le 21/12/2007 01:27:41 administrateur CS

"Après avoir cliqué dans la TListBox pour faire apparaître les accords, si on clique sur le panel, les accords sont modifiés plusieurs fois, le premier étant le seul correct." ??

Moi il me semble avoir reconnu d'autres manières d'arriver à la même note !

Je ne les connais pas toutes mais j'en ai reconnu quelques-une ... Le Ré en particulier mais certaines d'entre elles je les connaissaient comme notes augmentées. D'ailleurs en parlant de cela il en manque encore des notes ...
puisque tu les retrouves tout le long du manche.

L'ajout du nom des cordes (Mi, La, Ré, Sol, Si, Mi) et les numéros des doigts
dans les cercle de positions serait un plus pour les débutants.
Ainsi que, j'y reviens, le nom des notes ;-)

Ah aussi je me demandais si un ComboBox ne serait pas mieux qu'une ListBox ...
Cela permettrait d'utiliser le clavier pour accéder au différentes notes. Exemple : pour acceder au Ré tu appuies juste sur "D"
Pour le reste il y a la DropDownList pour un accès rapide avec la souris ou les flèches du clavier sans pour autant afficher chaque note au passage !!!
Ce qui par la même règlerait le "problème" du clique obligatoire pour afficher la tablature.

Parce que là c'est même contraignant, pour une note en plein milieu il faut faire défiler au risque de passer à côté dans un premier temps.

Ok pour le b½uf !  ;-)

signaler à un administrateur
Commentaire de f0xi le 21/12/2007 01:53:45 administrateur CS

unit Agreements;

interface

uses
  Windows, Messages, SysUtils, Classes, Controls, ExtCtrls, StdCtrls, Graphics, dialogs;


Type
  TAgreement = record
    Name  : string;
    Param : Array[0..5] of shortint;
  end;

Const
  ListAgreement: Array [0..902] Of TAgreement=(
(Name :'AMaj';      Param:(0,0,2,2,2,0)),
(Name :'AMaj';      Param:(0,4,-1,2,5,0)),
(Name :'AMaj';      Param:(5,7,7,6,5,5)),
(Name :'AMaj';      Param:(-1,0,2,2,2,0)),
(Name :'AMaj';      Param:(-1,4,7,-1,-1,5)),
(Name :'A#5';       Param:(-1,0,3,2,2,1)),
(Name :'A#5';       Param:(-1,0,-1,2,2,1)),
(Name :'A/Ab';      Param:(-1,0,2,1,2,0)),
(Name :'A/B';       Param:(0,0,2,4,2,0)),
(Name :'A/B';       Param:(-1,0,7,6,0,0)),
(Name :'A/D';       Param:(-1,0,0,2,2,0)),
(Name :'A/D';       Param:(-1,-1,0,2,2,0)),
(Name :'A/D';       Param:(-1,-1,0,6,5,5)),
(Name :'A/D';       Param:(-1,-1,0,9,10,9)),
(Name :'A/G';       Param:(3,-1,2,2,2,0)),
(Name :'A/G';       Param:(-1,0,2,0,2,0)),
(Name :'A/G';       Param:(-1,0,2,2,2,3)),
(Name :'A/Gb';      Param:(0,0,2,2,2,2)),
(Name :'A/Gb';      Param:(0,-1,4,2,2,0)),
(Name :'A/Gb';      Param:(2,-1,2,2,2,0)),
(Name :'A/Gb';      Param:(-1,0,4,2,2,0)),
(Name :'A/Gb';      Param:(-1,-1,2,2,2,2)),
(Name :'A5';        Param:(5,7,7,-1,-1,5)),
(Name :'A5';        Param:(-1,0,2,2,-1,0)),
(Name :'A5';        Param:(5,7,7,-1,-1,0)),
(Name :'A6';        Param:(0,0,2,2,2,2)),
(Name :'A6';        Param:(0,-1,4,2,2,0)),
(Name :'A6';        Param:(2,-1,2,2,2,0)),
(Name :'A6';        Param:(-1,0,4,2,2,0)),
(Name :'A6';        Param:(-1,-1,2,2,2,2)),
(Name :'A6/7';      Param:(0,0,2,0,2,2)),
(Name :'A6/7sus4';  Param:(5,5,4,0,3,0)),
(Name :'A6/7sus4';  Param:(-1,0,2,0,3,2)),
(Name :'A7';        Param:(3,-1,2,2,2,0)),
(Name :'A7';        Param:(-1,0,2,0,2,0)),
(Name :'A7';        Param:(-1,0,2,2,2,3)),
(Name :'A7(#5)';    Param:(1,0,3,0,2,1)),
(Name :'A7/add11';  Param:(-1,0,0,0,2,0)),
(Name :'A7sus4';    Param:(-1,0,2,0,3,0)),
(Name :'A7sus4';    Param:(-1,0,2,0,3,3)),
(Name :'A7sus4';    Param:(-1,0,2,2,3,3)),
(Name :'A7sus4';    Param:(5,-1,0,0,3,0)),
(Name :'A7sus4';    Param:(-1,0,0,0,-1,0)),
(Name :'Aadd9';     Param:(0,0,2,4,2,0)),
(Name :'Aadd9';     Param:(-1,0,7,6,0,0)),
(Name :'Aaug/D';    Param:(-1,-1,0,2,2,1)),
(Name :'Aaug/G';    Param:(1,0,3,0,2,1)),
(Name :'Ab';        Param:(4,6,6,5,4,4)),
(Name :'Ab#5';      Param:(-1,3,2,1,1,0)),
(Name :'Ab/A';      Param:(-1,-1,1,2,1,4)),
(Name :'Ab/F';      Param:(-1,8,10,8,9,8)),
(Name :'Ab/F';      Param:(-1,-1,1,1,1,1)),
(Name :'Ab/Gb';     Param:(-1,-1,1,1,1,2)),
(Name :'Ab/Gb';     Param:(-1,-1,4,5,4,4)),
(Name :'Ab5';       Param:(4,6,6,-1,-1,4)),
(Name :'Ab6';       Param:(-1,8,10,8,9,8)),
(Name :'Ab6';       Param:(-1,-1,1,1,1,1)),
(Name :'Ab7';       Param:(-1,-1,1,1,1,2)),
(Name :'Ab7';       Param:(-1,-1,4,5,4,4)),
(Name :'Abdim/E';   Param:(0,2,0,1,0,0)),
(Name :'Abdim/E';   Param:(0,2,2,1,3,0)),
(Name :'Abdim/E';   Param:(-1,2,0,1,3,0)),
(Name :'Abdim/E';   Param:(-1,-1,0,1,0,0)),
(Name :'Abdim/Eb';  Param:(-1,-1,0,4,4,4)),
(Name :'Abdim/F';   Param:(-1,2,0,1,0,1)),
(Name :'Abdim/F';   Param:(-1,-1,0,1,0,1)),
(Name :'Abdim/F';   Param:(-1,-1,3,4,3,4)),
(Name :'Abdim7';    Param:(-1,2,0,1,0,1)),
(Name :'Abdim7';    Param:(-1,-1,0,1,0,1)),
(Name :'Abdim7';    Param:(-1,-1,3,4,3,4)),
(Name :'Abm';       Param:(-1,-1,6,4,4,4)),
(Name :'Abm/D';     Param:(-1,-1,0,4,4,4)),
(Name :'Abm/E';     Param:(0,2,1,1,0,0)),
(Name :'Abm/E';     Param:(0,-1,6,4,4,0)),
(Name :'Abm/E';     Param:(-1,-1,1,1,0,0)),
(Name :'Abm/Gb';    Param:(-1,-1,4,4,4,4)),
(Name :'Abm7';      Param:(-1,-1,4,4,4,4)),
(Name :'Absus4';    Param:(-1,-1,6,6,4,4)),
(Name :'Absus2/F';  Param:(-1,1,3,1,4,1)),
(Name :'Adim/Ab';   Param:(-1,-1,1,2,1,4)),
(Name :'Adim/E';    Param:(0,3,-1,2,4,0)),
(Name :'Adim/F';    Param:(-1,-1,1,2,1,1)),
(Name :'Adim/F';    Param:(-1,-1,3,5,4,5)),
(Name :'Adim/G';    Param:(-1,-1,1,2,1,3)),
(Name :'Adim/Gb';   Param:(-1,-1,1,2,1,2)),
(Name :'Adim7';     Param:(-1,-1,1,2,1,2)),
(Name :'Am';        Param:(-1,0,2,2,1,0)),
(Name :'Am';        Param:(-1,0,7,5,5,5)),
(Name :'Am';        Param:(-1,3,2,2,1,0)),
(Name :'Am';        Param:(8,12,-1,-1,-1,0)),
(Name :'Am/B';      Param:(0,0,7,5,0,0)),
(Name :'Am/B';      Param:(-1,3,2,2,0,0)),
(Name :'Am/D';      Param:(-1,-1,0,2,1,0)),
(Name :'Am/D';      Param:(-1,-1,0,5,5,5)),
(Name :'Am/Eb';     Param:(0,3,-1,2,4,0)),
(Name :'Am/F';      Param:(0,0,3,2,1,0)),
(Name :'Am/F';      Param:(1,3,3,2,1,0)),
(Name :'Am/F';      Param:(1,-1,2,2,1,0)),
(Name :'Am/F';      Param:(-1,-1,2,2,1,1)),
(Name :'Am/F';      Param:(-1,-1,3,2,1,0)),
(Name :'Am/G';      Param:(0,0,2,0,1,3)),
(Name :'Am/G';      Param:(-1,0,2,0,1,0)),
(Name :'Am/G';      Param:(-1,0,2,2,1,3)),
(Name :'Am/G';      Param:(-1,0,5,5,5,8)),
(Name :'Am/Gb';     Param:(-1,0,2,2,1,2)),
(Name :'Am/Gb';     Param:(-1,-1,2,2,1,2)),
(Name :'Am6';       Param:(-1,0,2,2,1,2)),
(Name :'Am6';       Param:(-1,-1,2,2,1,2)),
(Name :'Am7';       Param:(0,0,2,0,1,3)),
(Name :'Am7';       Param:(-1,0,2,0,1,0)),
(Name :'Am7';       Param:(-1,0,2,2,1,3)),
(Name :'Am7';       Param:(-1,0,5,5,5,8)),
(Name :'Am7(b5)';   Param:(-1,-1,1,2,1,3)),
(Name :'Am7/add11'; Param:(-1,5,7,5,8,0)),
(Name :'Amaj7';     Param:(-1,0,2,1,2,0)),
(Name :'Amin/maj9'; Param:(-1,0,6,5,5,7)),
(Name :'Asus4';     Param:(0,0,2,2,3,0)),
(Name :'Asus4';     Param:(-1,0,2,2,3,0)),
(Name :'Asus4';     Param:(5,5,7,7,-1,0)),
(Name :'Asus4';     Param:(-1,0,0,2,3,0)),
(Name :'Asus2';     Param:(0,0,2,2,0,0)),
(Name :'Asus2';     Param:(0,0,2,4,0,0)),
(Name :'Asus2';     Param:(0,2,2,2,0,0)),
(Name :'Asus2';     Param:(-1,0,2,2,0,0)),
(Name :'Asus2';     Param:(-1,-1,2,2,0,0)),
(Name :'Asus2/Ab';  Param:(-1,0,2,1,0,0)),
(Name :'Asus2/C';   Param:(0,0,7,5,0,0)),
(Name :'Asus2/C';   Param:(-1,3,2,2,0,0)),
(Name :'Asus2/D';   Param:(0,2,0,2,0,0)),
(Name :'Asus2/D';   Param:(-1,2,0,2,3,0)),
(Name :'Asus2/Db';  Param:(0,0,2,4,2,0)),
(Name :'Asus2/Db';  Param:(-1,0,7,6,0,0)),
(Name :'Asus2/Eb';  Param:(-1,2,1,2,0,0)),
(Name :'Asus2/F';   Param:(0,0,3,2,0,0)),
(Name :'Asus2/G';   Param:(3,-1,2,2,0,0)),
(Name :'Asus2/G';   Param:(-1,0,2,0,0,0)),
(Name :'Asus2/G';   Param:(-1,0,5,4,5,0)),
(Name :'Asus2/Gb';  Param:(-1,0,4,4,0,0)),
(Name :'Asus2/Gb';  Param:(-1,2,4,2,5,2)),
(Name :'Asus4/Ab';  Param:(4,-1,0,2,3,0)),
(Name :'Asus4/B';   Param:(0,2,0,2,0,0)),
(Name :'Asus4/Bb';  Param:(0,1,-1,2,3,0)),
(Name :'Asus4/C';   Param:(-1,-1,0,2,1,0)),
(Name :'Asus4/C';   Param:(-1,-1,0,5,5,5)),
(Name :'Asus4/Db';  Param:(-1,0,0,2,2,0)),
(Name :'Asus4/Db';  Param:(-1,-1,0,2,2,0)),
(Name :'Asus4/Db';  Param:(-1,-1,0,6,5,5)),
(Name :'Asus4/Db';  Param:(-1,-1,0,9,10,9)),
(Name :'Asus4/F';   Param:(-1,-1,7,7,6,0)),
(Name :'Asus4/G';   Param:(-1,0,2,0,3,0)),
(Name :'Asus4/G';   Param:(-1,0,2,0,3,3)),
(Name :'Asus4/G';   Param:(-1,0,2,2,3,3)),
(Name :'Asus4/G';   Param:(-1,0,0,0,-1,0)),
(Name :'Asus4/Gb';  Param:(0,0,0,2,3,2)),
(Name :'Asus4/Gb';  Param:(0,0,4,2,3,0)),
(Name :'Asus4/Gb';  Param:(2,-1,0,2,3,0)),
(Name :'Asus4/Gb';  Param:(-1,0,2,2,3,2)),
(Name :'Asus4/Gb';  Param:(-1,-1,2,2,3,2)),
(Name :'Asus4/Gb';  Param:(-1,5,4,2,3,0)),
(Name :'Asus4/Gb';  Param:(-1,9,7,7,-1,0)),
(Name :'B';         Param:(-1,2,4,4,4,2)),
(Name :'B#5';       Param:(3,2,1,0,0,3)),
(Name :'B#5';       Param:(3,-1,1,0,0,3)),
(Name :'B/A';       Param:(2,-1,1,2,0,2)),
(Name :'B/A';       Param:(-1,0,1,2,0,2)),
(Name :'B/A';       Param:(-1,2,1,2,0,2)),
(Name :'B/A';       Param:(-1,2,4,2,4,2)),
(Name :'B/Ab';      Param:(-1,-1,4,4,4,4)),
(Name :'B/E';       Param:(-1,2,2,4,4,2)),
(Name :'B/E';       Param:(-1,-1,4,4,4,0)),
(Name :'B5';        Param:(7,9,9,-1,-1,2)),
(Name :'B5';        Param:(-1,2,4,4,-1,2)),
(Name :'B6';        Param:(-1,-1,4,4,4,4)),
(Name :'B7';        Param:(2,-1,1,2,0,2)),
(Name :'B7';        Param:(-1,0,1,2,0,2)),
(Name :'B7';        Param:(-1,2,1,2,0,2)),
(Name :'B7';        Param:(-1,2,4,2,4,2)),
(Name :'B7/add11';  Param:(0,0,4,4,4,0)),
(Name :'B7/add11';  Param:(0,2,1,2,0,2)),
(Name :'B7sus4';    Param:(-1,0,4,4,0,0)),
(Name :'B7sus4';    Param:(-1,2,4,2,5,2)),
(Name :'Baug/E';    Param:(3,-1,1,0,0,0)),
(Name :'Baug/E';    Param:(-1,-1,1,0,0,0)),
(Name :'Bb';        Param:(1,1,3,3,3,1)),
(Name :'Bb';        Param:(-1,1,3,3,3,1)),
(Name :'Bb';        Param:(-1,-1,0,3,3,1)),
(Name :'Bb#5';      Param:(-1,-1,0,3,3,2)),
(Name :'Bbb5';      Param:(-1,-1,0,3,-1,0)),
(Name :'Bb/A';      Param:(1,1,3,2,3,1)),
(Name :'Bb/Ab';     Param:(-1,1,3,1,3,1)),
(Name :'Bb/Ab';     Param:(-1,-1,3,3,3,4)),
(Name :'Bb/Db';     Param:(-1,-1,0,6,6,6)),
(Name :'Bb/E';      Param:(-1,1,3,3,3,0)),
(Name :'Bb/G';      Param:(3,5,3,3,3,3)),
(Name :'Bb/G';      Param:(-1,-1,3,3,3,3)),
(Name :'Bb5';       Param:(6,8,8,-1,-1,6)),
(Name :'Bb5';       Param:(-1,1,3,3,-1,6)),
(Name :'Bb6';       Param:(3,5,3,3,3,3)),
(Name :'Bb6';       Param:(-1,-1,3,3,3,3)),
(Name :'Bb6/add9';  Param:(-1,3,3,3,3,3)),
(Name :'Bb7';       Param:(-1,1,3,1,3,1)),
(Name :'Bb7';       Param:(-1,-1,3,3,3,4)),
(Name :'Bb7sus4';   Param:(-1,1,3,1,4,1)),
(Name :'Bbadd#11';  Param:(-1,1,3,3,3,0)),
(Name :'Bbaug/E';   Param:(2,-1,4,3,3,0)),
(Name :'Bbdim/C';   Param:(-1,3,-1,3,2,0)),
(Name :'Bbdim/D';   Param:(-1,-1,0,3,2,0)),
(Name :'Bbdim/G';   Param:(-1,1,2,0,2,0)),
(Name :'Bbdim/G';   Param:(-1,-1,2,3,2,3)),
(Name :'Bbdim/Gb';  Param:(2,4,2,3,2,2)),
(Name :'Bbdim/Gb';  Param:(-1,-1,4,3,2,0)),
(Name :'Bbdim7';    Param:(-1,1,2,0,2,0)),
(Name :'Bbdim7';    Param:(-1,-1,2,3,2,3)),
(Name :'Bbm';       Param:(1,1,3,3,2,1)),
(Name :'Bbm/Ab';    Param:(-1,1,3,1,2,1)),
(Name :'Bbm/D';     Param:(-1,-1,0,6,6,6)),
(Name :'Bbm/Gb';    Param:(-1,-1,3,3,2,2)),
(Name :'Bbm7';      Param:(-1,1,3,1,2,1)),
(Name :'Bbmaj7';    Param:(1,1,3,2,3,1)),
(Name :'Bbmaj9';    Param:(-1,3,3,3,3,5)),
(Name :'Bbsus2';    Param:(-1,-1,3,3,1,1)),
(Name :'Bbsus2/G';  Param:(-1,3,5,3,6,3)),
(Name :'Bbsus4/Ab'; Param:(-1,1,3,1,4,1)),
(Name :'Bdim/A';    Param:(1,2,3,2,3,1)),
(Name :'Bdim/A';    Param:(-1,2,0,2,0,1)),
(Name :'Bdim/A';    Param:(-1,-1,0,2,0,1)),
(Name :'Bdim/Ab';   Param:(-1,2,0,1,0,1)),
(Name :'Bdim/Ab';   Param:(-1,-1,0,1,0,1)),
(Name :'Bdim/Ab';   Param:(-1,-1,3,4,3,4)),
(Name :'Bdim/G';    Param:(1,-1,0,0,0,3)),
(Name :'Bdim/G';    Param:(3,2,0,0,0,1)),
(Name :'Bdim/G';    Param:(-1,-1,0,0,0,1)),
(Name :'Bdim7';     Param:(-1,2,0,1,0,1)),
(Name :'Bdim7';     Param:(-1,-1,0,1,0,1)),
(Name :'Bdim7';     Param:(-1,-1,3,4,3,4)),
(Name :'Bm';        Param:(2,2,4,4,3,2)),
(Name :'Bm';        Param:(-1,2,4,4,3,2)),
(Name :'Bm';        Param:(-1,-1,0,4,3,2)),
(Name :'Bm/A';      Param:(-1,0,4,4,3,2)),
(Name :'Bm/A';      Param:(-1,2,0,2,0,2)),
(Name :'Bm/A';      Param:(-1,2,0,2,3,2)),
(Name :'Bm/A';      Param:(-1,2,4,2,3,2)),
(Name :'Bm/A';      Param:(-1,-1,0,2,0,2)),
(Name :'Bm/G';      Param:(2,2,0,0,0,3)),
(Name :'Bm/G';      Param:(2,2,0,0,3,3)),
(Name :'Bm/G';      Param:(3,2,0,0,0,2)),
(Name :'Bm/G';      Param:(-1,-1,4,4,3,3)),
(Name :'Bm7';       Param:(-1,0,4,4,3,2)),
(Name :'Bm7';       Param:(-1,2,0,2,0,2)),
(Name :'Bm7';       Param:(-1,2,0,2,3,2)),
(Name :'Bm7';       Param:(-1,2,4,2,3,2)),
(Name :'Bm7';       Param:(-1,-1,0,2,0,2)),
(Name :'Bm7(b5)';   Param:(1,2,3,2,3,1)),
(Name :'Bm7(b5)';   Param:(-1,2,0,2,0,1)),
(Name :'Bm7(b5)';   Param:(-1,-1,0,2,0,1)),
(Name :'Bm7/add11'; Param:(0,0,2,4,3,2)),
(Name :'Bm7/add11'; Param:(0,2,0,2,0,2)),
(Name :'Bmaj7/#11'; Param:(-1,2,3,3,4,2)),
(Name :'Bsus';      Param:(7,9,9,-1,-1,0)),
(Name :'Bsus';      Param:(-1,2,4,4,-1,0)),
(Name :'Bsus2';     Param:(-1,4,4,4,-1,2)),
(Name :'Bsus2';     Param:(-1,-1,4,4,2,2)),
(Name :'Bsus2/E';   Param:(-1,4,4,4,-1,0)),
(Name :'Bsus4/A';   Param:(-1,0,4,4,0,0)),
(Name :'Bsus4/A';   Param:(-1,2,4,2,5,2)),
(Name :'Bsus4/Ab';  Param:(0,2,2,1,0,2)),
(Name :'Bsus4/Ab';  Param:(0,-1,4,1,0,0)),
(Name :'Bsus4/Ab';  Param:(2,2,2,1,0,0)),
(Name :'Bsus4/Db';  Param:(-1,4,4,4,-1,0)),
(Name :'Bsus4/Eb';  Param:(-1,2,2,4,4,2)),
(Name :'Bsus4/Eb';  Param:(-1,-1,4,4,4,0)),
(Name :'Bsus4/G';   Param:(0,2,2,0,0,2)),
(Name :'Bsus4/G';   Param:(0,2,4,0,0,0)),
(Name :'Bsus4/G';   Param:(0,-1,4,0,0,0)),
(Name :'Bsus4/G';   Param:(2,2,2,0,0,0)),
(Name :'C';         Param:(0,3,2,0,1,0)),
(Name :'C';         Param:(0,3,5,5,5,3)),
(Name :'C';         Param:(3,3,2,0,1,0)),
(Name :'C';         Param:(3,-1,2,0,1,0)),
(Name :'C';         Param:(-1,3,2,0,1,0)),
(Name :'C';         Param:(-1,3,5,5,5,0)),
(Name :'C#5';       Param:(-1,3,2,1,1,0)),
(Name :'Cb5';       Param:(-1,-1,4,5,-1,0)),
(Name :'C/A';       Param:(0,0,2,0,1,3)),
(Name :'C/A';       Param:(-1,0,2,0,1,0)),
(Name :'C/A';       Param:(-1,0,2,2,1,3)),
(Name :'C/A';       Param:(-1,0,5,5,5,8)),
(Name :'C/B';       Param:(0,3,2,0,0,0)),
(Name :'C/B';       Param:(-1,2,2,0,1,0)),
(Name :'C/B';       Param:(-1,3,5,4,5,3)),
(Name :'C/Bb';      Param:(-1,3,5,3,5,3)),
(Name :'C/D';       Param:(3,-1,0,0,1,0)),
(Name :'C/D';       Param:(-1,3,0,0,1,0)),
(Name :'C/D';       Param:(-1,3,2,0,3,0)),
(Name :'C/D';       Param:(-1,3,2,0,3,3)),
(Name :'C/D';       Param:(-1,-1,0,0,1,0)),
(Name :'C/D';       Param:(-1,-1,0,5,5,3)),
(Name :'C/D';       Param:(-1,10,12,12,13,0)),
(Name :'C/D';       Param:(-1,5,5,5,-1,0)),
(Name :'C/F';       Param:(-1,3,3,0,1,0)),
(Name :'C/F';       Param:(-1,-1,3,0,1,0)),
(Name :'C5';        Param:(-1,3,5,5,-1,3)),
(Name :'C6';        Param:(0,0,2,0,1,3)),
(Name :'C6';        Param:(-1,0,2,0,1,0)),
(Name :'C6';        Param:(-1,0,2,2,1,3)),
(Name :'C6';        Param:(-1,0,5,5,5,8)),
(Name :'C6/add9';   Param:(-1,5,7,5,8,0)),
(Name :'C7';        Param:(-1,3,5,3,5,3)),
(Name :'C7sus4';    Param:(-1,3,5,3,6,3)),
(Name :'C9(b5)';    Param:(0,3,-1,3,3,2)),
(Name :'Cadd9';     Param:(3,-1,0,0,1,0)),
(Name :'Cadd9';     Param:(-1,3,0,0,1,0)),
(Name :'Cadd9';     Param:(-1,3,2,0,3,0)),
(Name :'Cadd9';     Param:(-1,3,2,0,3,3)),
(Name :'Cadd9';     Param:(-1,-1,0,0,1,0)),
(Name :'Cadd9';     Param:(-1,-1,0,5,5,3)),
(Name :'Cadd9';     Param:(-1,10,12,12,13,0)),
(Name :'Cadd9';     Param:(-1,3,2,0,3,0)),
(Name :'Cadd9';     Param:(-1,5,5,5,-1,0)),
(Name :'Cdim/A';    Param:(-1,-1,1,2,1,2)),
(Name :'Cdim/Ab';   Param:(-1,-1,1,1,1,2)),
(Name :'Cdim/Ab';   Param:(-1,-1,4,5,4,4)),
(Name :'Cdim/D';    Param:(-1,5,4,5,4,2)),
(Name :'Cdim7';     Param:(-1,-1,1,2,1,2)),
(Name :'Cm';        Param:(-1,3,5,5,4,3)),
(Name :'Cm';        Param:(-1,-1,5,5,4,3)),
(Name :'Cm/A';      Param:(-1,-1,1,2,1,3)),
(Name :'Cm/Bb';     Param:(-1,3,5,3,4,3)),
(Name :'Cm6';       Param:(-1,-1,1,2,1,3)),
(Name :'Cm7';       Param:(-1,3,5,3,4,3)),
(Name :'Cmaj7';     Param:(0,3,2,0,0,0)),
(Name :'Cmaj7';     Param:(-1,2,2,0,1,0)),
(Name :'Cmaj7';     Param:(-1,3,5,4,5,3)),
(Name :'Cmaj9';     Param:(-1,3,0,0,0,0)),
(Name :'Csus';      Param:(-1,3,3,0,1,1)),
(Name :'Csus';      Param:(-1,-1,3,0,1,1)),
(Name :'Csus2';     Param:(-1,10,12,12,13,3)),
(Name :'Csus2';     Param:(-1,5,5,5,-1,3)),
(Name :'Csus2';     Param:(-1,3,0,0,3,3)),
(Name :'Csus2';     Param:(-1,3,5,5,3,3)),
(Name :'Csus2/A';   Param:(-1,5,7,5,8,3)),
(Name :'Csus2/A';   Param:(-1,-1,0,2,1,3)),
(Name :'Csus2/B';   Param:(3,3,0,0,0,3)),
(Name :'Csus2/B';   Param:(-1,3,0,0,0,3)),
(Name :'Csus2/E';   Param:(3,-1,0,0,1,0)),
(Name :'Csus2/E';   Param:(-1,3,0,0,1,0)),
(Name :'Csus2/E';   Param:(-1,3,2,0,3,0)),
(Name :'Csus2/E';   Param:(-1,3,2,0,3,3)),
(Name :'Csus2/E';   Param:(-1,-1,0,0,1,0)),
(Name :'Csus2/E';   Param:(-1,-1,0,5,5,3)),
(Name :'Csus2/E';   Param:(-1,10,12,12,13,0)),
(Name :'Csus2/E';   Param:(-1,5,5,5,-1,0)),
(Name :'Csus2/F';   Param:(3,3,0,0,1,1)),
(Name :'Csus4/A';   Param:(3,-1,3,2,1,1)),
(Name :'Csus4/A';   Param:(-1,-1,3,2,1,3)),
(Name :'Csus4/B';   Param:(-1,3,3,0,0,3)),
(Name :'Csus4/Bb';  Param:(-1,3,5,3,6,3)),
(Name :'Csus4/D';   Param:(3,3,0,0,1,1)),
(Name :'Csus4/E';   Param:(-1,3,3,0,1,0)),
(Name :'Csus4/E';   Param:(-1,-1,3,0,1,0)),
(Name :'D';         Param:(-1,5,4,2,3,2)),
(Name :'D';         Param:(-1,9,7,7,-1,2)),
(Name :'D';         Param:(2,0,0,2,3,2)),
(Name :'D';         Param:(-1,0,0,2,3,2)),
(Name :'D';         Param:(-1,0,4,2,3,2)),
(Name :'D';         Param:(-1,-1,0,2,3,2)),
(Name :'D';         Param:(-1,-1,0,7,7,5)),
(Name :'D#5';       Param:(-1,-1,0,3,3,2)),
(Name :'D/B';       Param:(-1,0,4,4,3,2)),
(Name :'D/B';       Param:(-1,2,0,2,0,2)),
(Name :'D/B';       Param:(-1,2,0,2,3,2)),
(Name :'D/B';       Param:(-1,2,4,2,3,2)),
(Name :'D/B';       Param:(-1,-1,0,2,0,2)),
(Name :'D/C';       Param:(-1,5,7,5,7,2)),
(Name :'D/C';       Param:(-1,0,0,2,1,2)),
(Name :'D/C';       Param:(-1,3,-1,2,3,2)),
(Name :'D/C';       Param:(-1,5,7,5,7,5)),
(Name :'D/Db';      Param:(-1,-1,0,14,14,14)),
(Name :'D/Db';      Param:(-1,-1,0,2,2,2)),
(Name :'D/E';       Param:(0,0,0,2,3,2)),
(Name :'D/E';       Param:(0,0,4,2,3,0)),
(Name :'D/E';       Param:(2,-1,0,2,3,0)),
(Name :'D/E';       Param:(-1,0,2,2,3,2)),
(Name :'D/E';       Param:(-1,-1,2,2,3,2)),
(Name :'D/E';       Param:(-1,5,4,2,3,0)),
(Name :'D/E';       Param:(-1,9,7,7,-1,0)),
(Name :'D/G';       Param:(5,-1,4,0,3,5)),
(Name :'D/G';       Param:(3,-1,0,2,3,2)),
(Name :'D5';        Param:(5,5,7,7,-1,5)),
(Name :'D5';        Param:(-1,0,0,2,3,5)),
(Name :'D6';        Param:(-1,0,4,4,3,2)),
(Name :'D6';        Param:(-1,2,0,2,0,2)),
(Name :'D6';        Param:(-1,2,0,2,3,2)),
(Name :'D6';        Param:(-1,2,4,2,3,2)),
(Name :'D6';        Param:(-1,-1,0,2,0,2)),
(Name :'D6/add9';   Param:(0,0,2,4,3,2)),
(Name :'D6/add9';   Param:(0,2,0,2,0,2)),
(Name :'D7';        Param:(-1,5,7,5,7,2)),
(Name :'D7';        Param:(-1,0,0,2,1,2)),
(Name :'D7';        Param:(-1,3,-1,2,3,2)),
(Name :'D7';        Param:(-1,5,7,5,7,5)),
(Name :'D7sus4';    Param:(-1,5,7,5,8,3)),
(Name :'D7sus4';    Param:(-1,-1,0,2,1,3)),
(Name :'D9';        Param:(0,0,0,2,1,2)),
(Name :'D9';        Param:(2,-1,0,2,1,0)),
(Name :'D9';        Param:(-1,5,7,5,7,0)),
(Name :'D9(#5)';    Param:(0,3,-1,3,3,2)),
(Name :'Dadd9';     Param:(0,0,0,2,3,2)),
(Name :'Dadd9';     Param:(0,0,4,2,3,0)),
(Name :'Dadd9';     Param:(2,-1,0,2,3,0)),
(Name :'Dadd9';     Param:(-1,0,2,2,3,2)),
(Name :'Dadd9';     Param:(-1,-1,2,2,3,2)),
(Name :'Dadd9';     Param:(-1,5,4,2,3,0)),
(Name :'Dadd9';     Param:(-1,9,7,7,-1,0)),
(Name :'Daug/E';    Param:(2,-1,4,3,3,0)),
(Name :'Db';        Param:(4,4,6,6,6,4)),
(Name :'Db';        Param:(-1,4,3,1,2,1)),
(Name :'Db';        Param:(-1,4,6,6,6,4)),
(Name :'Db';        Param:(-1,-1,3,1,2,1)),
(Name :'Db';        Param:(-1,-1,6,6,6,4)),
(Name :'Db#5';      Param:(-1,0,3,2,2,1)),
(Name :'Db#5';      Param:(-1,0,-1,2,2,1)),
(Name :'Dbb5';      Param:(-1,-1,3,0,2,1)),
(Name :'Db/B';      Param:(-1,4,3,4,0,4)),
(Name :'Db/Bb';     Param:(-1,1,3,1,2,1)),
(Name :'Db/C';      Param:(-1,3,3,1,2,1)),
(Name :'Db/C';      Param:(-1,4,6,5,6,4)),
(Name :'Db5';       Param:(-1,4,6,6,-1,4)),
(Name :'Db6';       Param:(-1,1,3,1,2,1)),
(Name :'Db7';       Param:(-1,4,3,4,0,4)),
(Name :'Dbaug/D';   Param:(-1,-1,0,2,2,1)),
(Name :'Dbaug/G';   Param:(1,0,3,0,2,1)),
(Name :'Dbdim/A';   Param:(3,-1,2,2,2,0)),
(Name :'Dbdim/A';   Param:(-1,0,2,0,2,0)),
(Name :'Dbdim/A';   Param:(-1,0,2,2,2,3)),
(Name :'Dbdim/B';   Param:(0,2,2,0,2,0)),
(Name :'Dbdim/Bb';  Param:(-1,1,2,0,2,0)),
(Name :'Dbdim/Bb';  Param:(-1,-1,2,3,2,3)),
(Name :'Dbdim/D';   Param:(3,-1,0,0,2,0)),
(Name :'Dbdim/D';   Param:(-1,-1,0,0,2,0)),
(Name :'Dbdim7';    Param:(-1,1,2,0,2,0)),
(Name :'Dbdim7';    Param:(-1,-1,2,3,2,3)),
(Name :'Dbm';       Param:(-1,4,6,6,5,4)),
(Name :'Dbm';       Param:(-1,-1,2,1,2,0)),
(Name :'Dbm';       Param:(-1,4,6,6,-1,0)),
(Name :'Dbm/A';     Param:(-1,0,2,1,2,0)),
(Name :'Dbm/B';     Param:(0,2,2,1,2,0)),
(Name :'Dbm/B';     Param:(-1,4,6,4,5,4)),
(Name :'Dbm7';      Param:(0,2,2,1,2,0)),
(Name :'Dbm7';      Param:(-1,4,6,4,5,4)),
(Name :'Dbm7(b5)';  Param:(0,2,2,0,2,0)),
(Name :'Dbmaj7';    Param:(-1,3,3,1,2,1)),
(Name :'Dbmaj7';    Param:(-1,4,6,5,6,4)),
(Name :'Dbsus2';    Param:(-1,-1,6,6,4,4)),
(Name :'Dbsus4/Bb'; Param:(-1,-1,4,3,2,4)),
(Name :'Ddim/B';    Param:(-1,2,0,1,0,1)),
(Name :'Ddim/B';    Param:(-1,-1,0,1,0,1)),
(Name :'Ddim/B';    Param:(-1,-1,3,4,3,4)),
(Name :'Ddim/Bb';   Param:(-1,1,3,1,3,1)),
(Name :'Ddim/Bb';   Param:(-1,-1,3,3,3,4)),
(Name :'Ddim/C';    Param:(-1,-1,0,1,1,1)),
(Name :'Ddim7';     Param:(-1,2,0,1,0,1)),
(Name :'Ddim7';     Param:(-1,-1,0,1,0,1)),
(Name :'Ddim7';     Param:(-1,-1,3,4,3,4)),
(Name :'Dm';        Param:(-1,0,0,2,3,1)),
(Name :'Dm/B';      Param:(1,2,3,2,3,1)),
(Name :'Dm/B';      Param:(-1,2,0,2,0,1)),
(Name :'Dm/B';      Param:(-1,-1,0,2,0,1)),
(Name :'Dm/Bb';     Param:(1,1,3,2,3,1)),
(Name :'Dm/C';      Param:(-1,5,7,5,6,5)),
(Name :'Dm/C';      Param:(-1,-1,0,2,1,1)),
(Name :'Dm/C';      Param:(-1,-1,0,5,6,5)),
(Name :'Dm/Db';     Param:(-1,-1,0,2,2,1)),
(Name :'Dm/E';      Param:(-1,-1,7,7,6,0)),
(Name :'Dm6';       Param:(1,2,3,2,3,1)),
(Name :'Dm6';       Param:(-1,2,0,2,0,1)),
(Name :'Dm6';       Param:(-1,-1,0,2,0,1)),
(Name :'Dm7';       Param:(-1,5,7,5,6,5)),
(Name :'Dm7';       Param:(-1,-1,0,2,1,1)),
(Name :'Dm7';       Param:(-1,-1,0,5,6,5)),
(Name :'Dm7(b5)';   Param:(-1,-1,0,1,1,1)),
(Name :'Dm7/add11'; Param:(3,-1,0,2,1,1)),
(Name :'Dmaj7';     Param:(-1,-1,0,14,14,14)),
(Name :'Dmaj7';     Param:(-1,-1,0,2,2,2)),
(Name :'Dmin/maj7'; Param:(-1,-1,0,2,2,1)),
(Name :'Dsus';      Param:(5,-1,0,0,3,5)),
(Name :'Dsus';      Param:(3,0,0,0,3,3)),
(Name :'Dsus';      Param:(-1,0,0,0,3,3)),
(Name :'Dsus';      Param:(-1,-1,0,2,3,3)),
(Name :'Dsus2';     Param:(5,5,7,7,-1,0)),
(Name :'Dsus2';     Param:(-1,0,0,2,3,0)),
(Name :'Dsus2';     Param:(0,0,2,2,3,0)),
(Name :'Dsus2';     Param:(-1,0,2,2,3,0)),
(Name :'Dsus2';     Param:(-1,-1,0,2,3,0)),
(Name :'Dsus2/Ab';  Param:(4,-1,0,2,3,0)),
(Name :'Dsus2/B';   Param:(0,2,0,2,0,0)),
(Name :'Dsus2/B';   Param:(-1,2,0,2,3,0)),
(Name :'Dsus2/Bb';  Param:(0,1,-1,2,3,0)),
(Name :'Dsus2/C';   Param:(-1,-1,0,2,1,0)),
(Name :'Dsus2/C';   Param:(-1,-1,0,5,5,5)),
(Name :'Dsus2/Db';  Param:(-1,0,0,2,2,0)),
(Name :'Dsus2/Db';  Param:(-1,-1,0,2,2,0)),
(Name :'Dsus2/Db';  Param:(-1,-1,0,6,5,5)),
(Name :'Dsus2/Db';  Param:(-1,-1,0,9,10,9)),
(Name :'Dsus2/F';   Param:(-1,-1,7,7,6,0)),
(Name :'Dsus2/G';   Param:(-1,0,2,0,3,0)),
(Name :'Dsus2/G';   Param:(-1,0,2,0,3,3)),
(Name :'Dsus2/G';   Param:(-1,0,2,2,3,3)),
(Name :'Dsus2/G';   Param:(5,-1,0,0,3,0)),
(Name :'Dsus2/G';   Param:(-1,0,0,0,-1,0)),
(Name :'Dsus2/Gb';  Param:(0,0,0,2,3,2)),
(Name :'Dsus2/Gb';  Param:(0,0,4,2,3,0)),
(Name :'Dsus2/Gb';  Param:(2,-1,0,2,3,0)),
(Name :'Dsus2/Gb';  Param:(-1,0,2,2,3,2)),
(Name :'Dsus2/Gb';  Param:(-1,-1,2,2,3,2)),
(Name :'Dsus2/Gb';  Param:(-1,5,4,2,3,0)),
(Name :'Dsus2/Gb';  Param:(-1,9,7,7,-1,0)),
(Name :'Dsus4/B';   Param:(3,0,0,0,0,3)),
(Name :'Dsus4/B';   Param:(3,2,0,2,0,3)),
(Name :'Dsus4/C';   Param:(-1,5,7,5,8,3)),
(Name :'Dsus4/C';   Param:(-1,-1,0,2,1,3)),
(Name :'Dsus4/E';   Param:(-1,0,2,0,3,0)),
(Name :'Dsus4/E';   Param:(-1,0,2,0,3,3)),
(Name :'Dsus4/E';   Param:(-1,0,2,2,3,3)),
(Name :'Dsus4/E';   Param:(5,-1,0,0,3,0)),
(Name :'Dsus4/E';   Param:(-1,0,0,0,-1,0)),
(Name :'Dsus4/Gb';  Param:(5,-1,4,0,3,5)),
(Name :'Dsus4/Gb';  Param:(3,-1,0,2,3,2)),
(Name :'E';Param:(0,2,2,1,0,0)),
(Name :'E';Param:(-1,7,6,4,5,0)),
(Name :'E#5';Param:(-1,3,2,1,1,0)),
(Name :'E/A';Param:(-1,0,2,1,0,0)),
(Name :'E/D';Param:(0,2,0,1,0,0)),
(Name :'E/D';Param:(0,2,2,1,3,0)),
(Name :'E/D';Param:(-1,2,0,1,3,0)),
(Name :'E/D';Param:(-1,-1,0,1,0,0)),
(Name :'E/Db';Param:(0,2,2,1,2,0)),
(Name :'E/Db';Param:(-1,4,6,4,5,4)),
(Name :'E/Eb';Param:(0,2,1,1,0,0)),
(Name :'E/Eb';Param:(0,-1,6,4,4,0)),
(Name :'E/Eb';Param:(-1,-1,1,1,0,0)),
(Name :'E/Gb';Param:(0,2,2,1,0,2)),
(Name :'E/Gb';Param:(0,-1,4,1,0,0)),
(Name :'E/Gb';Param:(2,2,2,1,0,0)),
(Name :'E11/b9';Param:(0,0,3,4,3,4)),
(Name :'E5';Param:(0,2,-1,-1,-1,0)),
(Name :'E5';Param:(-1,7,9,9,-1,0)),
(Name :'E6';Param:(0,2,2,1,2,0)),
(Name :'E6';Param:(-1,4,6,4,5,4)),
(Name :'E7';Param:(0,2,0,1,0,0)),
(Name :'E7';Param:(0,2,2,1,3,0)),
(Name :'E7';Param:(-1,2,0,1,3,0)),
(Name :'E7';Param:(-1,-1,0,1,0,0)),
(Name :'E7/add11';Param:(-1,0,0,1,0,0)),
(Name :'E7/b9(b5)';Param:(0,1,3,1,3,1)),
(Name :'E7sus4';Param:(0,2,0,2,0,0)),
(Name :'E9';Param:(0,2,0,1,0,2)),
(Name :'E9';Param:(2,2,0,1,0,0)),
(Name :'Eadd9';Param:(0,2,2,1,0,2)),
(Name :'Eadd9';Param:(0,-1,4,1,0,0)),
(Name :'Eadd9';Param:(2,2,2,1,0,0)),
(Name :'Eb';Param:(-1,1,1,3,4,3)),
(Name :'Eb';Param:(-1,-1,1,3,4,3)),
(Name :'Eb';Param:(-1,-1,5,3,4,3)),
(Name :'Eb#5';Param:(3,2,1,0,0,3)),
(Name :'Eb#5';Param:(3,-1,1,0,0,3)),
(Name :'Eb/C';Param:(-1,3,5,3,4,3)),
(Name :'Eb/D';Param:(-1,6,8,7,8,6)),
(Name :'Eb/Db';Param:(-1,1,1,3,2,3)),
(Name :'Eb/Db';Param:(-1,6,8,6,8,6)),
(Name :'Eb/Db';Param:(-1,-1,1,3,2,3)),
(Name :'Eb/E';Param:(-1,-1,5,3,4,0)),
(Name :'Eb5';Param:(-1,6,8,8,-1,6)),
(Name :'Eb6';Param:(-1,3,5,3,4,3)),
(Name :'Eb7';Param:(-1,1,1,3,2,3)),
(Name :'Eb7';Param:(-1,6,8,6,8,6)),
(Name :'Eb7';Param:(-1,-1,1,3,2,3)),
(Name :'Ebaug/E';Param:(3,-1,1,0,0,0)),
(Name :'Ebaug/E';Param:(-1,-1,1,0,0,0)),
(Name :'Ebdim/B';Param:(2,-1,1,2,0,2)),
(Name :'Ebdim/B';Param:(-1,0,1,2,0,2)),
(Name :'Ebdim/B';Param:(-1,2,1,2,0,2)),
(Name :'Ebdim/B';Param:(-1,2,4,2,4,2)),
(Name :'Ebdim/C';Param:(-1,-1,1,2,1,2)),
(Name :'Ebdim7';Param:(-1,-1,1,2,1,2)),
(Name :'Ebm';Param:(-1,-1,4,3,4,2)),
(Name :'Ebm/Db';Param:(-1,-1,1,3,2,2)),
(Name :'Ebm7';Param:(-1,-1,1,3,2,2)),
(Name :'Ebmaj7';Param:(-1,6,8,7,8,6)),
(Name :'Ebsus2/Ab';Param:(-1,1,3,1,4,1)),
(Name :'Ebsus4/F';Param:(-1,1,3,1,4,1)),
(Name :'Edim/C';Param:(-1,3,5,3,5,3)),
(Name :'Edim/D';Param:(3,-1,0,3,3,0)),
(Name :'Edim/Db';Param:(-1,1,2,0,2,0)),
(Name :'Edim/Db';Param:(-1,-1,2,3,2,3)),
(Name :'Edim/Eb';Param:(-1,-1,5,3,4,0)),
(Name :'Edim7';Param:(-1,1,2,0,2,0)),
(Name :'Edim7';Param:(-1,-1,2,3,2,3)),
(Name :'Em';Param:(0,2,2,0,0,0)),
(Name :'Em';Param:(3,-1,2,0,0,0)),
(Name :'Em';Param:(-1,2,5,-1,-1,0)),
(Name :'Em/A';Param:(3,-1,2,2,0,0)),
(Name :'Em/A';Param:(-1,0,2,0,0,0)),
(Name :'Em/A';Param:(-1,0,5,4,5,0)),
(Name :'Em/C';Param:(0,3,2,0,0,0)),
(Name :'Em/C';Param:(-1,2,2,0,1,0)),
(Name :'Em/C';Param:(-1,3,5,4,5,3)),
(Name :'Em/D';Param:(0,2,0,0,0,0)),
(Name :'Em/D';Param:(0,2,0,0,3,0)),
(Name :'Em/D';Param:(0,2,2,0,3,0)),
(Name :'Em/D';Param:(0,2,2,0,3,3)),
(Name :'Em/D';Param:(-1,-1,0,12,12,12)),
(Name :'Em/D';Param:(-1,-1,0,9,8,7)),
(Name :'Em/D';Param:(-1,-1,2,4,3,3)),
(Name :'Em/D';Param:(0,-1,0,0,0,0)),
(Name :'Em/D';Param:(-1,10,12,12,12,0)),
(Name :'Em/Db';Param:(0,2,2,0,2,0)),
(Name :'Em/Eb';Param:(3,-1,1,0,0,0)),
(Name :'Em/Eb';Param:(-1,-1,1,0,0,0)),
(Name :'Em/Gb';Param:(0,2,2,0,0,2)),
(Name :'Em/Gb';Param:(0,2,4,0,0,0)),
(Name :'Em/Gb';Param:(0,-1,4,0,0,0)),
(Name :'Em/Gb';Param:(2,2,2,0,0,0)),
(Name :'Em6';Param:(0,2,2,0,2,0)),
(Name :'Em7';Param:(0,2,0,0,0,0)),
(Name :'Em7';Param:(0,2,0,0,3,0)),
(Name :'Em7';Param:(0,2,2,0,3,0)),
(Name :'Em7';Param:(0,2,2,0,3,3)),
(Name :'Em7';Param:(-1,-1,0,0,0,0)),
(Name :'Em7';Param:(-1,-1,0,12,12,12)),
(Name :'Em7';Param:(-1,-1,0,9,8,7)),
(Name :'Em7';Param:(-1,-1,2,4,3,3)),
(Name :'Em7';Param:(0,-1,0,0,0,0)),
(Name :'Em7';Param:(-1,10,12,12,12,0)),
(Name :'Em7(b5)';Param:(3,-1,0,3,3,0)),
(Name :'Em7/add11';Param:(0,0,0,0,0,0)),
(Name :'Em7/add11';Param:(0,0,0,0,0,3)),
(Name :'Em7/add11';Param:(3,-1,0,2,0,0)),
(Name :'Em9';Param:(0,2,0,0,0,2)),
(Name :'Em9';Param:(0,2,0,0,3,2)),
(Name :'Em9';Param:(2,2,0,0,0,0)),
(Name :'Emaj7';Param:(0,2,1,1,0,0)),
(Name :'Emaj7';Param:(0,-1,6,4,4,0)),
(Name :'Emaj7';Param:(-1,-1,1,1,0,0)),
(Name :'Emaj9';Param:(0,2,1,1,0,2)),
(Name :'Emaj9';Param:(4,-1,4,4,4,0)),
(Name :'Emin/maj7';Param:(3,-1,1,0,0,0)),
(Name :'Emin/maj7';Param:(-1,-1,1,0,0,0)),
(Name :'Emin/maj9';Param:(0,6,4,0,0,0)),
(Name :'Esus';Param:(0,0,2,2,0,0)),
(Name :'Esus';Param:(0,0,2,4,0,0)),
(Name :'Esus';Param:(0,2,2,2,0,0)),
(Name :'Esus';Param:(-1,0,2,2,0,0)),
(Name :'Esus';Param:(-1,-1,2,2,0,0)),
(Name :'Esus2';Param:(7,9,9,-1,-1,0)),
(Name :'Esus2';Param:(-1,2,4,4,-1,0)),
(Name :'Esus2/A';Param:(-1,0,4,4,0,0)),
(Name :'Esus2/A';Param:(-1,2,4,2,5,2)),
(Name :'Esus2/Ab';Param:(0,2,2,1,0,2)),
(Name :'Esus2/Ab';Param:(0,-1,4,1,0,0)),
(Name :'Esus2/Ab';Param:(2,2,2,1,0,0)),
(Name :'Esus2/Db';Param:(-1,4,4,4,-1,0)),
(Name :'Esus2/Eb';Param:(-1,2,2,4,4,2)),
(Name :'Esus2/Eb';Param:(-1,-1,4,4,4,0)),
(Name :'Esus2/G';Param:(0,2,2,0,0,2)),
(Name :'Esus2/G';Param:(0,2,4,0,0,0)),
(Name :'Esus2/G';Param:(0,-1,4,0,0,0)),
(Name :'Esus2/G';Param:(2,2,2,0,0,0)),
(Name :'Esus4/Ab';Param:(-1,0,2,1,0,0)),
(Name :'Esus4/C';Param:(0,0,7,5,0,0)),
(Name :'Esus4/C';Param:(-1,3,2,2,0,0)),
(Name :'Esus4/D';Param:(0,2,0,2,0,0)),
(Name :'Esus4/D';Param:(-1,2,0,2,3,0)),
(Name :'Esus4/Db';Param:(0,0,2,4,2,0)),
(Name :'Esus4/Db';Param:(-1,0,7,6,0,0)),
(Name :'Esus4/Eb';Param:(-1,2,1,2,0,0)),
(Name :'Esus4/F';Param:(0,0,3,2,0,0)),
(Name :'Esus4/G';Param:(-1,0,2,0,0,0)),
(Name :'Esus4/G';Param:(-1,0,5,4,5,0)),
(Name :'Esus4/Gb';Param:(-1,0,4,4,0,0)),
(Name :'Esus4/Gb';Param:(-1,2,4,2,5,2)),
(Name :'F';Param:(1,3,3,2,1,1)),
(Name :'F';Param:(-1,0,3,2,1,1)),
(Name :'F';Param:(-1,3,3,2,1,1)),
(Name :'F';Param:(-1,-1,3,2,1,1)),
(Name :'F#5';Param:(-1,0,3,2,2,1)),
(Name :'F#5';Param:(-1,0,-1,2,2,1)),
(Name :'F/D';Param:(-1,5,7,5,6,5)),
(Name :'F/D';Param:(-1,-1,0,2,1,1)),
(Name :'F/D';Param:(-1,-1,0,5,6,5)),
(Name :'F/E';Param:(0,0,3,2,1,0)),
(Name :'F/E';Param:(1,3,3,2,1,0)),
(Name :'F/E';Param:(1,-1,2,2,1,0)),
(Name :'F/E';Param:(-1,-1,2,2,1,1)),
(Name :'F/E';Param:(-1,-1,3,2,1,0)),
(Name :'F/Eb';Param:(-1,-1,1,2,1,1)),
(Name :'F/Eb';Param:(-1,-1,3,5,4,5)),
(Name :'F/G';Param:(3,-1,3,2,1,1)),
(Name :'F/G';Param:(-1,-1,3,2,1,3)),
(Name :'F5';Param:(1,3,3,-1,-1,1)),
(Name :'F5';Param:(-1,8,10,-1,-1,1)),
(Name :'F6';Param:(-1,5,7,5,6,5)),
(Name :'F6';Param:(-1,-1,0,2,1,1)),
(Name :'F6';Param:(-1,-1,0,5,6,5)),
(Name :'F6/add9';Param:(3,-1,0,2,1,1)),
(Name :'F7';Param:(-1,-1,1,2,1,1)),
(Name :'F7';Param:(-1,-1,3,5,4,5)),
(Name :'Fadd9';Param:(3,-1,3,2,1,1)),
(Name :'Fadd9';Param:(-1,-1,3,2,1,3)),
(Name :'Faug/D';Param:(-1,-1,0,2,2,1)),
(Name :'Faug/G';Param:(1,0,3,0,2,1)),
(Name :'Fdim/D';Param:(-1,2,0,1,0,1)),
(Name :'Fdim/D';Param:(-1,-1,0,1,0,1)),
(Name :'Fdim/D';Param:(-1,-1,3,4,3,4)),
(Name :'Fdim/Db';Param:(-1,4,3,4,0,4)),
(Name :'Fdim7';Param:(-1,2,0,1,0,1)),
(Name :'Fdim7';Param:(-1,-1,0,1,0,1)),
(Name :'Fdim7';Param:(-1,-1,3,4,3,4)),
(Name :'Fm';Param:(-1,3,3,1,1,1)),
(Name :'Fm';Param:(-1,-1,3,1,1,1)),
(Name :'Fm/D';Param:(-1,-1,0,1,1,1)),
(Name :'Fm/Db';Param:(-1,3,3,1,2,1)),
(Name :'Fm/Db';Param:(-1,4,6,5,6,4)),
(Name :'Fm/Eb';Param:(-1,8,10,8,9,8)),
(Name :'Fm/Eb';Param:(-1,-1,1,1,1,1)),
(Name :'Fm6';Param:(-1,-1,0,1,1,1)),
(Name :'Fm7';Param:(-1,8,10,8,9,8)),
(Name :'Fm7';Param:(-1,-1,1,1,1,1)),
(Name :'Fmaj7';Param:(0,0,3,2,1,0)),
(Name :'Fmaj7';Param:(1,3,3,2,1,0)),
(Name :'Fmaj7';Param:(1,-1,2,2,1,0)),
(Name :'Fmaj7';Param:(-1,-1,2,2,1,1)),
(Name :'Fmaj7';Param:(-1,-1,3,2,1,0)),
(Name :'Fmaj7/#11';Param:(0,2,3,2,1,0)),
(Name :'Fmaj7/#11';Param:(1,3,3,2,0,0)),
(Name :'Fmaj9';Param:(0,0,3,0,1,3)),
(Name :'Fsus';Param:(-1,-1,3,3,1,1)),
(Name :'Fsus2';Param:(-1,3,3,0,1,1)),
(Name :'Fsus2';Param:(-1,-1,3,0,1,1)),
(Name :'Fsus2/A';Param:(3,-1,3,2,1,1)),
(Name :'Fsus2/A';Param:(-1,-1,3,2,1,3)),
(Name :'Fsus2/B';Param:(-1,3,3,0,0,3)),
(Name :'Fsus2/Bb';Param:(-1,3,5,3,6,3)),
(Name :'Fsus2/D';Param:(3,3,0,0,1,1)),
(Name :'Fsus2/E';Param:(-1,3,3,0,1,0)),
(Name :'Fsus2/E';Param:(-1,-1,3,0,1,0)),
(Name :'Fsus4/G';Param:(-1,3,5,3,6,3)),
(Name :'G';Param:(-1,10,12,12,12,10)),
(Name :'G';Param:(3,2,0,0,0,3)),
(Name :'G';Param:(3,2,0,0,3,3)),
(Name :'G';Param:(3,5,5,4,3,3)),
(Name :'G';Param:(3,-1,0,0,0,3)),
(Name :'G';Param:(-1,5,5,4,3,3)),
(Name :'G';Param:(-1,-1,0,4,3,3)),
(Name :'G';Param:(-1,-1,0,7,8,7)),
(Name :'G#5';Param:(3,2,1,0,0,3)),
(Name :'G#5';Param:(3,-1,1,0,0,3)),
(Name :'G/A';Param:(3,0,0,0,0,3)),
(Name :'G/A';Param:(3,2,0,2,0,3)),
(Name :'G/C';Param:(3,3,0,0,0,3)),
(Name :'G/C';Param:(-1,3,0,0,0,3)),
(Name :'G/E';Param:(0,2,0,0,0,0)),
(Name :'G/E';Param:(0,2,0,0,3,0)),
(Name :'G/E';Param:(0,2,2,0,3,0)),
(Name :'G/E';Param:(0,2,2,0,3,3)),
(Name :'G/E';Param:(-1,-1,0,12,12,12)),
(Name :'G/E';Param:(-1,-1,0,9,8,7)),
(Name :'G/E';Param:(-1,-1,2,4,3,3)),
(Name :'G/E';Param:(0,-1,0,0,0,0)),
(Name :'G/E';Param:(-1,10,12,12,12,0)),
(Name :'G/F';Param:(1,-1,0,0,0,3)),
(Name :'G/F';Param:(3,2,0,0,0,1)),
(Name :'G/F';Param:(-1,-1,0,0,0,1)),
(Name :'G/Gb';Param:(2,2,0,0,0,3)),
(Name :'G/Gb';Param:(2,2,0,0,3,3)),
(Name :'G/Gb';Param:(3,2,0,0,0,2)),
(Name :'G/Gb';Param:(-1,-1,4,4,3,3)),
(Name :'G5';Param:(3,5,5,-1,-1,3)),
(Name :'G5';Param:(3,-1,0,0,3,3)),
(Name :'G6';Param:(0,2,0,0,0,0)),
(Name :'G6';Param:(0,2,0,0,3,0)),
(Name :'G6';Param:(0,2,2,0,3,0)),
(Name :'G6';Param:(0,2,2,0,3,3)),
(Name :'G6';Param:(-1,-1,0,12,12,12)),
(Name :'G6';Param:(-1,-1,0,9,8,7)),
(Name :'G6';Param:(-1,-1,2,4,3,3)),
(Name :'G6';Param:(0,-1,0,0,0,0)),
(Name :'G6';Param:(-1,10,12,12,12,0)),
(Name :'G6/add9';Param:(0,0,0,0,0,0)),
(Name :'G6/add9';Param:(0,0,0,0,0,3)),
(Name :'G6/add9';Param:(3,-1,0,2,0,0)),
(Name :'G7';Param:(1,-1,0,0,0,3)),
(Name :'G7';Param:(3,2,0,0,0,1)),
(Name :'G7';Param:(-1,-1,0,0,0,1)),
(Name :'G7/add11';Param:(-1,3,0,0,0,1)),
(Name :'G7sus4';Param:(3,3,0,0,1,1)),
(Name :'G9';Param:(-1,0,0,0,0,1)),
(Name :'G9';Param:(-1,2,3,2,3,3)),
(Name :'Gadd9';Param:(3,0,0,0,0,3)),
(Name :'Gadd9';Param:(3,2,0,2,0,3)),
(Name :'Gaug/E';Param:(3,-1,1,0,0,0)),
(Name :'Gaug/E';Param:(-1,-1,1,0,0,0)),
(Name :'Gb';Param:(2,4,4,3,2,2)),
(Name :'Gb';Param:(-1,4,4,3,2,2)),
(Name :'Gb';Param:(-1,-1,4,3,2,2)),
(Name :'Gb#5';Param:(-1,-1,0,3,3,2)),
(Name :'Gb/Ab';Param:(-1,-1,4,3,2,4)),
(Name :'Gb/E';Param:(2,4,2,3,2,2)),
(Name :'Gb/E';Param:(-1,-1,4,3,2,0)),
(Name :'Gb/Eb';Param:(-1,-1,1,3,2,2)),
(Name :'Gb/F';Param:(-1,-1,3,3,2,2)),
(Name :'Gb6';Param:(-1,-1,1,3,2,2)),
(Name :'Gb7';Param:(2,4,2,3,2,2)),
(Name :'Gb7';Param:(-1,-1,4,3,2,0)),
(Name :'Gb7(#5)';Param:(2,-1,4,3,3,0)),
(Name :'Gb7/#9';Param:(-1,0,4,3,2,0)),
(Name :'Gb7sus4';Param:(-1,4,4,4,-1,0)),
(Name :'Gbadd9';Param:(-1,-1,4,3,2,4)),
(Name :'Gbaug/E';Param:(2,-1,4,3,3,0)),
(Name :'Gbdim/D';Param:(-1,5,7,5,7,2)),
(Name :'Gbdim/D';Param:(-1,0,0,2,1,2)),
(Name :'Gbdim/D';Param:(-1,3,-1,2,3,2)),
(Name :'Gbdim/D';Param:(-1,5,7,5,7,5)),
(Name :'Gbdim/E';Param:(-1,0,2,2,1,2)),
(Name :'Gbdim/E';Param:(-1,-1,2,2,1,2)),
(Name :'Gbdim/Eb';Param:(-1,-1,1,2,1,2)),
(Name :'Gbdim7';Param:(-1,-1,1,2,1,2)),
(Name :'Gbm';Param:(2,4,4,2,2,2)),
(Name :'Gbm';Param:(-1,4,4,2,2,2)),
(Name :'Gbm';Param:(-1,-1,4,2,2,2)),
(Name :'Gbm/D';Param:(-1,-1,0,14,14,14)),
(Name :'Gbm/D';Param:(-1,-1,0,2,2,2)),
(Name :'Gbm/E';Param:(0,0,2,2,2,2)),
(Name :'Gbm/E';Param:(0,-1,4,2,2,0)),
(Name :'Gbm/E';Param:(2,-1,2,2,2,0)),
(Name :'Gbm/E';Param:(-1,0,4,2,2,0)),
(Name :'Gbm/E';Param:(-1,-1,2,2,2,2)),
(Name :'Gbm7';Param:(0,0,2,2,2,2)),
(Name :'Gbm7';Param:(0,-1,4,2,2,0)),
(Name :'Gbm7';Param:(2,-1,2,2,2,0)),
(Name :'Gbm7';Param:(-1,0,4,2,2,0)),
(Name :'Gbm7';Param:(-1,-1,2,2,2,2)),
(Name :'Gbm7(b5)';Param:(-1,0,2,2,1,2)),
(Name :'Gbm7(b5)';Param:(-1,-1,2,2,1,2)),
(Name :'Gbm7/b9';Param:(0,0,2,0,2,2)),
(Name :'Gbmaj7';Param:(-1,-1,3,3,2,2)),
(Name :'Gbsus';Param:(-1,4,4,4,2,2)),
(Name :'Gbsus2/Bb';Param:(-1,-1,4,3,2,4)),
(Name :'Gbsus4/E';Param:(-1,4,4,4,-1,0)),
(Name :'Gdim/E';Param:(-1,1,2,0,2,0)),
(Name :'Gdim/E';Param:(-1,-1,2,3,2,3)),
(Name :'Gdim/Eb';Param:(-1,1,1,3,2,3)),
(Name :'Gdim/Eb';Param:(-1,6,8,6,8,6)),
(Name :'Gdim/Eb';Param:(-1,-1,1,3,2,3)),
(Name :'Gdim7';Param:(-1,1,2,0,2,0)),
(Name :'Gdim7';Param:(-1,-1,2,3,2,3)),
(Name :'Gm';Param:(3,5,5,3,3,3)),
(Name :'Gm';Param:(-1,-1,0,3,3,3)),
(Name :'Gm/E';Param:(3,-1,0,3,3,0)),
(Name :'Gm/Eb';Param:(-1,6,8,7,8,6)),
(Name :'Gm/F';Param:(3,5,3,3,3,3)),
(Name :'Gm/F';Param:(-1,-1,3,3,3,3)),
(Name :'Gm13';Param:(0,0,3,3,3,3)),
(Name :'Gm6';Param:(3,-1,0,3,3,0)),
(Name :'Gm7';Param:(3,5,3,3,3,3)),
(Name :'Gm7';Param:(-1,-1,3,3,3,3)),
(Name :'Gm7/add11';Param:(-1,3,3,3,3,3)),
(Name :'Gm9';Param:(3,5,3,3,3,5)),
(Name :'Gmaj7';Param:(2,2,0,0,0,3)),
(Name :'Gmaj7';Param:(2,2,0,0,3,3)),
(Name :'Gmaj7';Param:(3,2,0,0,0,2)),
(Name :'Gmaj7';Param:(-1,-1,4,4,3,3)),
(Name :'Gsus';Param:(-1,10,12,12,13,3)),
(Name :'Gsus';Param:(-1,3,0,0,3,3)),
(Name :'Gsus';Param:(-1,3,5,5,3,3)),
(Name :'Gsus';Param:(-1,5,5,5,3,3)),
(Name :'Gsus2';Param:(5,-1,0,0,3,5)),
(Name :'Gsus2';Param:(3,0,0,0,3,3)),
(Name :'Gsus2';Param:(-1,0,0,0,3,3)),
(Name :'Gsus2';Param:(-1,-1,0,2,3,3)),
(Name :'Gsus2/B';Param:(3,0,0,0,0,3)),
(Name :'Gsus2/B';Param:(3,2,0,2,0,3)),
(Name :'Gsus2/C';Param:(-1,5,7,5,8,3)),
(Name :'Gsus2/C';Param:(-1,-1,0,2,1,3)),
(Name :'Gsus2/E';Param:(-1,0,2,0,3,0)),
(Name :'Gsus2/E';Param:(-1,0,2,0,3,3)),
(Name :'Gsus2/E';Param:(-1,0,2,2,3,3)),
(Name :'Gsus2/E';Param:(5,0,0,0,3,0)),
(Name :'Gsus2/Gb';Param:(5,-1,4,0,3,5)),
(Name :'Gsus2/Gb';Param:(3,-1,0,2,3,2)),
(Name :'Gsus4/A';Param:(-1,5,7,5,8,3)),
(Name :'Gsus4/A';Param:(-1,-1,0,2,1,3)),
(Name :'Gsus4/B';Param:(3,3,0,0,0,3)),
(Name :'Gsus4/B';Param:(-1,3,0,0,0,3)),
(Name :'Gsus4/E';Param:(3,-1,0,0,1,0)),
(Name :'Gsus4/E';Param:(-1,3,0,0,1,0)),
(Name :'Gsus4/E';Param:(-1,3,2,0,3,0)),
(Name :'Gsus4/E';Param:(-1,3,2,0,3,3)),
(Name :'Gsus4/E';Param:(-1,-1,0,0,1,0)),
(Name :'Gsus4/E';Param:(-1,-1,0,5,5,3)),
(Name :'Gsus4/E';Param:(-1,10,12,12,13,0)),
(Name :'Gsus4/E';Param:(-1,5,5,5,-1,0)),
(Name :'Gsus4/F';Param:(3,3,0,0,1,1))
                );

type
  TAgreements = class(TCustomControl)
  private
    fColorLsBx: TColor;
    fAgreeLsBx: TComboBox;
    Procedure SetColorLsBx(Value:TColor);
    Procedure Add_Name_Agreements_In_LsBx;
    Function SubtractorKey : Integer;
  protected
    Procedure DoAgreeLstBxChange(Sender: TObject);
    Procedure Resize; Override;
    Procedure Paint ; Override;
  public
   fAgreementSelected:Integer;
   constructor Create(AOwner:TComponent); override;
   destructor Destroy; override;
  published
    property Width default 200;
    property Height default 200;
    property BevelInner default bvLowered;
    property BevelOuter default bvLowered;
    Property ColorLsBx: TColor Read fColorLsBx Write SetColorLsBx default clWhite;
    property OnMouseDown;
    property OnClick;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('MUSIC_PRO', [TAgreements]);
end;

constructor TAgreements.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  Parent := TWinControl(AOwner);

  ControlStyle := ControlStyle + [csFramed, csReplicatable];

  DoubleBuffered := True;
  Caption        := '';
  Width          := 200;
  Height         := 200;
  BevelInner     := bvLowered;
  BevelOuter     := bvLowered;

  fAgreementSelected  := -1;
  fColorLsBx          := ClWhite;

  fAgreeLsBx          := TComboBox.Create(Self);
  fAgreeLsBx.Parent   := self;
  fAgreeLsBx.Anchors  := [akLeft, akRight, akTop];
  fAgreeLsBx.Color    := fColorLsBx;
  fAgreeLsBx.OnChange := DoAgreeLstBxChange;

  Resize;
  Add_Name_Agreements_In_LsBx;
end;

destructor TAgreements.Destroy;
begin
  fAgreeLsBx.Free;
  inherited;
end;

Procedure TAgreements.SetColorLsBx(Value: TColor);
begin
  if fColorLsBx <> Value then
  begin
    fColorLsBx := Value;
    fAgreeLsBx.Color := fColorLsBx;
  end;
End;

Procedure TAgreements.Add_Name_Agreements_In_LsBx;
var
  Index : integer;
begin
  for Index := Low(ListAgreement) to High(ListAgreement) do
    if fAgreeLsBx.Items.IndexOf(ListAgreement[Index].Name) = -1 then
      fAgreeLsBx.Items.Add(ListAgreement[Index].Name);
end;

Procedure TAgreements.Resize;
begin
  inherited;

  If (Width and $1) = $1 Then
    Width := Width+1;

  Height := Round(Self.Width*1.2);

  fAgreeLsBx.SetBounds(4, 4, Width-8, 21);
  fAgreeLsBx.Font.Size  := round(Width *0.08);
end;

Procedure TAgreements.DoAgreeLstBxChange(Sender: TObject);
var
  Index: integer;
begin
  if fAgreeLsBx.Items.Count < 0 then
    Exit;

  for Index := Low(ListAgreement) to high(ListAgreement) Do
    if ListAgreement[Index].Name = fAgreeLsBx.Items.Strings[fAgreeLsBx.ItemIndex] then
    begin
      fAgreementSelected := Index;
      Invalidate;
      Break;
    end;
end;

Function TAgreements.SubtractorKey: Integer;
var
IndexRope, SubtractorKeyValue: Integer;
begin
  SubtractorKeyValue := 0;
  for IndexRope := 1 to 6 do
    if SubtractorKeyValue < ListAgreement[fAgreementSelected].Param[IndexRope-1] then
      SubtractorKeyValue := ListAgreement[fAgreementSelected].Param[IndexRope-1];
  Result := SubtractorKeyValue-5;
end;

Procedure TAgreements.Paint;
Var
  ColumnDim: Single;
  Rect: TRect;
  IndexLine, IndexRope,
  Border,
  LeftText, TopText, WidthText, HeightText,
  Subtractor, KeysSubstracted: Integer;
  Str: String;
Begin
  Inherited;
  if fAgreementSelected = -1 then
    Exit;

  Border := Height-Width;

  with Canvas do
  begin
    Brush.Color := clBlack;
    Brush.Style := bsSolid;
    Pen.Color   := clBlack;
    Pen.Width   := 3;
    ColumnDim   := Self.Width/7;
    for IndexLine := 1 to 6 do
    begin
      MoveTo( Round(ColumnDim), Round(ColumnDim*IndexLine+Border) );
      LineTo( Round(Self.Width-ColumnDim), Round(ColumnDim*IndexLine+Border) );
      MoveTo( Round(ColumnDim*IndexLine), Round(ColumnDim+Border) );
      LineTo( Round(ColumnDim*IndexLine), Round(Self.Height-ColumnDim) );
    end;

    Font.Color := clWhite;
    Subtractor := SubtractorKey;

    for IndexRope := 1 to 6 do
      If ListAgreement[fAgreementSelected].Param[IndexRope-1] > 0 Then
      begin
        Rect.Left  := Round( ColumnDim*IndexRope )-5;
        Rect.Right := Round( ColumnDim*IndexRope )+5;

        if Subtractor > 0 then
          KeysSubstracted := ListAgreement[fAgreementSelected].Param[IndexRope-1]-Subtractor
        else
          KeysSubstracted := ListAgreement[fAgreementSelected].Param[IndexRope-1];

        Rect.Top    := Round((KeysSubstracted+0.5)*ColumnDim+Border)-5;
        Rect.Bottom := Rect.Top+10;
        Ellipse(Rect);

        if Subtractor > 0 then
        begin
          Font.Size  := Width Div 16;
          WidthText  := TextWidth( IntToStr(Subtractor) );
          HeightText := TextHeight( IntToStr(Subtractor) );
          LeftText   := Round( (ColumnDim -WidthText)*0.5 );
          TopText    := Round( ((3*ColumnDim-HeightText)*0.5)+Border );
          TextOut( LeftText, TopText, IntToStr(Subtractor+1) );
        end;
      end
      else
      begin
        if ListAgreement[fAgreementSelected].Param[IndexRope-1] = 0 then
          Str := '0'
        else
          Str := 'X';
        Font.Size  := Width Div 16;
        WidthText  := TextWidth(Str);
        HeightText := TextHeight(Str);
        LeftText   := Round( ColumnDim*(IndexRope) )-WidthText Div 2;
        TopText    := Round( 0.5*ColumnDim-(HeightText*0.5)+Border );
        TextOut( LeftText, TopText, Str );
      end;
    end;
end;



end.

signaler à un administrateur
Commentaire de japee le 21/12/2007 02:12:57 administrateur CS

Ok, après avoir mieux regardé, il s'agit de plusieurs manières de faire le même accord.
Bon, puisque je vous dis qu'il y en a 2 ou 3 que je connais pas... ^^

@Cirec : Moi aussi j'aurais préféré une ComboBox, mais on peut quand même accéder assez rapidement à l'accord voulu en saisissant la lettre correspondant dans la ListBox. Si tu saisis G, tu tombes sur le 1er des accords de sol, cad le sol majeur.

signaler à un administrateur
Commentaire de Francky23012301 le 21/12/2007 09:00:44

Bon il serait peut etre temps de vous accorder les mecs lol : combobox ou tlistbox ? vous voulez lequel ?

signaler à un administrateur
Commentaire de japee le 21/12/2007 09:27:49 administrateur CS

La TComboBox est plus agréable à mon avis.
En même temps, c'est pas un vrai problème : il suffit de remplacer TListBox par TComboBox à 2 endroits...

signaler à un administrateur
Commentaire de f0xi le 21/12/2007 09:37:58 administrateur CS

Même avis que japee, la Combobox est plus appropriée pour ça surtout pour la recherche automatique lors de la saisie et pour l'evenement OnChange.


signaler à un administrateur
Commentaire de Francky23012301 le 21/12/2007 09:51:09

Bon je t'envois le screenshot f0xi car je sens que je vais passer la matinée à  la modifier sur le site. Il y a un sérieux soucis : les checkbox dans la partie modification d'un source font des leurs.

signaler à un administrateur
Commentaire de cirec le 21/12/2007 11:57:05 administrateur CS

Eh Francky Oublies les CheckBoxs
il faut les cocher que si tu supprimes (le Zip ou la capture) pas si tu les remplaces !

"Pour la notation francaise des accords : je suis pas sur qu'elle existe."
Do Ré Mi Fa Sol La Si  c'est ça la notation française ;-)

signaler à un administrateur
Commentaire de cirec le 21/12/2007 12:47:07 administrateur CS

Voici les dernières modifications

   ...
  public
   fAgreementSelected:Integer;
   constructor Create(AOwner:TComponent); override;
   //destructor Destroy; override; // complètement inutile
  published
   ...
Implementation

constructor TAgreements.Create(AOwner:TComponent);
begin
  inherited Create(AOwner);
  ...
  ...
  Add_Name_Agreements_In_LsBx;
  fAgreeLsBx.ItemIndex  := 0; // évite d'avoir le ComboBox vide
  fAgreementSelected  := 0; //  après sa création
end;

{destructor TAgreements.Destroy;
begin
  fAgreeLsBx.Free;  //Ceci n'est vraiment pas utile
  inherited;  // et du coup c'est tout le Destructeur qui devient inutile
end; }   // C'est TAgreements qui se charge de libérer FAgreeLsBx.

signaler à un administrateur
Commentaire de japee le 21/12/2007 12:56:32 administrateur CS

C'est maintenant quasiment parfait au niveau du fonctionnement.

Moi j'aime bien qu'un accord s'affiche au démarrage, il suffit d'ajouter
  fAgreeLsBx.ItemIndex := 0;
  DoAgreeLstBxChange(nil);
dans TAgreements.Add_Name_Agreements_In_LsBx

Ça serait bien aussi si, quand on clique dessus, les différentes possibilités pour un  accord donné défilaient en boucle plutôt que de s'arrêter sur le dernier.

Mais bon, les goûts et les couleurs...

signaler à un administrateur
Commentaire de cirec le 21/12/2007 13:04:19 administrateur CS

Dans le OnPaint vire le :
  //Inherited;
ça ne sert pas à grand chose puisque tu le redessine complètement
juste après

En plus je trouve l'affichage plus claire ... plus propre

Tu peux éventuellement faire :
  With Inherited Canvas Do

Mais c'est pas utile ... enfin fait les testes ;-)

signaler à un administrateur
Commentaire de cirec le 21/12/2007 13:14:53 administrateur CS

Il manque encore un truc

afin ne pas pouvoir écrire dans le ComboBox mais quand même
pouvoir se servir de la recherche automatique lors de la saisie

Dans le Constructeur :
  Add_Name_Agreements_In_LsBx;
  fAgreeLsBx.Style := csDropDownList; // <------------ Ajoute ceci
  fAgreeLsBx.ItemIndex  := 0;
  fAgreementSelected  := 0;

signaler à un administrateur
Commentaire de Francky23012301 le 21/12/2007 18:42:43

J'ai vu vos commentaires : je ferai tout ca demain promis.

Arffff si je voulais pas vous réserver la surprise d'un pseudo cubase, je vous lacherai mon TPianoGrid pour vous faire plaisir tiens :p.

signaler à un administrateur
Commentaire de Nicolas___ le 22/12/2007 01:47:11

Excellent Fracky , vraiment :)

Je viens seulement de découvrir ta source , et waw , t'as du t'amuser comme un fou avec tes records !

Et moi je vais pouvoir les réviser très facilement maintenant !

Bon maintenant tu peux t'amuser à le faire avec les differents accordages, EADGBE c'est le standard ... hé c'est pour rire te suicide pas !

Ciao , Joyeuses Fêtes

signaler à un administrateur
Commentaire de Nicolas___ le 22/12/2007 01:54:37

Par contre c'est bizarre
qd je place le composant sur une fenetre j'ai toujours
8 fois ceci :
---------------------------
Erreur
---------------------------
Violation d'accès à l'adresse 510056A2 dans le module 'dclusr70.bpl'. Lecture de l'adresse 00000000.
---------------------------
OK  
---------------------------

Mais le compo se place correctement et fonctionne aussi tres bien , je sauvegarde et je reouvre , tt marche !

J'utilise D7 ...  

Enfin vu l'heure j'ai peut etre mal installé le compo ( m'enfin ... )

Ciao

signaler à un administrateur
Commentaire de Francky23012301 le 22/12/2007 09:35:04

Salut,

Oui je viens de voir ca : elle était pas présente avec l'ancienne version.
Je suis donc revenu à la version précédente mais t'inquète f0xi, je me penche sur tes modifs : je veux savoir ou ca beugue.

Cirec : si dans le OnPaint tu vires le Inherited, il y a un soucis avec les propriétés BevelInner et BevelOuter. Fais le test tu véras mieux ^^.

Pour les libérations : je suis d'accord avec toi. Mais par habitude et par précaution, je préfère écrire la libération de tous les objects.

signaler à un administrateur
Commentaire de Francky23012301 le 22/12/2007 09:36:42

Je précise : j'ai refais les modifs que vous avez proposé : j'ai remplacé la tlistbox par la combobox et j'ai pris en comptes vos dernières remarques.

signaler à un administrateur
Commentaire de cirec le 22/12/2007 12:26:50 administrateur CS

"Cirec : si dans le OnPaint tu vires le Inherited, il y a un soucis avec les propriétés BevelInner et BevelOuter. Fais le test tu véras mieux ^^."

Oui je sais mais personnellement je préfère comme ça ...
mais par dessus tout le composant est moins long à l'affichage puisque tu ne fais plus appel à la méthode héritée de Paint

"Pour les libérations : je suis d'accord avec toi. Mais par habitude et par précaution, je préfère écrire la libération de tous les objects."

ça ne sert ABSOLUMENT à rien ;-)
Si tu tiens absolument à le libérer toi même dans ce ça met Nil dans le OnCreate mais c'est c'est du temps et du code de perdu :)


Sinon pour le problème cité par Nicolas__

Moi je serais d'avis de supprimer ceci Dans le Constructeur:
   Parent := TWinControl(AOwner);

Surprenant que F0xi ait laissé cette ligne !!!!!!

Le parent est mis automatiquement lors drop sur la fiche
et si il est créé dynamiquement dans ce cas c'est à l'utilisateur de le spécifier

à mon avis le problème viens de cette ligne  ... en tous cas elle na rien à faire là.

signaler à un administrateur
Commentaire de Francky23012301 le 22/12/2007 13:25:35

Je captes plus rien lol : au secours lol. Dans quel cas on doit implanter le Destroy et définir le parent dans le constructeur dans un composant. Car là je suis paumé ^^.

signaler à un administrateur
Commentaire de cirec le 22/12/2007 14:05:15 administrateur CS

Bon Alors c'est tout simple :

Quand tu donnes un composant au Constructeur en paramètre :
Panel := TPanel.Create(Form1)

C'est Form1 qui se charge de la destruction du Panel

Si tu fait :
Panel := TPanel.Create(Nil)

Bitmap := TBitmap.Create // qui n'accepte pas de paramètre

C'est toi qui doit les liberer :
  Panel.Free et Bitmap.Free

Et donc si tu n'as rien à mettre dans ton Destructeur à part :
  Inherited Destroy;

c'est pas la peine de l'implémenter ;)

Pour l'implémentation du Parent dans le Constructeur je n'en ai jamais eu l'utilité !!!

signaler à un administrateur
Commentaire de Francky23012301 le 22/12/2007 15:44:24

Tu as raison : apres mur reflexion ca ne sert à rien. C'est juste l'habitude et la peur de ne pas libérer les objets. je m'étais jamais posée la question lors de la création d'un composant. En meme temps faut mieux en faire trop que pas assez ^^ : en définif ca ne change rien sauf quelques lignes de codes en moins.

Bon je vais te faire plaisir t'inquete pas : ben dis donc ce petit compo, il déchaine les passions lol.

signaler à un administrateur
Commentaire de Marcus2508 le 08/08/2008 00:21:16

Très intéressant comme composant, va falloir que je m'y colle à en coder un...
Au niveau code, c'est rudimentaire et efficace mais il y a pas mal d'hérésies dans le nom des accords!
Je ne sais pas où tu as trouvé ces définitions !
"A/B" se lit "A majeur avec un B à la basse" qui est grosso modo un B13 sans tierce ni quinte ou encore "B13(omit3)", une superstructure comme on dit dans le jargon.Or la tablature que tu donnes (0,0,2,4,2,0) n'est ni plus ni moins qu'un "A add 9/E" ( et non "A9" ou "AM9" car absence de 7e). Loin de moi l'envie de vous chercher des poux dans la tête, mais il fallait le signaler :)

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

published record [ par Guillemouze ] salut a tous, cette question me semblait simple, et pourtant, je n'arrive pas a editer un record dans l'inspecteur d'objet d'un composant que j'ai cré relation du Composant DBGrid et le nombre de ligne... [ par lilo415 ] Bonjour,J'aurais voulu avoir un renseignements. je viens de créer un DBGrid et je voudrais limité la saisie à une seule ligne. Est-ce possible??Sinon Propriété d'un composant [ par gebu34 ] Bonjour,J'aimerais savoir, lorsque l'on dérive un composant, (en l'occurence un TStringGrid pour mon cas) si l'on peut lui retirer un propriété qu'il Composant [ par sylvunix ] Certains composants, comme TImage, une fois placés sur une form sont pré-dessinés et on peut même double-cliquer dessus pour obtenir une boîte de dial Composant : imposer l'ordre des propriétés publiées [ par Francky23012301 ] Salu à tous,Je suis entrain de développer un composant et je trouve particulièrement pénible que l'IDE trie les propriétés des composants par ordre al Composant Indy idPop3 et Proxy [ par lacaillecaille ] J'utlise un  TIdPop3 pour consulter un serveur POP et j'aimerai le faire maintenant via un Proxy. Comment dois-je faire? Où renseigner l'adresse du pr Composant Style XP [ par kilojun ] Bonjour Mon probleme est comment je peut fair ou trouver un composant style xp( volet d'exploration ) du genre<b IRC composant [ par cyber37 ] bonjours a tous depuis 1 semaine je n'arrive pas a instaler un composant enfin quand je fait compile (dans DClusr.dpk) et apres instal le composant s' ExtFileOp (composant de F0xi) [ par EricStib ] Bonjour à tous,J'essaie d'utiliser le composant ExtFileOp de F0xi pour copier des fichiers mais sans passer par une boite de dialogue.Cela fonctionne composant [ par Hardouz ] salut :)j'ai un probléme d'installation des composant a chaque foi que je veut installer un composant il me dit :Build  [Fatal Error] dclusr.dpk(43):


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,764 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.