powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / позиция курсора
14 сообщений из 14, страница 1 из 1
позиция курсора
    #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
позиция курсора
    #37366849
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Знакомый текст проги.... потому что мой.

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

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

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

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

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

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

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

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


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