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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Текст: Как "снять" слово с текста на метке 
:(
    Опции темы
Сувор
Дата 23.10.2004, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Label1.Caption =длинный текст
Я хочу щелкнуть на каком-то слове и получить его. Как? - Я конечно могу снять координаты мыши, но ширина-то букв разная и, кроме того, автоматические переносы! -С ума свихнешся пересчитывать! С другой стороны очень многие программы это умеют. Нет ли для этого какой спец.функции? Спасиба!
PM MAIL   Вверх
-Mikle-
Дата 23.10.2004, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



Вряд ли они это делают с Label'ом... лучше использовать для этого TextBox...
Тебе для какой цели надо это? Объясни, найдем чего-нить...:)


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Сувор
Дата 24.10.2004, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



TextBox так TextBox! Просто я где-то читал что при отсутствии нужды всегда лучше пользовать label. А цель -показать перевод или, может, установить плеер на это место.
PM MAIL   Вверх
-Mikle-
Дата 24.10.2004, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



Цитата
Просто я где-то читал что при отсутствии нужды всегда лучше пользовать label

Конечно лучше! Label ведь менее ресурсоемкий, чем TextBox. Но ведь нужда в использовании TextBox есть, с ним это сделать проще... Ну или можешь пересчитывать все положения слов в Label :)


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Guest
Дата 24.10.2004, 16:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Конечно ,если постараться можно и гвоздь забить в стену шляпкой вперед.
  Вверх
~FoX~
Дата 25.10.2004, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



1. Определять координаты каждого слова, как предложил -Mikle-
2. Опять же как предложил -Mikle- сипользовать текстбокс или мемо
3. Разбивать строку на слова и каждое слово запихивать в отдельный лэйбл (естственно лэблы строить run-time).

Цитата

С другой стороны очень многие программы это умеют.

В этих программах слова (сокрее всего) есть отделтные компаненты со своими свойствами, методами и событиями. Более того в большенстве программ слово, строка, обзац и т.д. есть также объекты не имеющие ни какого отношения к лэблам!



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Сувор
Дата 26.10.2004, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ничего не имею против перехода к TextBox! (про label я просто так к слову вякнул) -- Но, как сделать-то? С текстбоксом?
А про программы -я имел в виду переводчик Stylus в частности. Там открываешь текст из любого документа (ну правда конвертацию он делает вроде бы) и при подводе мышки появляется перевод. Как-то я был бы резко удивлен если бы каждое слово или даже строка были отдельными обьектами!
PM MAIL   Вверх
~FoX~
Дата 26.10.2004, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

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



Сувор
А ты попробуй покодить на ВБА в ворде и поймешь, что к чему - там обзац - объект, слово - объек, даже буква объект.

По сабжу:
Split тебе поможет аминь :D


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Staruha
Дата 26.10.2004, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

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



Может тебе просто ListBox нужен?


--------------------
Возмездие настигнет
PM MAIL   Вверх
-Mikle-
Дата 26.10.2004, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



Цитата

А ты попробуй покодить на ВБА в ворде и поймешь, что к чему

точно... я как-то давно писал свой контрол, который выводил текст в форматированом виде, и делал без объектов, в массиве хранил структуру параметров слова... :)
потом потом попытался добавить туда всплывающие подсказки, при наведении на определенное слово, потом захотел сделать события, которые возникают при нажатии на слово, потом мне захотелось чтобы каждое слово имело свой индент... и короче получился такой запутанный код, что уследить за его логикой даже мне было уже сложно :) соответственно проглядеть все возможные ошибки тоже оказалось уже сложным :) и пришел я к выводу: что надо это все похерить, и сделать класс для слова :) которые собрать потом в коллекции...

Цитата
Как-то я был бы резко удивлен если бы каждое слово или даже строка были отдельными обьектами!

Просто ты представляешь себе это как нечто большое, жрущее ресурсы и громоздкое :)
На самом деле все намного компактнее...

PS: Ой... что-то я кажется уже флейм пишу... пива напился блин... сорри... :stena

Это сообщение отредактировал(а) -Mikle- - 26.10.2004, 20:54


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
-Mikle-
Дата 26.10.2004, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



Цитата

Ничего не имею против перехода к TextBox! (про label я просто так к слову вякнул) -- Но, как сделать-то? С текстбоксом?

Например так:
Код
Private Sub Text1_Click()
  MsgBox GetWord(Text1.Text, Text1.SelStart)
End Sub

Function GetWord(Expr As String, pos As Long) As String
  Const DELIMITERS = " ,.?!@#$%^&:;'""()+-*/\=~" & vbCrLf & vbTab
  Dim bw As Long, ew As Long
  Dim ls As Long
 
  For i = pos To 1 Step -1
     If InStr(1, DELIMITERS, Mid$(Expr, i, 1)) Then Exit For
  Next
  bw = IIf(i < 1, 1, i + 1)
 
  ls = Len(Expr)
  For i = bw To ls
     If InStr(1, DELIMITERS, Mid$(Expr, i, 1)) Then Exit For
  Next
  ew = IIf(i > ls, ls + 1, i)
 
  If bw <= ew Then
     GetWord = Mid$(Expr, bw, ew - bw)
  Else
     GetWord = ""
  End If
End Function




--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Staruha
Дата 26.10.2004, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

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



А может попроще ,а?
Код
Private Sub Text1_Click()
Text2.Text = Text1.SelText
End Sub

Здесь выделенное ручками слово отражается в другом Text2.
Остается выделить программно типа сосчитать сколько символов от курсора до пробела.


--------------------
Возмездие настигнет
PM MAIL   Вверх
-Mikle-
Дата 27.10.2004, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



а не то же самое сделал что ли? :)
просто не выделяю, а работаю с переменной... зачем выделять? для этого есть ф-ия Mid$
Цитата

Остается выделить программно типа сосчитать сколько символов от курсора до пробела

ты кинь сюда свой вариант, который считает все это, при этом разделитель может быть не только пробел, как в моем варианте, и позиция курсора может оказаться внутри подрят идущих разделителей ("Hello!!!!!" между восклицательными знаками например). В этой ф-ии я учел все варианты положения курсора, также когда слово последнее, и после него не идет никаких разделителей... или первое, перед ним нет разделителей не думаю что твой вариант будет меньше по кол-ву строк :)

Это сообщение отредактировал(а) -Mikle- - 27.10.2004, 07:01


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
-Mikle-
Дата 27.10.2004, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



PS: перед тем как использовать
Код
Text2.Text = Text1.SelText
тебе надо будет полюбому написать например
Код
Text1.selstart=5
Text1.sellength=7
а это, есть эквивалент
Код
Text2.Text = mid$(text1.text, 5, 7)
только без выделения

Это сообщение отредактировал(а) -Mikle- - 27.10.2004, 07:10


--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Сувор
Дата 27.10.2004, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Mikle! I thank you very much! И твой код великолепен! Хотя можно было передо мной бисер и не метать, а просто ткнуть меня носом в атрибут .selstart -кстати какого дьявола его нет в панели свойств ? (а следовательно и его расшифровки)! Но код великолепен! Thank you once more!
Кстати интересно- при просмотре on line я увидел только начало твоего кода (четыре строчки)
а после сохранения на диск проявилось остальное! Это так и надо? Или это баг какой?

Это сообщение отредактировал(а) Сувор - 27.10.2004, 10:49
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

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

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

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

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


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

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


 




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


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

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