|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
Уважаемы коллеги! Пусть имеется таблица с полями Р1 целого типа и Р2 символьного. В поле Р1 записаны целые числа. Пусть на форме указанная таблица отображается в гриде. Вопрос. Как сделать так, чтобы при переходе в любую строку колонки грида, соответствующей полю Р2, прочитывалось значение поля Р1, например К, а ввод в Р2 становился возможным только с позиции К ... |
|||
:
Нравится:
Не нравится:
|
|||
23.11.2011, 21:43 |
|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
В колонке где P2 выводится в TextBox.Valid() пропиши свою проверку. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2011, 07:00 |
|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
Уважаемый Dima T ! Спасибо за ответ. Буду его изучать. Если не будет получаться, опять попрошу помощи. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2011, 11:34 |
|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
UAPУважаемы коллеги! Пусть имеется таблица с полями Р1 целого типа и Р2 символьного. В поле Р1 записаны целые числа. Пусть на форме указанная таблица отображается в гриде. Вопрос. Как сделать так, чтобы при переходе в любую строку колонки грида, соответствующей полю Р2, прочитывалось значение поля Р1, например К, а ввод в Р2 становился возможным только с позиции К Если я правильно понял, то в поле p1 - цифры, означающие с какой позиции можно вводить строку в p2. Я бы в Gride с этим не заморачивался, а делал в отдельной форме. Пользователю об этом нужно знать или ему по барабану? Если второй вариант, то все значительно проще - добавляйте перед введенной строкой количество пробелов соответствующее значению поля p1. Ограничить в текстовом поле часть символов от редактирования все равно не удастся. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2011, 12:23 |
|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
Уважаемый IgorNG ! Вы совершенно правильно понимаете суть задачи. Конечно, осуществить описанный Вами подход очень просто. То есть сделать форму для редактирования записи. Кроме того, сам Грид объявить - только для чтения. В то же время, очень хочется именно в самом гриде. Может придумаете что-нибудь? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2011, 15:27 |
|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
UAP, Ну если только в Valid() добавить тоже, что я писал выше. Но дело в том, что результат будет виден только в момент перехода либо в другую колонку, либо на другую строку. Т.е. это событие происходит перед потерей фокуса объекта. В форме это значительно проще. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2011, 15:47 |
|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
IgorNGUAP, Ну если только в Valid() добавить тоже, что я писал выше. Но дело в том, что результат будет виден только в момент перехода либо в другую колонку, либо на другую строку. Т.е. это событие происходит перед потерей фокуса объекта. В форме это значительно проще. Текстбокс в гриде ничем не отличается от текстбокса на форме, прописывается все одинаково в обоих случаях. Если надо незамедлительную реакцию на ввод - извращаться в InteractiveChange() ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2011, 16:27 |
|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
UAP, Задача чисто умозрительно-академическая или есть практическое применение? Если 2-е, озвучьте, уж очень любопытно В озвученной Вами форме задача решения не имеет - невозможно запретить редактирование _части_ поля. Значение в поле либо редактируется, либо - нет. Вы можете не запретить, а игнорировать редактирование части, то есть - запоминать первые К символов и потом при выходе из объекта - "возвращать" эту часть... либо делать это сразу во время изменения - interactivechange Но это может вызвать неудовольствие со стороны пользователя - ему постоянно надо будет сталкиваться с казусами Почему бы Вам второе поле не разделить в гриде на двое? добавьте еще столбец в первом пусть будет число, во втором - нередактируемая часть текста, в третьем - то, что можно менять Кстати - на месте принимающей стороны первое, что я бы сделал - ввел бы в поле числа что-то типа -12 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2011, 19:01 |
|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
SSn888В озвученной Вами форме задача решения не имеет - невозможно запретить редактирование _части_ поля. Значение в поле либо редактируется, либо - нет. Вообще-то, можно. При помощи свойства InputMask. Решение не абсолютное, но, тем не менее... Если задать свойство Код: plaintext
То у вводимого значения всегда будут вводится первыми символами "test", а потом уже все остальное. Причем это самое "test" даже изменить нельзя будет. В смысле, получается именно то, что надо: часть значения невозможно изменить. Разумеется, шаблон маски ввода не должен содержать спец.символов используемых для собственно маски. Проще всего это реализовать, если вставляемый текст - это русские буквы. Они уж точно не могут совпасть со спец.символами. Соответственно, для Grid достаточно прописать свойство Column.DynamicInputMask. Нечто вроде такого выражения Код: plaintext
Число 20 - это размерность поля P2, которое указано как источник данных для Column2 В данном случае проблема в том, что если в первых K символах встретится спец.символ, то получим искажение значения в поле P2. Поэтому, в общем случае, решение достаточно рискованное. ==================================================== Возможно, речь идет о составных выражениях. Тогда подобные задачи решаются через разделение фрагментов по разным полям F1 - первый фрагмент F2 - второй фрагмент F3 - результат объединения первых двух фрагментов. Недоступно для прямого редактирования. Формируется автоматически на основании значений, введенных в первых двух полях ... |
|||
:
Нравится:
Не нравится:
|
|||
24.11.2011, 19:34 |
|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
Уважаемые коллеги! Видимо, действительно всегда нужно начинать с самого начала. Дело в том, что мне нужно "посадить" дерево в грид. Естественно, наименования узлов должны идти "ступенькой" Я сознательно не пользуюсь TreeView, поскольку долгие размышления привели меня именно к такому подходу. Более того, глубоко уважаемый коллега ВладимирМ, к мнению которого многие прислушиваются (и я, в частности), обрушивался на TreeView с критикой. Мне хотелось бы иметь в Гриде полностью развернутое дерево, отсортированное в естественном порядке (как проводник после нажатия "*"). После нажатия кнопки "Создать подузел текущего узла" должна на "своем" месте появиться пустая запись, которая и должна заполняться с позиции равной "поколению". В нашем форуме я не нашел ответа на мой вопрос. Верояно, плохо искал. Но я старался найти - неудобно отвлекать уважаемых коллег. И вообще, какой должна быть структура таблицы, оптимальная для хранения и обработки дерева (дерево должно быть на экране - с ним работает Пользователь). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.11.2011, 13:49 |
|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
ВладимирМЕсли задать свойство Код: plaintext
В данном случае проблема в том, что если в первых K символах встретится спец.символ, то получим искажение значения в поле P2. Поэтому, в общем случае, решение достаточно рискованное. Именно... поэтому данное решение как раз решением и не является... как только какой-то символ _из_значения_ поля совпадает с _любым_из_спец_для_маски_ - начинается проблема И решение не "рискованное", а "гарантировано рано или поздно вызовет проблемы" ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2011, 16:30 |
|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
UAP, Что Вы хотите получить в итоге - теперь понятно Не совсем ясно - зачем с таким ограничением ? авторМне хотелось бы иметь в Гриде полностью развернутое дерево, отсортированное в естественном порядке (как проводник после нажатия "*"). После нажатия кнопки "Создать подузел текущего узла" должна на "своем" месте появиться пустая запись, которая и должна заполняться с позиции равной "поколению". Где это в том самом проводнике Вы видели, чтоб при открытии * папки/подпапки у Вас название папки включало бы в себя весь предыдущий путь ? Вы хотите, чтоб к примеру, по щелчку на узле "Банка" были подузлы "Банка полная", "Банка пустая"; просто иерархия "Банка"-"Полная"-"Пивом" Вас по какой-то причине не устраивает? Тогда озаботьтесь еще и прослеживанием ситуации лавинного переименования подчиненных узлов при переименовании "Банка" на "Бутылка"... либо откажитесь от идеи "весь предыдущий путь должен иметь место в названии" ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2011, 16:44 |
|
Ввод данных с задаваемой позци
|
|||
---|---|---|---|
#18+
авторИ вообще, какой должна быть структура таблицы, оптимальная для хранения и обработки дерева (дерево должно быть на экране - с ним работает Пользователь). Минимальный набор полей: 1. Код - он же для отслеживания принадлежности по иерархии (например, по позиционному принципу -> "0001" - "Банка", " 0001 1" - "Полная", " 0001 11" - "Пивом" 2. Собственно - наименование которое видит юзер 3. Флаг "Ветка распахнута/свернута" можно еще добавить флаг "Имеются подчиненные" (дабы не выводить крестик распашки там, где распахивать нечего) для начала - вполне хватит Сортируете таблицу по коду, делаете выборку по "Раз ветка не распахнута - то все что внутри нее - на данный момент не видно" - и вперед :) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.11.2011, 16:53 |
|
|
start [/forum/topic.php?fid=41&msg=37542584&tid=1583989]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 257ms |
total: | 394ms |
0 / 0 |