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

  FORUM HardWare.fr
  Programmation

  [algo] tri de composants sur une fiche Delphi

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[algo] tri de composants sur une fiche Delphi

n°85598
rufo
Pas me confondre avec Lycos!
Posté le 03-01-2002 à 09:51:59  profilanswer
 

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 :)

mood
Publicité
Posté le 03-01-2002 à 09:51:59  profilanswer
 

n°85599
rufo
Pas me confondre avec Lycos!
Posté le 03-01-2002 à 09:53:32  profilanswer
 

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)...

n°85700
rufo
Pas me confondre avec Lycos!
Posté le 03-01-2002 à 14:07:03  profilanswer
 

up :)

n°85969
rufo
Pas me confondre avec Lycos!
Posté le 04-01-2002 à 09:45:48  profilanswer
 

help! C'est vraiment important...

n°86334
rufo
Pas me confondre avec Lycos!
Posté le 05-01-2002 à 09:58:50  profilanswer
 

alors, personne ne peut m'aider? snif :(

n°86348
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-01-2002 à 11:45:08  profilanswer
 

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...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°86381
youdontcar​e
Posté le 05-01-2002 à 13:29:07  profilanswer
 

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]

n°86507
rufo
Pas me confondre avec Lycos!
Posté le 06-01-2002 à 10:14:34  profilanswer
 

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é...

n°86508
youdontcar​e
Posté le 06-01-2002 à 10:18:08  profilanswer
 

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.

n°86509
rufo
Pas me confondre avec Lycos!
Posté le 06-01-2002 à 10:21:58  profilanswer
 

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...

mood
Publicité
Posté le 06-01-2002 à 10:21:58  profilanswer
 

n°86510
rufo
Pas me confondre avec Lycos!
Posté le 06-01-2002 à 10:26:51  profilanswer
 

http://perso.libertysurf.fr/chris.jav/screenshot.jpg

 

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

n°86511
rufo
Pas me confondre avec Lycos!
Posté le 06-01-2002 à 10:32:08  profilanswer
 

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...

n°86512
youdontcar​e
Posté le 06-01-2002 à 10:34:32  profilanswer
 

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 ...

n°86539
antp
Super Administrateur
Champion des excuses bidons
Posté le 06-01-2002 à 13:35:53  profilanswer
 


 
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)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°86554
rufo
Pas me confondre avec Lycos!
Posté le 06-01-2002 à 14:52:42  profilanswer
 

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 :)

n°86560
youdontcar​e
Posté le 06-01-2002 à 15:39:21  profilanswer
 

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.

n°86591
rufo
Pas me confondre avec Lycos!
Posté le 06-01-2002 à 21:37:21  profilanswer
 

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. :)

n°87187
rufo
Pas me confondre avec Lycos!
Posté le 08-01-2002 à 21:45:37  profilanswer
 

je suis toujours preneur si qq'un a une suggestion... :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [algo] tri de composants sur une fiche Delphi

 

Sujets relatifs
[Delphi] Changer le curseur de la souris, mais sur tout l'écran ![Delphi/SQL] Inclure le contenu d'un Tedit dans une requete SQL ...
[Delphi]c'est quoi la fonction pour completer une chaine?[Delphi] petage de plomb avec un Pchar
[Delphi] RichEdit, racourcit clavier et Menu ![Delphi] couleur...
[delphi] pb avec les char et stringDivX Organizer en Delphi --> Beta Test SVP
avis de réception de courriel (delphi)modifier l'extension d'un fichier avec delphi
Plus de sujets relatifs à : [algo] tri de composants sur une fiche Delphi


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR