Détection colonne listbox recevant un déposer

J’ai eu beau chercher sur le forum, je n’ai pas trouvé ; je ne suis d’ailleurs pas très doué pour la recherche sur le forum…

Tout est dans le titre ou presque : comment détecter la colonne recevant un déposer ?

Les connes sont <code 4D>
LISTBOX INSERT COLUMN FORMULA(*;$listbox_t;$Column_l;“DL_”+“C_”+$label_t;“This.”+$label_t;Is text;“DL_”+“H_”+$label_t;$nil_p;“DL_”+“F_”+$label_t;$nil_p)

</code 4D>créées par programmation avec une formule du type

Lorsque je récupère la description de la listbox par LISTBOX GET OBJECTS et que je mets des points d’arrêt appropriés, je ne détecte le déposer que sur la listbox, pas sur les colonnes ni les en-têtes.
Faut-il lire les coordonnées et faire des calculs compliqués ?

Je crois que le sujet a déjà été abordé, mais comme je l’ai dit, je n’ai pu le retrouver…
Merci d’avance pour votre aide.

Les connes sont
Le confinement mène à tous les excès.

J’ai mis ce code il y quelques jours sur le forum:

<code 4D>
C_POINTER($P_Subform_container)
$P_Subform_container:=OBJECT Get pointer(Object subform container) // container doit être un objet
If ($P_Subform_container->#Null)
// #20200313-1
// Ici c’est juste pour savoir comment on a droppé
C_LONGINT($L_Ligne;$L_Colonne)
$L_Ligne:=Drop position($L_Colonne)

		C_OBJECT($O_Drop_Callback)
		$O_Drop_Callback:=New object
		$O_Drop_Callback.dropline:=$L_Ligne
		$O_Drop_Callback.dropcol:=$L_Colonne
		
		$P_Subform_container->dropcallback:=$O_Drop_Callback
		  /// fin nature du drop
	End if 

</code 4D>

grâce à mes tags j’ai retrouvé le post :wink:

https://forums.4d.com/Post/FR/34445073/1/34445074#34445074https://forums.4d.com/Post/FR/34445073/1/34445074#34445074>

Si seule la listbox a une méthode objet, c’est normal, il me semble, non ?
Comme je n’irais pas ajouter de méthodes objet aux colonnes pour ça (j’aime guère…), j’utiliserais les “calculs compliqués” vu que je me les suis déjà tapés :
https://forums.4d.com/4DBB_Main/x_User/4467/files/34620756.zip
Ça en fait des lignes (je dis ça pour Éric) mais ça va plus vite que l’utilisateur, même rendu nerveux par le confinement. Par contre je n’ai pas encore utilisé ce code dans un glisser/déposer, si tu t’en sers je veux bien du retour.

Ha oui, vachement plus simple… :oops::oops::oops:

https://www.youtube.com/watch?v=7YyBtMxZgQsje le fait avant que tu le fasses> :mrgreen:

Merci pour vos réponses.
RTFM Drop position devrait faire l’affaire pour un glisser déposer de listbox à listbox d’un même formulaire…
Je regarde après déconfinement limité autorisé et dîner.
Vivement que nous soyons tous déconfits !

Hum, je ne sais pas si tu vas réussir à comprendre avec le cerveau confiné, c’est d’une rare complexité !

Je fais un glisser-déposer d’une listbox sur une autre.
<code 4D>
: (FORM Event.code=On Begin Drag Over)
Form.current.attributeDragged:=Form.currentAttribute

: (FORM Event.code=On Drop)
Case of
: (FORM Event.objectName=“displayList”) //Listbox destination
$row_l:=Drop position($col_l)

</code 4D>

Form.currentAttribute est l’élément courant de la LB source
Drop position est la solution simple donnant ligne et colonne* de destination

  • Et pas “conne”, mon correcteur orthographique a dû choper le connardovirus :oops:

Bonjour,

je pense qu’il y plusieurs façons de faire en fonction peut-être aussi de ce qui est “droppé”

Moi j’utilise LISTBOX GET CELL POSITION

<code 4D>
: (FORM Event.code=On Drop)

	$objectName:=OBJECT Get name(Object current)
	GET MOUSE($mouseX;$mouseY;$mouseZ)
	LISTBOX GET CELL POSITION(*;$objectName;$mouseX;$mouseY;$col;$row)

</code 4D>

Bonne journée

Roland

Je ne suis pas très fana de cette commande, elle donne l’emplacement du dernier clic : si la sélection ne s’est pas faite pas clic, elle ne donne pas les “bons” résultats. C’est différent en glisser déposer ?

Bonjour Arnaud…

la syntaxe de cette commande a évolué… (depuis la v16R5)

LISTBOX GET CELL POSITION ( {* ;} object {; X ; Y }; column ; row {; colVar} )

Donc c’est pas forcément le dernier clic. il suffit de passer les coordonnées XY (optionnelles)

Cordialement

Roland Lannuzel

Merci ! Je gagne haut la main le 1er prix du concours “je n’actualise pas mes connaissances”, là :oops:

Arnaud

Mon but n’était pas de te mettre en défaut, désolé si je me suis mal exprimé.
Il est évident qu’on ne peut pas tout suivre, il y a forcément des choses qui échappent même aux plus assidus !

Celle-là ne m’a pas échappée pour la simple raison que j’ai été impliqué dans le changement (l’amélioration) de la syntaxe et des possibilités de la commande.

Si mes souvenirs sont bon, on a fait ça en même temps que la possibilité de modifier le tips associé à une listbox (qui est global à la listbox), mais qui peut être dépendant de la colonne survolée.

wouala !

Roland Lannuzel

: Roland LANNUZEL

Mon but n’était pas de te mettre en défaut, désolé si je me suis mal
exprimé.
Je ne l’avais pas du tout pris comme ça : depuis le temps que je suis marié à mes défauts, je me suis arrangé avec :lol:
Ça sert aussi à nous éduquer, le forum :wink: