Ja napisałem na razie prosty edytor tekstu (bez zaznaczania, wymaga zmiennych 'poz' i 'txt'):
var t1, t2;
t1 = string_copy(txt,1,poz);
t2 = string_delete(txt,1,poz);
//Kursor
if alarm[0] <= 0 {
if keyboard_check(vk_left) {
poz = max(0,poz-1);
}
else
if keyboard_check(vk_right) {
poz = min(string_length(txt),poz+1);
}
else
if keyboard_check(vk_backspace) { //Backspace
txt = string_copy(t1,1,string_length(t1)-1) + t2;
poz = max(0,poz-1);
}
else
if keyboard_check(vk_delete) { //Delete
txt = t1 + string_delete(t2,1,1);
poz = min(string_length(txt),poz);
}
alarm[0] = 1;
}
else {
alarm[0] -= 1;
}
//Pisanie
if keyboard_string != '' {
txt = t1 + keyboard_string + t2;
poz = min(string_length(txt),poz+1);
keyboard_string = '';
}
if keyboard_check(vk_control) {
//COPY!
if keyboard_check_pressed(ord('C')) {
clipboard_set_text(txt);
}
//PASTE!
if keyboard_check_pressed(ord('V')) {
txt = t1+clipboard_get_text()+t2;;
}
}
//Tagi
if keyboard_check(vk_alt) {
//Tag: b
if keyboard_check_pressed(ord('B')) {
if bold = false {
txt = t1+'<b>'+t2;
bold = true;
exit;
}
else {
txt = t1+'</b>'+t2;
bold = false;
exit;
}
}
}
txt_edit = t1+'_'+t2;
//Rysowanie
draw_set_color(c_black);
draw_text(x,y,'Tekst edytowany: '+txt_edit);
draw_text(x,y+16,'Tekst: '+txt);
ALT+B - Dodaje otwarty/zamknięty tag 'b'.
CTRL+V - Wkleja tekst.
CTRL+C - Kopiuje tekst.