begin process at 2008 05 22 21:49:04
1 177 987 membres
633 nouveaux aujourd'hui
13 991 membres club

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 !

DESSINER UN RECTANGLE DE SÉLECTION AU DESSUS D'AUTRES COMPOSANTS


Information sur la source

Catégorie :Graphique Classé sous : sélection, rectangle, dessin Niveau : Initié Date de création : 08/03/2005 Vu / téléchargé: 6 019 / 688

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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

Description

Dans le forum, Guépard a posé une question (http://www.delphifr.com/forum.v2.aspx?ID=406148) fort intéressante : comment, à l'exécution, sélectionner plusieurs composants en traçant un rectangle au-dessus et non pas en dessous (chose beaucoup plus facile à faire).

Conclusion

Le code utilise la fonction DrawFocusRect des API par souci de simplification. Le but du demandeur est de dessiner un rectangle de couleur. Il n'y a aucune difficulté à utiliser la méthode Rectangle d'un objet Canvas en remplacement.

Je précise que ce code ne se limite pas à dessiner un rectangle mais qu'il vérifie :
- que le dessin reste dans des limites fixées (voir commentaires sur la méthode MakeRect)
- que le rectangle de sélection, qu'il soit dessiné vers la droite ou la gauche, le haut ou le bas, ajuste les coordonnées pour obtenir un rectangle dont les coordonnées sont toujours définies de la manière suivante : (coin supérieur gauche, coin inférieur droit).
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

  • signaler à un administrateur
    Commentaire de MAURICIO le 09/03/2005 13:09:13

    Salut à toi DelphiProg! Je connaissais déjà DrawFocusRect( mais pas {$IfDef Debugging} dont je n' ai toujours pas compris comment il fonctionne vu que le code juste après n' est jamais executé?!

    Juste une petite remarque:
    on ne peut pas commencer à seleccionner si l' on clique sur l' un des panels, dommage. J' ai attribué les events OnMouseDown/OnMouseMove/OnMouseUp aux panels mais faut changer quand même quelques bricoles à cause des coordonnées de la souris qui sont celles du compo Sender...
    A+

  • signaler à un administrateur
    Commentaire de Delphiprog le 09/03/2005 14:00:19 administrateur CS

    Bonjour Mauricio.
    Le code situé juste après {$IfDef Debugging} n'est jamais exécuté puisque la directive de compilation située au début de l'unité est désactivée (un caractère "!" entre l'accolade et la définition de la directive. Je l'ai laissé volontairement pour montrer l'usage des directives de compilation.
    Pour ta remarque, je suis tout à fait d'accord. Mais c'était précisément l'effet recherché.

  • signaler à un administrateur
    Commentaire de MAURICIO le 09/03/2005 16:10:45

    Dans ce cas, merci pour cette précision.
    Je vais pouvoir noter maintenant ! (bem oui, je note pas tout de suite parce qu' on ne peut changer notre note malheureusement) ...

  • signaler à un administrateur
    Commentaire de MAURICIO le 09/03/2005 16:20:54

    Haaa, chui super deçut !!!
    Non, pas de la source mais par la directive {$Define Debugging}. Je pensais que le code entre {$IfDef Debugging} et {$EndIf} s' executait si on courait le programme depuis Delphi (mode debugging quoi ...) mais non, en cliquant sur l' exe, le code s' execute aussi :(
    Bref, quel est l' interêt alors qu' on aurait le même effet en creant une var de type bool comme ceci:
    if varBool = true
    then begin


    end

    Qqu' un peut m' eclairer sur les directives de compilation. Y a t' il un tuto la dessus ??? La réponse est oui mais où ?

  • signaler à un administrateur
    Commentaire de Delphiprog le 09/03/2005 17:19:15 administrateur CS

    Voir le tuto sur les directives de compilation : http://www.delphifr.com/code.aspx?id=11787
    Il est de qui à ton avis ?

    Si tu n'as qu'un seul endroit où tu dois exploiter une variable booléenne, alors oui, je suis d'accord avec toi.
    Si tu en as plusieurs, alors les directives de compilation sont très utiles puisqu'il suffit de changer la valeur dans un seul endroit pour que le changement soit répercuté partout (à condition que la directive soit visible de là où on souhaite connaitre sa valeur).
    C'est ainsi qu'à partir d'un même code on peut générer des versions différentes (évaluation, complète, etc) sans écrire deux fois le même code.

    Dans le cas présent, j'ai défini une directive nommée Debugging mais qui n'a rien à voir avec Delphi. J'aurais pu lui donner un autre nom, ça n'aurait rien changé.

  • signaler à un administrateur
    Commentaire de MAURICIO le 10/03/2005 19:06:08

    Ça manque d' explications !
    Y a pas de zip dans la source avec le link que tu me donnes :(

    J' ai bien fait [CTRL]+O+O dans un projet et il me montre les options de compilation, exact?
    D' ailleurs, pourquoi un programme ne fonctionnerai pas de la même manière sur 2 postes differents, je pige pas même si j' en ai déjà fait l' expérience, surtout sur 2 versions differentes de Windows. Jte jure, là chui perdu!

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS