Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1606 connectés 

 


Dernière réponse
Sujet : [algo] tri de composants sur une fiche Delphi
rufo je suis toujours preneur si qq'un a une suggestion... :)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
rufo je suis toujours preneur si qq'un a une suggestion... :)
rufo oui, effectivement, c'est une solution, mais ça fait quand même pas mal de code en plus... Mais, bon, je la garde sous le coude en attendant de trouver mieux. Merci en tout cas. :)
youdontcare

rufo a écrit a écrit :

comment ça?... un exemple svp :)


http://www.w3.org/TR/REC-CSS2/
 
http://www.w3.org/TR/REC-CSS2/visuren.html
d'ailleurs j'ai confondu :D
 
lorsque tu écris un élément en html (comme <p>mon paragraphe !</p> ), il est positionné statiquement dans la page. tu peux lui donner une position absolue (par rapport au premier parent lui-même positionné en absolu) ou une position relative à la position qu'il occupe statiquement.
 
ie  
 
<p style='position: relative; top: 10px; left: 10px'>....</p>
 
le paragraphe sera décalé de 10 pixels en bas et vers la droite par rapport à sa position initiale.
 
quand tu remplaces 'relative' par 'absolute', la position est absolue par rapport au premier élément parent dont la position est elle aussi absolue.
 
donc si tu fais :
 
<p style='position: absolute; top: 10px; left: 10px'>....</p>
 
ton paragraphe, même s'il est au milieu de la page, se retrouvera tout en haut du document, décalé de 10 pixels en bas et vers la droite.
 
maintenant, ce que tu peux faire, c'est positionner les éléments absolument par rapport à leur parent dans ton formulaire, n'est-ce pas ? il suffit donc de leur donner exactement les mêmes positions & tailles (style='width ... & co') et de positionner absolument ton formulaire.
 
et si tu ne sais pas comment positionner ton formulaire, tu le fais au chargement de la page, en récupérant par ex la position de l'élément situé juste avant la position où tu veux l'insérer.
 
et hop.

rufo

youdontcare a écrit a écrit :

ok, bah essaye déjà de trier avec une plus petite précision.
 
sinon, tu sais qu'on peut positionner les éléments html de façon absolue ou relative (par rapport au parent) ? :D ça pourrait t'éviter tout ça ...  




 
comment ça?... un exemple svp :)

antp


 
bhouuuu le moche screenshot en jpeg :p
PNG la prochaine fois mon gars ;)
 
(je sais c'est hors-sujet comme à chaque fois que je le dis, mais bon je milite pour les screenshots en PNG)

youdontcare ok, bah essaye déjà de trier avec une plus petite précision.
 
sinon, tu sais qu'on peut positionner les éléments html de façon absolue ou relative (par rapport au parent) ? :D ça pourrait t'éviter tout ça ...
rufo donc, je veux que mes composants soient dans le même ordre dans la liste que sur l'écran, de haut en bas et de gauche à droite...
rufo http://perso.libertysurf.fr/chris.jav/screenshot.jpg  

 

[edtdd]--Message édité par rufo--[/edtdd]

rufo

youdontcare a écrit a écrit :

tu pourrais donner un screenshot qui montre le problème ? je suis pas sûr de voir ...
mais si c'est bien ce que je pense :D, la méthode bourrin serait de trier avec une précision inférieure : ie si ton label a y = 42 et l'edit à côté à y = 40, tu divises tout ça par ... 4, ou par 8, pour obtenir des coordonnées entières qui seront identiques. et ton tri marchera.  




 
à ça c'est pas con :D je vais essayer de mettre en ligne un screenshot...

youdontcare

rufo a écrit a écrit :

merci, mais c'est pas exactement ça que je veux car il y a une troisième prpriété de tri : le type d'objet. Dans le cas d'un TLabel qui se trouve juste à la gauche d'un TEdit ou d'un tout autre objet, on place le TLabel avec l'objet suivant, même si son Top est supérieur au Top de l'autre objet... C'est là que réside la difficulté...


tu pourrais donner un screenshot qui montre le problème ? je suis pas sûr de voir ...
mais si c'est bien ce que je pense :D, la méthode bourrin serait de trier avec une précision inférieure : ie si ton label a y = 42 et l'edit à côté à y = 40, tu divises tout ça par ... 4, ou par 8, pour obtenir des coordonnées entières qui seront identiques. et ton tri marchera.

rufo

youdontcare a écrit a écrit :

si j'ai bien compris ça n'a rien à voir avec delphi ton truc, donc tu écartes pas mal de monde vu le titre de ton topic.
 
le problème c'est donc trier en fonction d'une propriété, et une fois ce tri effectué, faire un nouveau tri pour trier suivant une seconde propriété. donc si tu as disons des objets dont les propriétés ressemblent à  
 
1 4  
2 3
3 1
2 9
1 3
1 5
2 5
3 22
3 5
 
tu veux obtenir un tri suivant la première propriété puis la deuxième pour avoir :  
 
1 3
1 4
1 5
2 3
2 5
2 9
3 1
3 5
3 22
 
c'est bien ça ?
 
tout d'abord, tu utilises n'importe quel algo de tri (comme quicksort) pour trier suivant la première propriété. tu obtiens donc un truc trié suivant la première propriété, mais pas la deuxième :
 
1 4  
1 3
1 5
2 3
2 9
2 5
3 5
3 1
3 22
 
ensuite, il suffit de parcourir ton tableau et de trier par sous catégorie : tu regardes la première valeur, c'est 1, tu continues jusqu'à ce que tu tombes sur 1, tu isoles les valeurs suivantes :
 
1 4  
1 3
1 5
 
tu fais un quicksort sur ce sous ensemble pour obtenir
 
1 3
1 4
1 5
 
tu continues sur le tableau principal pour isoler la prochaine séquence :
 
2 3
2 9
2 5
 
tu tries le sous ensemble :
 
2 3
2 5
2 9
 
etc ...  
 
 




 
merci, mais c'est pas exactement ça que je veux car il y a une troisième prpriété de tri : le type d'objet. Dans le cas d'un TLabel qui se trouve juste à la gauche d'un TEdit ou d'un tout autre objet, on place le TLabel avec l'objet suivant, même si son Top est supérieur au Top de l'autre objet... C'est là que réside la difficulté...

youdontcare si j'ai bien compris ça n'a rien à voir avec delphi ton truc, donc tu écartes pas mal de monde vu le titre de ton topic.
 
le problème c'est donc trier en fonction d'une propriété, et une fois ce tri effectué, faire un nouveau tri pour trier suivant une seconde propriété. donc si tu as disons des objets dont les propriétés ressemblent à  
 
1 4  
2 3
3 1
2 9
1 3
1 5
2 5
3 22
3 5
 
tu veux obtenir un tri suivant la première propriété puis la deuxième pour avoir :  
 
1 3
1 4
1 5
2 3
2 5
2 9
3 1
3 5
3 22
 
c'est bien ça ?
 
tout d'abord, tu utilises n'importe quel algo de tri (comme quicksort) pour trier suivant la première propriété. tu obtiens donc un truc trié suivant la première propriété, mais pas la deuxième :
 
1 4  
1 3
1 5
2 3
2 9
2 5
3 5
3 1
3 22
 
ensuite, il suffit de parcourir ton tableau et de trier par sous catégorie : tu regardes la première valeur, c'est 1, tu continues jusqu'à ce que tu tombes sur 1, tu isoles les valeurs suivantes :
 
1 4  
1 3
1 5
 
tu fais un quicksort sur ce sous ensemble pour obtenir
 
1 3
1 4
1 5
 
tu continues sur le tableau principal pour isoler la prochaine séquence :
 
2 3
2 9
2 5
 
tu tries le sous ensemble :
 
2 3
2 5
2 9
 
etc ...

 

[edtdd]--Message édité par youdontcare--[/edtdd]

antp j'aimerais bien t'aider, mais je sais pas trop comment...
peut etre en comparent la différence top/left/width du label par rapport à l'edit...
genre si label.top - edit.top < edit.left - label.left et que edit.left - label.left est pas bcp plus grand que label.width tu peux déterminer que le label doit être mis avant l'edit...
rufo alors, personne ne peut m'aider? snif :(
rufo help! C'est vraiment important...
rufo up :)
rufo je précise que la finalité de ce tri, c'est de pouvoir générer du code html pour créer des formulaires de manière graphique (et surtout, WYSIWYG)...
rufo voilà, je suis à la recherche d'un algo de tri de composants insérés dynamiquement sur une fiche d'un prgm écrit en Delphi. Je voudrais les trier sur 2 critères : tout d'abord leur propriété top puis leur propriété left, le but étant à la fin, d'avoir une liste de ces composants dans l'ordre de leur position sur la fiche de haut en bat de gauche à droite. Mon pb est dû aux composants label placé avant un autre composant (genre TEdit ou TMemo) : en effet, bien que leur propriété left soit < à celle des autres composants situés après, il sera clasé dans la liste après eux à cause de sa propriété top qui est légèrement supérieure :(
 
    Je em suis donc orianté vers le centre de gravité mais, là encore, ça ne marche pas à tout les coups (mais ça marche mieux)...
 
    Alors, est-ce-que qq'un aurait déjà implémenté ce genre d'algo svp? Merci :)

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)