Sélection d'un ensemble d'objets dans un TPanel

Résolu
cs_LeGuepard Messages postés 38 Date d'inscription mardi 16 septembre 2003 Statut Membre Dernière intervention 7 septembre 2015 - 6 mars 2005 à 02:38
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 8 mars 2005 à 23:29
Salut à tous!

J'ai un petit problème !
Je suis en train de développer un application pour gérer la location de place de spectacle.
J'ai donc représenté les siège de la salle et j'aimerais bien pouvoir sélectionner un ensemble de place avec la souris, un peu de la même manière qu'on sélectionne un ensemble de fichiers dans l'explorateur windows. Pour vous aider à comprendre, j'ai réaliser une simulation de printscreen du résultat auquel j'aimerais arriver.




Pour explication, j'ai donc un TPanel de couleur blanche pour le fond. Lorsque l'application se lance, elle crée dynamiquement les différentes places qui sont également des TPanel, de couleur jaune au départ mais cela change avec l'état de la place (réservé, payé...).
Pour éviter lorsque pas exemple un client en réserve 10 d'une seul fois, de devoir cliquer sur les 10 places, je voudrais donc pouvoir les sélectionner en créant une zone.

Si quelqu'un peut me dépaner, ce serait vraiment sympa car je cale la dessus depuis plusieurs semaines.

Merci d'avoir lu mon message.

A+

7 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
8 mars 2005 à 23:19
La réponse est exprimée sous la forme d'un code source (ouf, on y est arrivés) : DESSINER UN RECTANGLE DE SÉLECTION AU DESSUS D'AUTRES COMPOSANTS et sans remettre ton code source qui utilise des TPanel.

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.croix-rouge.fr/index/partner_campagne.html
3
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
6 mars 2005 à 10:25
La solution des panel me parait pas etre ce qu'il y a de mieu...
Moi ce que j'aurai fait c'est mémoriser l'ensemble des sieges dans un tableau, et dessiner ta réprésentation de la salle sur le canvas d'un TImage, le TImage te permettant de savoir facilement les click de l'utilisateur et les déplacement de la souris tu pourrai calculer les sieges qui sont dans un rectangle tracé par l'utilisateur... Je pense que c'est plus simple comme solution. Je ne croit pas que delphi sache gérer la selection d'objets dans un panel par defaut, c'est a toi de le coder, mais avec tes panel ça risque d'etre dur...

neodelphi
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
6 mars 2005 à 17:05
Je n'ai pas de code clé en main, mais j'ai commencé à cogiter à ce
problème auquel j'ai été confronté dans le cadre de la réalisation
d'une visionneuse d'images.



Quelques pistes :



dans l'évènement OnKeyDown du Form, on teste la pression des touches servant habituellement à la sélection multiple d'objets :



var

SelectionFromTo: Boolean; // sélection intervalle de click1 à click2

SelectionAdd: Boolean; // sélection par addition des panels cliqués

Case Key of

VK_SHIFT: SelectionFromTo := True; // touche shift

VK_CONTROL: SelectionAdd := True; // touche majuscule

end;



Après, à toi de gérer ça dans l'évènement OnClick de tes panels :

- En utilisant une boucle parcourant l'intervalle déterminé en cliquant sur un panel, puis sur un autre, dans le premier cas.

- En ajoutant les panels cliqués, dans le second.



Bonne prog'
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
6 mars 2005 à 17:25
Il faut bien sûr compléter avec un code dans l'évènement OnKeyUp du Form :



var

SelectionFromTo: Boolean; // sélection intervalle de click1 à click2

SelectionAdd: Boolean; // sélection par addition des panels cliqués

procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

SelectionFromTo := False;

SelectionAdd := False;

end;




Bonne prog'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_LeGuepard Messages postés 38 Date d'inscription mardi 16 septembre 2003 Statut Membre Dernière intervention 7 septembre 2015 2
6 mars 2005 à 20:18
Merci Japee pour tes renseignement, mais c'est pas temps un problème pour pouvoir les sélectionner , mais plus pour dessiner la zone de sélection.
0
neodelphi Messages postés 442 Date d'inscription jeudi 4 avril 2002 Statut Membre Dernière intervention 11 août 2008
7 mars 2005 à 06:43
Dans ce cas je pense que la méthode du TImage est plus adaptée. Tu dessinne exactement comme tu veut tes places, ça te laisse plus libre.

neodelphi
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
8 mars 2005 à 23:29
Erratum
Au lieu de : "sans remettre ton code source "

il faut lire : "sans remettre en cause ton code source
"

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.croix-rouge.fr/index/partner_campagne.html
0
Rejoignez-nous