Listenfeld DragnDropFromControl

Started by OPLisp, February 17, 2010, 07:56:05 AM

Previous topic - Next topic

OPLisp

Hallo,

ich habe folgenden code:

(defun c:CreateElec_Form1_Listenfeld2_OnDragnDropFromControl (strProjectName strFormName strControlName uDropPoint / draglist suffix strsearch)

  (setq draglist (dcl_ListBox_GetSelectedItems CreateElec_Form1_Listenfeld1))
  (setq suffix (dcl_Control_GetText CreateElec_Form1_Textfeld1))
  (setq draglist (mapcar '(lambda (el) (strcat el suffix)) draglist))

  (foreach strsearch draglist
    (if (= (dcl_ListBox_FindStringExact CreateElec_Form1_Listenfeld2 strsearch) -1)
      (progn
        (dcl_ListBox_AddString CreateElec_Form1_Listenfeld2 strsearch)
;         (dcl_ListBox_InsertString CreateElec_Form1_Listenfeld2 intItemIndex strsearch)

      )
    )
  )
)


Ziel ist:

Elemente von Listefeld1 (DragnDropBegin Event ist aktiviert) nach Listenfeld2 (DragnDropFromControl Event ist aktiviert) zu ziehen.
Dabei wird ein suffix angehängt und es werden keine doppelten Elemente zugelassen.
Es funktioniert alles und mit dcl_ListBox_AddString werden die Elemente am Ende im Listenfeld2 eingefügt.
Ich möchte aber eine Einfügung an der Stelle tätigen, auf die der Curser zeigt wenn die linke Maustaste
losgelassen wird. Dazu würde ich dcl_ListBox_InsertString nützen. Nur, wo kriege ich intItemIndex her ?
Das Ereignis CreateElec_Form1_Listenfeld2_OnDragnDropFromControl übergibt nur die Liste uDropPoint
und dcl_ListBox_GetFocusIndex bringt auch nichts.
Natürlich wenn ich DragnDropFromControl bei den Ereignissen für Listenfeld2 deaktiviere, kann ich mit der Maus bestimmen wo die Elemente hinkommen aber dann kann ich keinen Code mehr schreiben.
Vielleicht kann mir jemand weiterhelfen. Vielen Dank





Fred Tomke

Hallo.

hallo und herzlich willkommen in diesem Forum.
Zu allererst mal was Administratorisches. Bitte ändere mal Deine Sprachendatei.

Zu Deiner Frage:
All you need ist ein HitPointTest, wie es dies im ListView gibt.
Mit HitPointTest bekommt man die Zelle im ListView zurück, auf der die linke Maustaste losgelassen wird.

Leider kann ich grad keines finden. Meine Unsicherheit könnte jetzt daran liegen, dass ich selbst nur in Ausnahmefällen ein einfaches Listenfeld nehme: ich bevorzuge nämlich das ListView. ;)

Deshalb muss ich erst einmal nachfragen. Ich melde mich, sobald ich was weiß.

VG, Fred
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]

Fred Tomke

Hallo, ich habe die Antwort erhalten, dass es wohl das beste wäre, würde man die HitPointTest Methode auch im Listenfeld anwenden können.

Ich habs gleichzeitig auch im Feature request eingetragen.

VG, Fred
Fred Tomke
Dipl.-Ing. (FH) Landespflege

[ landscaper - landscape developer - digital landscape and urban design]