Drag&Drop zwischen zwei cl_gui_textedit-Objekten

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Drag&Drop zwischen zwei cl_gui_textedit-Objekten

Beitrag von tlang (ForumUser / 2 / 0 / 0 ) »
Hallo,

Ich versuche schon seit Tagen erfolglos das folgende Problem zu lösen:

In meinem Dynpro befinden sich 2 Texteditoren. Zwischen diesen beiden Editoren kann man mittels drag&drop Texte austauschen. Nun möchte ich, daß der Event wenn man den Text in dem rechten Editor 'fallen' lässt abgefangen und behandelt wird. Als Programmiergrundlage habe ich das Beispielgprogramm RSDEMO_DRAG_DROP_EDIT_TREE benutzt.
Mein modifiziertes Coding sieht wie folgt aus:

---------------------------------------------------------------------*
CLASS dragdrop_receiver DEFINITION
---------------------------------------------------------------------*
........ *
---------------------------------------------------------------------*
class lcl_dragdrop_receiver definition.
public section.
methods:
drag for event on_drag of cl_gui_textedit.
drop for event on_drop of cl_gui_textedit.
endclass.

data editor1 type ref to cl_gui_textedit.
data editor2 type ref to cl_gui_textedit.

data container1 type ref to cl_gui_custom_container.
data container2 type ref to cl_gui_custom_container.

data behaviour_left type ref to cl_dragdrop.
data behaviour_right type ref to cl_dragdrop.

call screen 100.
*&---------------------------------------------------------------------

*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------

* text
*----------------------------------------------------------------------

module status_0100 output.
set pf-status 'START'.

endmodule. " STATUS_0100 OUTPUT
*&---------------------------------------------------------------------

*& Module test OUTPUT
*&---------------------------------------------------------------------

* text
*----------------------------------------------------------------------
module test output.

create object container1
exporting
container_name = 'CONTAINER1'.

create object editor1
exporting
parent = container1.

create object container2
exporting
container_name = 'CONTAINER2'.

create object editor2
exporting
parent = container2.

break-point.

data effect type i.
* Definition of drag drop behaviour

create object behaviour_left.

effect = cl_dragdrop=>move + cl_dragdrop=>copy.
call method behaviour_left->add
exporting
flavor = 'Drop'
dragsrc = 'X'
droptarget = ' '
effect = effect.

call method editor1->set_dragdrop
exporting dragdrop = behaviour_left.

create object behaviour_right.
effect = cl_dragdrop=>move + cl_dragdrop=>copy.
call method behaviour_right->add
exporting
flavor = 'Drop'
dragsrc = ' '
droptarget = 'X'
effect = effect.

call method editor2->set_dragdrop
exporting dragdrop = behaviour_right.

* registration of drag and drop events
data dragdrop type ref to lcl_dragdrop_receiver.
create object dragdrop.
set handler dragdrop->drag for editor1.
set handler dragdrop->drop for editor2.

endmodule. " test OUTPUT


*---------------------------------------------------------------------*
* CLASS DRAGDROP_RECEIVER IMPLEMENTATION
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
class lcl_dragdrop_receiver implementation.

method drop.
break-point.
endmethod.

method drag.
break-point.
endmethod.

endclass.


Es wäre schön, wenn jemand in diesem Forum eine Lösung für dieses Problem hätte. Vielen Dank für eure Hilfe im Voraus.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Drag&Drop

Beitrag von gwildor (ForumUser / 26 / 0 / 0 ) »
Hallo tlang,

in deinem Code hast du geschrieben:

Code: Alles auswählen.

...
create object behaviour_left. 

effect = cl_dragdrop=>move + cl_dragdrop=>copy. 
call method behaviour_left->add 
exporting 
flavor = 'Drop' 
dragsrc = 'X' 
droptarget = ' '
effect = effect. 

call method editor1->set_dragdrop 
exporting dragdrop = behaviour_left. 

create object behaviour_right. 
effect = cl_dragdrop=>move + cl_dragdrop=>copy. 
call method behaviour_right->add 
exporting 
flavor = 'Drop' 
dragsrc = ' '
droptarget = 'X'
effect = effect.
... 
wenn ich mich recht entsinne musst du sowohl für die linke, als auch für die rechte Seite bei dragsrc und bei droptarget ein 'X' setzen. Sonst definierst du explizit die eine Seite als Quelle und die andere als Ziel.

Ich hoffe dies klärt dein Problem.

Gwildor

Beitrag von gwildor (ForumUser / 26 / 0 / 0 ) »
Hi tlang,

sorry, ich glaube ich hatte mich etwas versehen. Dies war ja gar nicht dein Problem :oops:
Aber ich habe trotzdem noch nen Tip für dich:

im PAI-Modul musst du noch folgendes einfügen:

Code: Alles auswählen.

call method cl_gui_cfw=>dispatch.
Dies ist notwendig, damit der Server mit dem FFrontend auch abgeglichen wird!!!

Hoffe dies hilft dir weiter!![/code]

Beitrag von Gast ( / / 0 / 3 ) »
Hallo Gwildor,

leider löst das nicht mein Problem, da durch das 'Droppen' des Texts nicht PAI ausgelöst wird. Trotzdem Danke für deine Hilfe.

Viele Grüße,

Thomas

Seite 1 von 1

Vergleichbare Themen

2
Antw.
2286
Views
TextEdit Verwaltung
von Miss » 17.04.2014 14:55 • Verfasst in ABAP® für Anfänger
3
Antw.
4972
Views
Dynpro Textedit-Control
von gazzle » 19.01.2010 12:00 • Verfasst in Dialogprogrammierung
0
Antw.
3131
Views
Toolbar im Textedit-Control?
von ewx » 30.08.2007 15:42 • Verfasst in ABAP Objects®
1
Antw.
3428
Views
TextEdit Control nicht eingabebereit ?
von jesse001 » 13.11.2019 17:46 • Verfasst in Dialogprogrammierung
6
Antw.
4706
Views
enumerieren von Objekten
von a-dead-trousers » 07.02.2011 13:56 • Verfasst in ABAP Objects®

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

LSMW-Problem
vor einer Woche von DeathAndPain gelöst 6 / 2981
SFP (Adobe Forms) QR-Code wird nicht angezeigt
vor einer Woche von Sebastian82 gelöst 4 / 1619

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.