Seite 1 von 1
Hybridmodus Cut&Paste [ERLEDIGT]
Verfasst: Mi, 19. Feb 2014 13:45
von Manfred
Hi,
ist es eigentlich möglich bei einer Hybridanwendung, im Textmodus in die GET Felder etwas einzufügen, was im Zwischenspeicher ist? Also wenn ich z.B. mit auf einer Webseite etwas kopiere um es dann zu übernehmen. So direkt scheint es ja nicht zu klappen, kann man da was programmieren?
Re: Hybridmodus Cut&Paste
Verfasst: Mi, 19. Feb 2014 13:55
von brandelh
Grundsätzlich kann man in ein GET Feld auch mit normalem Cut&Paste reinschreiben, aber leider ist das nicht zuverlässig.
Was immer geht ist z.B. mit XbpClipBoard() einen Text aus der Zwischenablage abzuholen und in das aktuelle oder ein beliebiges GET Objekt einzufügen (siehe get() :buffer etc.)
Re: Hybridmodus Cut&Paste
Verfasst: Mi, 19. Feb 2014 13:58
von Manfred
bedeutet das nun, das ich die Maus aktivieren, eine Routine schreiben muß, die die rechte Maustaste im Feld abfragt und dann entsprechend reagieren?
Re: Hybridmodus Cut&Paste
Verfasst: Mi, 19. Feb 2014 14:03
von Tom
Oder beispielsweise eine Funktionstaste belegen. An das Clipboard-Objekt kommst Du ja im Hybridmodus.
Re: Hybridmodus Cut&Paste
Verfasst: Mi, 19. Feb 2014 14:05
von Manfred
ah, das wäre eine Möglichkeit. Muß ich mal schauen wie ich das umsetzen könnte.
Re: Hybridmodus Cut&Paste
Verfasst: Mi, 19. Feb 2014 14:42
von brandelh
Unter GUI hatte ich eine Eingabehilfe für Datenübernahme vom Großrechner.
In der Großrechner emu konnte man mit einem Hotkey oder Button den kompletten Bildschirminhalt als Text in die Zwischenablage stellen.
Mit einem PushButton in meiner Anwendung übernahm ich dann alle gewünschten Infos in die SLE.
Bei dir wäre ein Hotkey (set key ...) genauso möglich wie die Buttons der Maus abzufragen, allerdings dürfte der Anwender z.B. schneller F2 drücken als die Maus zu suchen.
Hier ein Beispiel aus meiner Rechenroutine und der Hilfe ... ohne Prüfung, also können einige Fehler drinn sein
:
Code: Alles auswählen
* am Anfang des Programmes ...
set key K_F9 to DatenPaste
...
*-----------------------------------------------------------------------------
procedure DatenPaste(proz,zei,_var) // aus dem GET System kommen nur 3 Parameter !
// da keine Bildschirmänderungen nötig sind auch nichst sichern ...
local cTxt
local oClipBoard := XbpClipBoard():new():create() // Objekt erzeugen
// Clipboard öffnen und feststellen, welche Datenformate
// darin abgelegt sind
oClipBoard:open()
cTxt := oClipBoard:getBuffer( XBPCLPBRD_TEXT )
// oClipBoard:clear() // Zwischenablage löschen ???
oClipBoard:close()
if ! empty(cTxt)
keyboard alltrim(cTxt)
endif
return
mit keyboard wird die Zwischenablage direkt an der Cursorposition als Texteingabe ausgeführt.
Falls du eine strengere Eingabe möchtest, kannst du auch das aktuelle Get Objekt abfragen und den Buffer setzen (auf Länge achten).
Re: Hybridmodus Cut&Paste
Verfasst: Mi, 19. Feb 2014 17:20
von Manfred
ich verneige und bedanke mich vor und bei euch. Das hat mir weiter geholfen.
Re: Hybridmodus Cut&Paste [ERLEDIGT]
Verfasst: Mo, 24. Feb 2014 5:58
von AUGE_OHR
hi,
ich gehe mal davon aus das SETMOUSE( .T. ) gesetzt wurde und damit c:\ALASKA\XPPW32\Source\SYS\GetSysX.prg aktive ist.
Code: Alles auswählen
PROCEDURE GetHandleEvent( oGet, nEvent, mp1, mp2, obj )
...
// hinzufügen für copy / paste
// Copy to Clipboard
CASE nEvent == xbeK_CTRL_C
oClipBoard := XbpClipBoard():new():create()
oClipBoard:open()
cText := oGet:buffer
oClipBoard:setBuffer(cText, XBPCLPBRD_TEXT)
oClipBoard:close()
oClipBoard:destroy()
// Copy from Clipboard
CASE nEvent == xbeK_CTRL_V
oClipBoard := XbpClipBoard() :new() :create()
oClipBoard:open()
aFormats := OClipBoard:queryFormats()
IF ASCAN( aFormats, XBPCLPBRD_TEXT ) > 0
cText := oClipBoard:getBuffer( XBPCLPBRD_TEXT )
n := LEN( cText )
FOR i := 1 TO n
cChar := cText[ i ]
/* Transfer character to edit buffer */
IF SET( _SET_INSERT )
oGet:insert( cChar )
ELSE
oGet:overstrike( cChar )
ENDIF
/* No room left to type to the right of the cursor */
IF oGet:typeOut
IF SET( _SET_BELL )
QQOUT( CHR( 7 ) )
ENDIF
IF !SET( _SET_CONFIRM )
oGet:exitState := GE_ENTER
ENDIF
EXIT
ENDIF
NEXT i
ENDIF
oClipBoard:close()
oClipBoard:destroy()
also die selben Tasten wie gewohnt ...
Re: Hybridmodus Cut&Paste [ERLEDIGT]
Verfasst: So, 19. Nov 2017 11:23
von saul
Hallo,
Code: Alles auswählen
/* Transfer character to edit buffer */
IF SET( _SET_INSERT )
oGet:insert( cChar )
ELSE
oGet:overstrike( cChar )
ENDIF
oGet:insert wird wahrscheinlich bei XBP verwendet.
Wenn ich aber
habe, wie bekomme ich dann z. B. die einzelnen Buchstaben in die Variable cZeile2?
mfg
Wolfgang