Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / позиция курсора / 14 сообщений из 14, страница 1 из 1
26.07.2011, 09:47
    #37366842
undoredo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
Приветствую!

Подскажите, как заставить курсор следовать за изменением текста в поле во время undo/redo? (ms access)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
Private Sub Form_Load()

Me.Text0.SetFocus
Me.Text0.SelStart =  0 

ReDim arrText( 0 )
arrText( 0 ) = Me.Text0
Pointer =  0 

End Sub


Private Sub Text0_Change()

If Undoing Then Exit Sub

Pointer = Pointer +  1 

If Pointer > UBound(arrText) Then
  ReDim Preserve arrText(Pointer)
  
End If

arrText(Pointer) = Me.Text0.Text


End Sub



Private Sub Undo_Click()

If Pointer =  0  Then
  Beep

Else

  Pointer = Pointer -  1 
  Undoing = True
  Me.Text0 = arrText(Pointer)
  Undoing = False
     
End If


End Sub


Private Sub Redo_Click()

If Pointer = UBound(arrText) Then
  Beep

Else

  Pointer = Pointer +  1 
  Undoing = True
  Me.Text0 = arrText(Pointer)
  Undoing = False
  
End If

End Sub


Спасибо всем!
...
Рейтинг: 0 / 0
26.07.2011, 09:53
    #37366849
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
Знакомый текст проги.... потому что мой.

Я же предлагал автору (если это не вы) в том топике варианты решения этой проблемы.
...
Рейтинг: 0 / 0
26.07.2011, 09:59
    #37366856
undoredo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
Shocker.Pro,

Была попытка добавить второй массив, где бы сохранялось положение курсора, но это работало не корректно, к сожалению.
...
Рейтинг: 0 / 0
26.07.2011, 13:18
    #37367252
mds_world
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
undoredo,

если мне не изменяет память, то в форуме Access, я вам давал решение на свободном рекордсете. И вроде бы вы сказали, что это, что нужно. Что-то изменилось?
...
Рейтинг: 0 / 0
26.07.2011, 13:36
    #37367282
undoredo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
mds_worldundoredo,

если мне не изменяет память, то в форуме Access, я вам давал решение на свободном рекордсете. И вроде бы вы сказали, что это, что нужно. Что-то изменилось?
Я ведь Вам написала там вчера о нескольких проблемах:
Одна из них - код не работает, если текст больше 32к.
Если текст меньше 32к, то работает, но если он при этом намного больше поля, в котором есть этот текст, то происходит очень сильное мелькание.
...
Рейтинг: 0 / 0
26.07.2011, 13:54
    #37367313
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
32k это ограничение для textbox, если хотите , чтобы было больше, то используйте RichTextBox или используйте технику сохранения своего значения во временный файл и считывания/записи порции данных для показа в вашем textbox-е
...
Рейтинг: 0 / 0
26.07.2011, 14:09
    #37367345
undoredo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
Konst_One32k это ограничение для textbox, если хотите , чтобы было больше, то используйте RichTextBox или используйте технику сохранения своего значения во временный файл и считывания/записи порции данных для показа в вашем textbox-е
Не совсем так.
В текстовом поле типа "мемо" ограничение 64к.
Дело в том, что функция Len , которая используется в коде mds_world с рекордсетом, имеет ограничение в 32к.
...
Рейтинг: 0 / 0
26.07.2011, 14:21
    #37367374
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
не в курсе кто там и что использует в рекордсете и почему вдруг Len() не умеет считать больше =)

PS
возможное решение я уже озвучил, поищите, в инете много примеров на бесконечные текстовые поля со свопингом в файл.
...
Рейтинг: 0 / 0
26.07.2011, 16:30
    #37367693
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
undoredoНе совсем так.
В текстовом поле типа "мемо" ограничение 64к.Именно так. Из поля мемо текст куда попадает? В текстбокс. И обрезается.

Я тоже делал undo/redo с текстбоксом и тоже ходил по этим граблям. В текстбокс через апи вроде можно запихнуть текст длинее 32к, но даже через апи невозможно установить каретку на позиции > 32к. А у вас к тому же аксесс. RichTextBox в комплекте с офисом не идет.
...
Рейтинг: 0 / 0
26.07.2011, 16:36
    #37367714
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
можно заюзать richtextbox напрямую через API
...
Рейтинг: 0 / 0
26.07.2011, 17:13
    #37367837
undoredo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
Konst_Oneможно заюзать richtextbox напрямую через API
Спасибо большое, но мне бы не хотелось сейчас заморачиваться с richtextbox.
Меня пока устраивает родной аксессовский контрол - textbox типа "мемо".
Мне нужно сейчас решить проблему курсора, а undo/redo работает (см. код выше).
...
Рейтинг: 0 / 0
26.07.2011, 17:19
    #37367849
undoredo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
AntonariyundoredoНе совсем так.
В текстовом поле типа "мемо" ограничение 64к.Именно так. Из поля мемо текст куда попадает? В текстбокс. И обрезается.

Я тоже делал undo/redo с текстбоксом и тоже ходил по этим граблям. В текстбокс через апи вроде можно запихнуть текст длинее 32к, но даже через апи невозможно установить каретку на позиции > 32к. А у вас к тому же аксесс. RichTextBox в комплекте с офисом не идет.
Никуда из "мемо" текст не попадает. Он там и остается.
Нет проблемы undo/redo (см. код Shocker.Pro выше) - есть проблема курсора.

Уважаемый mds_world предложил другое решение - с отвязанным рекордсетом, но его вариант не работает, если текста в "мемо" больше 32к.
...
Рейтинг: 0 / 0
28.07.2011, 11:43
    #37370532
undoredo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
UP
...
Рейтинг: 0 / 0
28.07.2011, 11:58
    #37370583
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
позиция курсора
Можешь апать до посинения. Проблема с установкой курсора не имеет решения ВООБЩЕ.
Переменная внутри текстобокса, отвечающая за позицию каретки, имеет тип short (integer), ограниченный 32к. При работе с ней через апи и при установке значений больше 32к запрос позиции начинает возвращать отрицательные значения.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / позиция курсора / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]