Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> использование буфера, как правильно использовать буфер в ВБ 
:(
    Опции темы
Bisy
Дата 22.6.2006, 03:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.4.2006

Репутация: нет
Всего: нет



подскажите как правильно использовать буфер обмена в ВБ
следующий код знаю, но вот беда текс копируется, но при попытке вставить в другие приложения возникают ошибки, как это можно обойти
Код

Private Sub cmdCOPY_Click()
Dim Tmp as String
     Tmp=txtText.SelText
     Clipboard.Clear
     Clipboard.SetText Tmp, vbcfText
End Sub

данный код очень нестабиле, Возможно ли его написать по другому? 
PM MAIL   Вверх
Akina
Дата 22.6.2006, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Какие ошибки? что значит "нестабилен"? Ты можешь внятно описывать проблему?
 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
IcyJet
Дата 22.6.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Цитата

Спокойствее души и нестабильность нестоит путать тормознутостью VB smile 

Хотя я бы несказал что Vb тормознутый...

А если ненравится средста VB, есть Win32 API... с его бООльшыми возможностями, и столь же бООльшыми ошибками ...
(в некоторых случиях smile )  

Это сообщение отредактировал(а) IcyJet - 22.6.2006, 12:06
PM MAIL   Вверх
Bisy
Дата 23.6.2006, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.4.2006

Репутация: нет
Всего: нет



Суть дела заключается в том что текст нормально копируется и вставляется в текстовых полях всех программ написанных на VB, а если требуется вставить куда то еще то возникает проблема!
P.S. Данная проблема косается только русских символов!, а нестабильность заключается в том что непредставляется возможным определить различия между программами! 
PM MAIL   Вверх
IcyJet
Дата 23.6.2006, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Может проблемы с совместимостью ANSI и Unicode? 
PM MAIL   Вверх
Akina
Дата 23.6.2006, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(Bisy @  23.6.2006,  01:56 Найти цитируемый пост)
Данная проблема косается только русских символов!, 

Проблема известная. К Vb отношения не имеет. 

Решение - перед копированием в буфер нужно установить русскую раскладку клавиатуры. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Bisy
Дата 24.6.2006, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.4.2006

Репутация: нет
Всего: нет



СПАСИБО!!! РАБОТАЕТ!!!
А программно это какнибудь обойти можно? или всеже в VB это непредусмотрено 
PM MAIL   Вверх
Игорь
  Дата 25.6.2006, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 16.6.2006

Репутация: 1
Всего: 1



Ниже приведенный код был взят из моих заготовок. С этим кодом ошибки вобще не возникают. Перед копированием текст должен быть выделен!!! 

Код

Private Sub mnuEditCopy_Click()
‘Если выделен какой-либо текст, скопировать его в буфер обмена.
If Text1.SelLength = 0 Then
Beep
Exit Sub
End If
Clipboard.SetText Text1.SelText
End Sub
 
PM MAIL ICQ   Вверх
cardinal
Дата 25.6.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Только 
Код

Clipboard.Clear

я бы все таки сделал... Без него у меня
Код

Clipboard.SetText Text1.SelText

Ничего не делала. 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Игорь
Дата 25.6.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 16.6.2006

Репутация: 1
Всего: 1



Clipboard.SetText  - Размещает выделенный блок текста в буфере обмена, замещая любой текст, который находится там к этому моменту.
Clipboard.GetText - Возвращает текст из буфера обмена.
 
PM MAIL ICQ   Вверх
cardinal
Дата 25.6.2006, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата(Игорь @  25.6.2006,  12:33 Найти цитируемый пост)
Размещает выделенный блок текста в буфере обмена, замещая любой текст, который находится там к этому моменту.

Код

Option Explicit

Private Sub Command1_Click()
If Text1.SelLength = 0 Then
Beep
Exit Sub
End If
Clipboard.SetText Text1.SelText
End Sub

Private Sub Command2_Click()
Text2.Text = Clipboard.GetText
End Sub

Так у меня все пашет, а если я иду в Word и делаю Ctrl-V, то вставляется совсем не то, что ты ожидаешь... smile  


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Bisy
Дата 26.6.2006, 07:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.4.2006

Репутация: нет
Всего: нет



Такой код позволяет однозначно скопировать и вставить текст в WORD.
Код

Private Sub cmdCOPY_Click()
Dim Tmp as String
     Tmp=txtText.SelText
     Clipboard.Clear
     Clipboard.SetText Tmp, vbcfRTF
End Sub


Однако возникает вопрос как программно поменять раскладку на клаве? 
PM MAIL   Вверх
Тутанхамец
Дата 26.6.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 10.10.2005
Где: в пирамидЕ!

Репутация: 4
Всего: 6



Раскладку на клаве программно поменять так:

Код

Option Explicit
Private Declare Function LoadKeyboardLayout Lib "user32" Alias "LoadKeyboardLayoutA" (ByVal pwszKLID As String, ByVal flags As Long) As Long
Private Const KLF_ACTIVATE = &H1

Private Sub Command1_Click()
Dim s As String, i As Long
s = "00000419"
i = LoadKeyboardLayout(s, KLF_ACTIVATE)
If i = 0 Then MsgBox ("error")
End Sub


Подробнее смотри в MSDN (можно найти на www.microsoft.com) функции GetKeyboardLayout, GetKeyboardLayoutName, GetKeyboardLayoutList, LoadKeyboardLayout и т.п.

Код, копирующий без проблем (вроде бы smile ) с русскими буквами, выглядит так:

Код


Private Sub Command1_Click()
Dim s As String, i As Long
s = "00000419"
i = LoadKeyboardLayout(s, KLF_ACTIVATE)
If i = 0 Then MsgBox ("error")
Clipboard.Clear
Clipboard.SetText Text1.Text
s = "00000409"
i = LoadKeyboardLayout(s, KLF_ACTIVATE)
If i = 0 Then MsgBox ("error")

End Sub



 
PM MAIL   Вверх
cardinal
Дата 26.6.2006, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Тут тоже немного написано...
http://vingrad.ru/VB-VB-002879 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.