MemoEdit() und Zwischenablage [Erledigt]
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
MemoEdit() und Zwischenablage [Erledigt]
Hallo,
noch einmal eine Frage an die, die sich mit sowas noch auskennen: Kann ich in einem MemoEdit() irgendwie Text aus der Zwischenablage einfügen? Ich finde zwar einen Weg, wie ich STRG+V entsprechend per UDF umbiegen kann. Ich lese auch den Inhalt der Zwischenablage aus. Aber wie bekomme ich den jetzt in den Text im MemoEdit() an der Crursor-Position eingefügt?
Jan
noch einmal eine Frage an die, die sich mit sowas noch auskennen: Kann ich in einem MemoEdit() irgendwie Text aus der Zwischenablage einfügen? Ich finde zwar einen Weg, wie ich STRG+V entsprechend per UDF umbiegen kann. Ich lese auch den Inhalt der Zwischenablage aus. Aber wie bekomme ich den jetzt in den Text im MemoEdit() an der Crursor-Position eingefügt?
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: MemoEdit() und Zwischenablage
Über die UserFunc, die ja die aktuelle Zeile und Spalte (des Textpuffers) übergibt. In der reagierst Du eben auf Strg-V und klemmst den Inhalt des Clipboards irgendwie in den Text, notfalls dadurch, dass Du diesen sicherst, einliest, überarbeitest, das MemoEdit() beendest und neu aufrufst. Warum arbeitest Du überhaupt mit dieser veralteten Grütze?
Herzlich,
Tom
Tom
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: MemoEdit() und Zwischenablage
Hallo Jan !
FUNCTION UserFunc( nMode, nRow, nCol )
Damit sollte doch was zu machen sein mit TextvorCursor + TextausZwischenablage + TextnachCursor.
Tom war schneller ...
In der UDF bekommst du als zweiten und dritten Parameter die aktuelle Position des Cursors:Aber wie bekomme ich den jetzt in den Text im MemoEdit() an der Crursor-Position eingefügt?
FUNCTION UserFunc( nMode, nRow, nCol )
Damit sollte doch was zu machen sein mit TextvorCursor + TextausZwischenablage + TextnachCursor.
Tom war schneller ...
--
Hans-Peter
Hans-Peter
- BJelinek
- Rekursionen-Architekt
- Beiträge: 218
- Registriert: Sa, 02. Jun 2012 20:57
- Wohnort: 73257 Köngen
- Hat sich bedankt: 9 Mal
- Danksagung erhalten: 3 Mal
Re: MemoEdit() und Zwischenablage
Hallo Jan
oder einfach
keyboard cTextausZwischenablage
oder einfach
keyboard cTextausZwischenablage
Grüße
Bernd
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Bernd
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: MemoEdit() und Zwischenablage
Hallo Ihr beiden,
mir ist schon klar, wie ich die Position im MemoEdit() raus bekomme. Das Problem liegt darin, wie ich die nutzen kann um z. B. mit einem SubStr(TextDavor) + Inhalt Zwischenablage + Substr(Text danach) den Gesamtstring zusammen zu stellen. Denn an den String komme ich ja nicht ran. Wenn überhaupt am ehesten auf dem Weg von Tom - STRG+W auslösen, Zwischenablage einfügen, Text wieder ins Memoedit einlesen, den Cursor an diese Position setzen. Abgesehen davon, daß das vermutlich auf eine mordsmäßig verklausulierte Vorgehensweise hinauslaufen wird - dann hat der Benutzer keinerlei Möglichkeiten mehr, das Ganze mit ESC abzubrechen oder Änderungen zurück zu nehmen. OK, klar, geht doch. Wenn ich mir das vorher in eine andere Variable wegspeichere als Sicherung. Wie gesagt - mördermäßig verklausuliert.
Wobei es natürlich auch ein irrer Aufwand ist, alleine aus der Position im Memoedit die Position im Text auszurechnen, die ich dann mit SubStr() auswerten könnte.
Tom: Warum? Weil der Kunde der Meinung ist, das 1) man eine OEM-Oberfläche viel schneller und eingängiger bedienen kann, und er 2) der Meinung ist, das GUI-Oberflächen zu programmieren viel länger dauert als eine OEM zu schreiben, und 3) er selber auch manchmal Hand anlegt und er noch ganz wesentlich weniger als ich mit Klassen umgehen kann - ich tu mich ja nur schwer im selber schreiben, aber vorhandene nutzen klappt. Bei ihm aber nicht. Das in solch einem Fall eine Klasse sehr viel eleganter und einfacher einzurichten ist als solche Kunststücke an einem antiken Memoedit anzuschrauben ist dabei noch eine ganz andere Geschichte.
Jan
mir ist schon klar, wie ich die Position im MemoEdit() raus bekomme. Das Problem liegt darin, wie ich die nutzen kann um z. B. mit einem SubStr(TextDavor) + Inhalt Zwischenablage + Substr(Text danach) den Gesamtstring zusammen zu stellen. Denn an den String komme ich ja nicht ran. Wenn überhaupt am ehesten auf dem Weg von Tom - STRG+W auslösen, Zwischenablage einfügen, Text wieder ins Memoedit einlesen, den Cursor an diese Position setzen. Abgesehen davon, daß das vermutlich auf eine mordsmäßig verklausulierte Vorgehensweise hinauslaufen wird - dann hat der Benutzer keinerlei Möglichkeiten mehr, das Ganze mit ESC abzubrechen oder Änderungen zurück zu nehmen. OK, klar, geht doch. Wenn ich mir das vorher in eine andere Variable wegspeichere als Sicherung. Wie gesagt - mördermäßig verklausuliert.
Wobei es natürlich auch ein irrer Aufwand ist, alleine aus der Position im Memoedit die Position im Text auszurechnen, die ich dann mit SubStr() auswerten könnte.
Tom: Warum? Weil der Kunde der Meinung ist, das 1) man eine OEM-Oberfläche viel schneller und eingängiger bedienen kann, und er 2) der Meinung ist, das GUI-Oberflächen zu programmieren viel länger dauert als eine OEM zu schreiben, und 3) er selber auch manchmal Hand anlegt und er noch ganz wesentlich weniger als ich mit Klassen umgehen kann - ich tu mich ja nur schwer im selber schreiben, aber vorhandene nutzen klappt. Bei ihm aber nicht. Das in solch einem Fall eine Klasse sehr viel eleganter und einfacher einzurichten ist als solche Kunststücke an einem antiken Memoedit anzuschrauben ist dabei noch eine ganz andere Geschichte.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: MemoEdit() und Zwischenablage
In der Hilfe steht, dass jede Taste die Memoedit() nicht automatisch handhabt, die USER function aufruft.
In der Hilfe steht zu dem Befehl als Beispiel eine die auf K_F8 etc. reagiert.
Hier habe ich ein Beispiel meiner Hilfefunktion, die z.B. das § Zeichen als String übergibt, statt es als Steuerzeichen zu ignorieren
"UND wie finde ich den Text vor und nach dem Einfügen ..."
das habe ich zwar noch nicht gemacht, aber die Funktion hier sollte dafür gedacht sein und ein Beispiel wird dort auch angegeben (Version 2.00):
MlCtoPos()
In der Hilfe steht zu dem Befehl als Beispiel eine die auf K_F8 etc. reagiert.
Der Keyboard Befehl unterscheidet je nach Einfügemodus, wenn du immer sicher einfügen willst, musst du das selbst machen.MemoEdit() calls the user function (or evaluates the code block) when a key is pressed which MemoEdit() does not automatically process.
Such configurable keys can be processed in the user function and the RETURN value of the user function is used to notify MemoEdit() of how to react to the key.
Hier habe ich ein Beispiel meiner Hilfefunktion, die z.B. das § Zeichen als String übergibt, statt es als Steuerzeichen zu ignorieren
Code: Alles auswählen
*----------------------------------------------------------------------------
function memofunk(modus, zeile, spalte) && fragt bei ESC oder F3, && ob gespeichert werden soll ?
local _t,wahl,ins_mode,aendern,rueck
ins_mode=.f.
aendern =.t.
rueck = 0
DO CASE
CASE modus = 0 .or. modus=3
return 0
OTHERWISE
_t = LASTKEY()
IF modus = 2
aendern = .T.
ENDIF
DO CASE
CASE _T = 21 // Paragraph wurde gedrückt !
rueck = 33 // und soll als Paragraph in Text eingefügt werden.
CASE _t = 301 .OR. _t = K_ESC .or. _t= K_F3 && Alt-X / ESC..exit
IF .NOT. aendern && keine Änderung, einfach beenden
rueck = K_ESC
else
wahl=ask(17,"Text <S>peichern, "+;
"<Ä>ndern oder <Z>urück ohne"+;
" Änderung?","<","TE_EDFUNC","ESC")
DO CASE
CASE wahl = "Z" && Abbrechen
rueck = K_ESC
CASE wahl = "Ä" && Eingabe erneut aufrufen
rueck = 32
CASE wahl = "S" && Sichern und beenden
rueck = K_CTRL_W
ENDCASE
ENDIF
ENDCASE
ENDCASE
RETURN (rueck)
das habe ich zwar noch nicht gemacht, aber die Funktion hier sollte dafür gedacht sein und ein Beispiel wird dort auch angegeben (Version 2.00):
MlCtoPos()
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: MemoEdit() und Zwischenablage
Hallo Bernd,
Du bist mein Held des Tages! genau so klappt es. Ich muß nur den Keyboard-Buffer hoch setzen, damit nicht die standardmäßig letzten 10 Zeichen der Zwischenablage übernommen werden.
Jan
Du bist mein Held des Tages! genau so klappt es. Ich muß nur den Keyboard-Buffer hoch setzen, damit nicht die standardmäßig letzten 10 Zeichen der Zwischenablage übernommen werden.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: MemoEdit() und Zwischenablage
Und allen Vieren danke für Eure Überlegungen.
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Werner_Bayern
- Der Entwickler von "Deep Thought"
- Beiträge: 2126
- Registriert: Sa, 30. Jan 2010 22:58
- Wohnort: Niederbayern
- Hat sich bedankt: 30 Mal
- Danksagung erhalten: 75 Mal
Re: MemoEdit() und Zwischenablage
Was gibt's besseres, das in Xbase++ integriert (komm jetzt nicht mit txtcontrol ) ist?
es grüßt
Werner
<when the music is over, turn off the lights!>
Werner
<when the music is over, turn off the lights!>