Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
пока нет варианта, чтоб назначить Read Only для TextEntry
А чем это не вариант: Предположим у нас в поле ввода TextEntry по умолчанию написано "Изначальный текст", тогда в самом объекте TextEntry на вкладке Text Change пишем:
SetVar "[TextEntry]" "Изначальный текст"
В результате любое изменение текста будет мгновенно нивелировано. Зачем для этого плагин?
А вот вариант как запретить выделение и тем самым копирование :
При входе в TextEntry ставим мышиный монитор с подпрограммой,при выходе удаляем монитор В подпрограмме : если нажата ЛКМ,то отключаем мышь в противном случаи подключаем. Всё,- выделить текст невозможно.
Ну да, вроде всё необходимое для этого имеется. Плагин можно написать например для динамического изменения свойств TextEntry.
//ES_NUMBER Разрешить ввод только цифр //ES_RIGHT текст записывается справо налево (иврит арабский) //ES_CENTER текст по центру //ES_LEFT текст слева //ES_LOWERCASE буквы всегда записываются в нижнем регистре //ES_UPPERCASE буквы всегда записываются в верхнем регистре
все ваши варианты актуальны для определенных проектов с маленькими объемами, короче в моем случае такое не прокатывало и я забросил.
Я знакомому пообещал сделать урезанную и облегченную версию автодаты для его машин(расход, норма/час, и т.д.), теперь мы стали редко перезваниваться А вариант «по умолчанию написано "Изначальный текст"» вообще не в этом случае, т.к. какое может быть "по умолчанию" в динамическом содержании, где либо пусто, либо динамические данные. А создавать дубликаты объекта или переменных считаю нецелесообразным. Ну, может быть, кроме случаев, где объектов/переменных мало
Сергей, объясни, почему не прокатывало? Интересно. Ведь у объекта TextEntry есть своя переменная, можно динамически менять все сколько угодно при одних условиях и запрещать изменение при других. Хочу понять, чего не хватило.
Quote (Гарик)
Плагин можно написать например для динамического изменения свойств TextEntry.
варианты актуальны для определенных проектов с маленькими объемами, короче в моем случае такое не прокатывало
Мне тоже интересно почему эти вышеупомянутые способы не подходят.Если надо запретить выделение,какая разница сколько навалено текста,мы просто отрубаем мышь.Хотелось бы услышать факты этих нестыковок.
да не помню всех причин, но было много, и именно с этим объектом. Помню, что убивало с тими переменными(т.к. у меня было только на 1 стр. 20 объектов, и к каждой надо создовать дубли, потом прописывать в Change). Но было одна причина, которая и дала повод послать все и всё. Надо на досуге посмотреть тот проект, а то я забыл в чем дело было.
я давненько ищу способ, но пока нет варианта, чтоб назначить Read Only для TextEntry. Может когда нибудь появится плагин с такой возможностью....
Давече покопавшись в сети нашёл вроде как полный перечень стилевых Editовских констант
Quote
ES_AUTOHSCROLL Автоматически перемещает текст вправо на 10 символов, когда пользователь начинает вводить данные в конце строки ввода. При нажатии пользователем клавиши <Enter> текст автоматически выводится с начала строки. ES_AUTOVSCROLL Автоматически перемещает текст вниз на одну страницу, когда пользователь нажимает клавишу <Enter> на последней строке. ES_NUMBER Разрешить ввод только цифр. ES_CENTER Служит для выравнивания текста по центру. ES_LEFT Служит для выравнивания текста по левому краю. ES_OWERCASE При вводе все символы преобразуются в нижний регистр. ES_MULTILINE Обеспечивает элемент управления - многострочный редактор. При использовании со стилем ES_AUTOVSCROLL в ответ на нажатие клавиши <Enter> осуществляется вертикальная прокрутка текста. Если стиль ES_AUTOVSCROLL не был указан, то при нажатии клавиши <Enter> подается звуковой сигнал; дополнительные строки не выводятся. То же самое относится к использованию стиля ES_AUTOHSCROLL. Если указан этот стиль, то пользователь может не переходить на следующую строку, а сдвигать текст влево. При переходе элемента управления в неактивное состояние текст не остается на той же строке в окне, а создается новая строка. Элементы управления стиля ES_MULTILINE могут включать полосы прокрутки. ES_NOHIDESEL Перекрывает выполняемую по умолчанию операцию, запрещая прятать выделенный фрагмент, когда элемент управления теряет фокус ввода. ES_OEMCONVERT Текст, вводимый в элементе управления класса EDIT, преобразуется из кодовой таблицы Windows в кодовую таблицу OEM и наоборот. ES_PASSWORD Каждый введенный символ выводится как звездочка (*). ES_READONLY Пользователю не разрешается вводить или редактировать текст. ES_UPPERCASE Все вводимые символы преобразуются в верхний регистр. ES_RIGHT Служит для выравнивания текста по правому краю ES_WANTRETURN При нажатии пользователем клавиши <Enter> вставляется символ возврата каретки.
Как видно из вышеперечисленного, то что нам нужно имеется При использовании флагов ES_NUMBER, ES_LOWERCASE, ES_UPPERCASE(другие не пробовал) функция отрабатывает нормально но при использовании ES_READONLY или ES_PASSWORD - никаких изменений Причину не знаю Peter, попробуйте вы,может поймёте в чём дело, возможно надо использовать комбинирование флагов или это разрабы сделали некие ограничения. Вообщем как я не ничего не добился от этих двух констант.
Code
SetWindowLongPtr(H , GWL_STYLE, GetWindowLongPtr(H, GWL_STYLE) or ES_READONLY);
H - хэндл объекта TextEntry (ну вы в курсе).
Сообщение отредактировано Гарик - Пн, 11 Июля 2011, 23:08
Эх, если бы было все так просто: взял стандартную айпишную функцию, запустил, и... дело в шляпе. Я не эксперт, и могу только высказать предположения. NeoBook написана в Delphi. Вполне естесственно предположить, что и все необушные компоненты-объекты являются наследниками стандартных делфийских компонентов. И это означает, что поведение этих объектов (и реакция на сообщения) вовсе не обязано быть таким же, как у стандартных оконных элементов Windows. Что-то, может и прокатит, а что-то нет...
Боюсь, что без создания (плагином) отдельного Memo с соответствующими свойствами будет не обойтись. Впрочем, не исключено, что можно найти и "обходной маневр"... Так-что, Гарик, все в ваших руках! Пробуйте..
Я вообще бы не советовал слишком сильно уповать на "всемогущество" WinAPI. Потому-что, работа на чистом API требует очень хорошего знания этого API, огромного опыта в программировании, и не малого времени.
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
но при использовании ES_READONLY или ES_PASSWORD - никаких изменений
Я гадаю, конечно, мне кажется дело в том, что эти свойства в NB зарезервированы под необушный TextEntry (оба в Стиле "Ограничение ввода" - пароль и маска ввода), возможно поэтому и не доступны через плаг.
Кстати, Сергей, я сейчас попробовал: запретить изменение текста в поле ввода можно через маску - как раз тем, что текст (при создании объекта) пишется не в поле ввода, а в поле для ввода маски (там дофига символов можно использовать, я на 303-ем символе остановился, дальше не проверял). При этом получившийся текст при попытке изменить его не исчезает даже на мгновение.
Вадим,как видишь с помощью различных фокусов можно добится нужного результата, но хотелось бы сделать всё по человечески.Если уже не получится,то будем Коперфильдничать.
с помощью различных фокусов можно добится нужного результата
Вот и ещё одно "звание" родилось!
Фокусник!
- А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
А что, подходит! Главный по прозрачности, анимации всяческие заставляет по экрану носиться... Боюсь даже представить, что Гарик может заставить TextEntry выделывать... TextEntry нет, а поле ввода есть! Как вам? :)
Дата: Чт, 08 Сентября 2011, 23:52 | Сообщение # 46
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
а вы тут не собирались случайно сделать прозрачность (регулируемую?) для поля ввода textentry? или хотябы фон чтоб туда вставлять можно было? Как задавать вопросы
Дата: Пт, 09 Сентября 2011, 00:43 | Сообщение # 48
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
просто стандартный textentry бесит... все можно украсить кроме него. надо либо чтоб картинку фона ставить можно, либо чтоб само поле полупрозрачное было. Как задавать вопросы
Дата: Пт, 09 Сентября 2011, 11:19 | Сообщение # 52
Наш дизайнер
Администраторы
Сообщений: 5959
Offline
я так в vb извратился
<DllImport("user32.dll", CharSet:=CharSet.Auto)> _ Public Shared Function SetWindowLongA(ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long End Function
наверное немного не так написал, по памяти но смысл понятен... данный вариант я пробовал и отказался от него ,т.к. он был недостаточен, появились баги с отрисовкой содержимого, при печати текста весь текст рисовался заново и накладывался поверх имеющегося... Можно было ковырять далее, но не стал т.к. сделал проще без winapi
Дата: Пт, 09 Сентября 2011, 19:30 | Сообщение # 60
Эксперт форума
Модераторы
Сообщений: 5942
Offline
Гарик, можешь сделать, сделай. Не хочешь или не можешь, че дразнить то. Спрашивают то не из праздного любопытства. Не знаю как с телефона под спойлер вставить. Сейчас под. Астраханью, общался с живыми верблюдами. Завтра скачки будут на лошадях и верблюдах. Интересно кому? Правда на телефон могу заснять только. Качество не ахти, да и круг у них большой. Вдали плохо видно будет. Я сегодня посидел не верблюде.)) Даже заснял не память))