|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
Доброго всем дня! Существует форма frm2, открытая в форме верхнего уровня frm1, в frm1 также существует тулбар с кнопками навигации и управления, в частности, открывающие для редактирования и сохраняющие изменения при редактировании в форме frm2. На форме frm2 существует grid, с помощью которого редактируется таблица, одно из полей которой - мемо-поле. Очень часто возникает ситуация, когда пользователь двойным кликом раскрывает мемо-поле, редактирует его, а затем не закрыв сразу жмет кнопку на тулбаре, что вызывает сразу же дебаггер и множество судорожных кликов куда попало и приводит к таск-манагеру. Подскажите, как правильно разрешить такую проблему? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2015, 15:39 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
1. отказаться от стандартного редактирования и сделать свое 2. у пользивателя НИКОГДА не должен выскакивать DEBUG ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 12:20 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
Penner1. отказаться от стандартного редактирования и сделать свое 2. у пользивателя НИКОГДА не должен выскакивать DEBUG Привет, Сразу поясню, что мой уровень очень низкий, я можно сказать, иду на ощупь. 1. Редактирование и есть мое. Кнопки тулбара отправляют на методы активной формы. Формы моего приложения нельзя сделать на весь экран в силу некоторых причин. Поэтому бывает такая ситуация, когда пользователь щелкает мышью вне формы, где-то на форме верхнего уровня Frm1, тогда нужная форма, назовем ее Frm2, становится неактивна, и нажатие кнопок тулбара к к нужным эффектам не ведет. Что бы избежать этого я придумал такую проверку для кнопки SAVE: Код: sql 1. 2. 3. 4. 5. 6.
Однако столкнулся с тем, что при редактировании мемо-поля пользователь не закрывает его, а сразу жмет на save, что приводит к появлению дебагера с ошибкой "Свойство hWnd не найдено". 2. Тут я категорически согласен, почитал про обработчик ошибок, что-то такое наваял и загнал туда ошибку 1743 с дополнительным комментом "Возможно не закрыто мемо-поле". Теперь дебаггер не появляется, а только мое окошко, но вопрос остался открытым. Может можно как-то придумать, что-бы предотвратить любую возможность пользователя выйти куда-либо за пределы мемо-поля, пока оно развернуто? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 12:51 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
редактировании мемо-поля тоже должно быть свое ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 15:08 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
Pennerредактировании мемо-поля тоже должно быть свое Каким образом? Можно как-то развернуть ответ ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 22:34 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
Modal Form + Memoedit + 2 Button ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 22:44 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
PennerModal Form + Memoedit + 2 Button Если речь идет о том, что бы всю форму сделать модальной, так это не очень желательное решение. Нет ли другого способа? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 13:41 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
1.Обычная форма, не обязательно модальная 2. В форме объект Grid, можно ReadOnly... 3. В этой же форме EditMemo, при перемещении в гриде Memo поле изменяется 4. Способы редактирования - их много, как вариант вызов еще одной формы с нужными полями для редактирования... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2015, 19:38 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
BearS1.Обычная форма, не обязательно модальная 2. В форме объект Grid, можно ReadOnly... 3. В этой же форме EditMemo, при перемещении в гриде Memo поле изменяется 4. Способы редактирования - их много, как вариант вызов еще одной формы с нужными полями для редактирования... Добрый день, так мемо-поле в гриде, они одновременно редактируются, если ReadOnly - то как же тогда? Что такое EditMemo? Не нашел в хелпе ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 11:17 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
BearS, Penner, Ffffffffffffffffffffffff Господа, спасибо за подсказки и терпение, немного почитаю и попробую разобраться с Edit Box. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 13:02 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
DmitryKn, одна из многих концепций работы с данными таблиц(ы), есть и другие подходы, может быть такой: - есть форма, на ней грид только для чтения для защиты от случайного редактирования. при этом грид может и не отображать все поля таблицы, коих может быть очень много и в гриде их редактировать не очень удобно... - при вызове режима редактирования, способов много, горячая клавиша, кнопка, тулбар вызывается форма редактирования и в ней все необходимые поля и контролы для редактирования. эта же форма используется и для добавления новой записи. у нее два режима ввод и редактирование. при редактировании форма запоминает номер записи или id записи. editbox для мемо поля в вызываемой форме. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2015, 22:29 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
BearSDmitryKn, одна из многих концепций работы с данными таблиц(ы), есть и другие подходы, может быть такой: - есть форма, на ней грид только для чтения для защиты от случайного редактирования. при этом грид может и не отображать все поля таблицы, коих может быть очень много и в гриде их редактировать не очень удобно... - при вызове режима редактирования, способов много, горячая клавиша, кнопка, тулбар вызывается форма редактирования и в ней все необходимые поля и контролы для редактирования. эта же форма используется и для добавления новой записи. у нее два режима ввод и редактирование. при редактировании форма запоминает номер записи или id записи. editbox для мемо поля в вызываемой форме. В принципе, про вызываемую форму для редактирования я думал, но удобнее и нагляднее прямо в гриде все делать, с фиксированием изменений тоже удалось справиться - фиксируется не только кто вносил изменения, но и куда и когда, что-то вроде лог-файла на каждую запись получается. Editor, вызываемый двойным кликом по мемо-поле - устраивает более чем, единственное, что хотелось бы сделать - это что бы в режиме редактирования он приобретал бы что-то вроде модальной формы, т.е. пока он открыт пользователь никуда попасть вообще не может, пока не закроет. Настроек этого Editora я не нашел, сейчас смотрю на editbox в том плане, что если двойной клик на ячейке грида, то должен открыться editbox, возможно окошко ему какое-то сделать, пока еще нет решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 10:15 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
DmitryKnEditor, вызываемый двойным кликом по мемо-поле - устраивает более чем, единственное, что хотелось бы сделать - это что бы в режиме редактирования он приобретал бы что-то вроде модальной формы, т.е. пока он открыт пользователь никуда попасть вообще не может, пока не закроет. Настроек этого Editora я не нашел, сейчас смотрю на editbox в том плане, что если двойной клик на ячейке грида, то должен открыться editbox, возможно окошко ему какое-то сделать, пока еще нет решения. Есть устаревшая настройка SET WINDOW OF MEMO TO [<окно>] Команда указывает <окно>, которое можно использовать по умолчанию для редактирования мемо-поля в командах APPEND, BROWSE, CHANGE, EDIT, GET/READ или MODIFY MEMO. Ввод команды без параметра <окно> отменяет назначение В том числе, эта настройка будет работать и для Grid. Т.е. указанное "окно" - это и есть тот самый "Editor" Обычно "окно" задается через команду DEFINE WINDOW, хотя можно приспособить и модальную форму. Однако лучше сделать по другому. Справа от Grid расположи один объект EditBox, куда и выводи содержимое мемо текущей записи. Просто в качестве ControlSource укажи нужное memo-поле. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 15:15 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
ВладимирМЕсть устаревшая настройка SET WINDOW OF MEMO TO [<окно>] Команда указывает <окно>, которое можно использовать по умолчанию для редактирования мемо-поля в командах APPEND, BROWSE, CHANGE, EDIT, GET/READ или MODIFY MEMO. Ввод команды без параметра <окно> отменяет назначение В том числе, эта настройка будет работать и для Grid. Т.е. указанное "окно" - это и есть тот самый "Editor" Задавать и настраивать окна для мемо с большего освоил, но модальными так и не сделал, т.е. задачу свою не решил, к сожалению. Обычно "окно" задается через команду DEFINE WINDOW, хотя можно приспособить и модальную форму. Однако лучше сделать по другому. А как приспособить модальную форму? Очень было бы правильно Справа от Grid расположи один объект EditBox, куда и выводи содержимое мемо текущей записи. Просто в качестве ControlSource укажи нужное memo-поле. К сожалению, места нет на форме уже, куда бы еще довольно крупный editbox воткнуть, почти всю форму грид занимает. Владимир, спасибо большое, я по крайней мере освоил как описывать и запускать окна для мемо, уже есть какой-то результат )) Там с помощью параметра NAME можно задавать окну свойства как объекту, т.е. форме, описание окна я положил в Init формы, в которой грид. Однако получается так, что пока само мемо-поле в состоянии ReadOnly , то изменить WindowType на 1 (modal) я не могу - поскольку readonly, а модальность нужна всегда, и когда readonly, и когда нет. В любом случае, если ничего не придумаю, уже можно сделать проверку на наличие окна и вывести сообщение пользователю. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.11.2015, 20:34 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
DmitryKn, По ссылке пример, на дочерней форме вместо textBox-a положи EditBox. Как правильно обновить форму? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 09:44 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
PaulWistDmitryKn, По ссылке пример, на дочерней форме вместо textBox-a положи EditBox. Как правильно обновить форму? Привет, спасибо за полезную ссылку, много интересного открыл ) Однако столкнулся опять с трудностями. Не могу вызвать форму. Вызов по моему плану должен был происходить из DbClick текстбокса грида, как сразу, так и через пользовательский метод на форме, все одно никак. Поле - мемо, и видимо встроенные процедуры перехватывают и открывают editor VFP. Заменил в гриде в колонке с мемо-полем textbox на editbox, в этом случае editor не появлялся, но и форма не вызывается. Пытался по DbClick изменить размеры и параметры editbox - тоже ничего. Пытался по совету Владимира М задать окно - очень все красиво получается, только не могу его модальным сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 19:58 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
DmitryKn... Однако столкнулся опять с трудностями. Не могу вызвать форму... Вообще-то могу. Прошу меня извинить, я просто не проставил In-toplevel-form, она отлично вызывается и модальна, по сути все прекрасно работает, спасибо PaulWist за ссылку с примером. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2015, 20:39 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
Добрый день, Все у меня работает, только не дает покоя один вопрос. Я взял и подставил из примера код, да только не понимаю, что в нем. Из моей формы с гридом frm2 вызывается форма, назовем ее frmEditor, с editbox - ом. Вызов: Код: sql 1.
А в Init дочерней формы : Код: sql 1. 2.
Это все работает, только смысл последнего кода для меня закрыт. Просто из любви к искусству, может поясните, как и чего работает в нем и где про это читать? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 15:03 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
И еще вопрос по мемо-полю в гриде. Теперь у меня в гриде в колонке с мемо-полем встроен editbox вместо текстбокса. Возник такой эффект, когда был встроен текстбокс пользоатель мог перемещать курсор в одной строке по ячейкам грида при нажатии клавиш tab, enter и стрелки. После замены на editbox "залипает" в ячейке с мемо, выйти из нее возможно только с помощью tab или уже кликом мыши на другой ячейке. Как вернуть, что бы клавиши работали как раньше и сохранить editbox в гриде ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.11.2015, 16:33 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
DmitryKn, Вообще убери из грида Мемо поле, оно все равно не видно в таблице. На форму помести кнопку, например "Ред. Прим." с вызовом другой модальной формы в которой редактируется текст примечания, и по кнопке "Сохранить" переставляешь ALIAS на таблицу c твоим memo и Repla- сишь текст в него. То есть в новой модальной форме будет обычный editBox и кнопка сохранить со свойством terminate или ThisForm.Release в Valid Плюс в том же Valid ставишь sele XXX - (твоя таблица) Replace YYY with This.Value (присваеиваем значение из editBox в твое поле) Если же юзер нажмет крестик на окне , то значение не сохраняется. Так даже лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 12:09 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
DMITRY_PEREDISTYDmitryKn, Вообще убери из грида Мемо поле, оно все равно не видно в таблице. На форму помести кнопку, например "Ред. Прим." с вызовом другой модальной формы в которой редактируется текст примечания, и по кнопке "Сохранить" переставляешь ALIAS на таблицу c твоим memo и Repla- сишь текст в него. То есть в новой модальной форме будет обычный editBox и кнопка сохранить со свойством terminate или ThisForm.Release в Valid Плюс в том же Valid ставишь sele XXX - (твоя таблица) Replace YYY with This.Value (присваеиваем значение из editBox в твое поле) Если же юзер нажмет крестик на окне , то значение не сохраняется. Так даже лучше. Добрый день, тезка ) так нет, конечно же, мемо-поля в гриде, просто мемо-поле controlsourse колонки грида, и в нем , в гриде , editbox вместо текстбокса, но ввод-чтение содержимого мемо-поля происходит, как ты и советуешь, и коллеги ранее, в отдельной модальной форме с еще одним editbox-ом. Тут уже вопросов не возникает. Другое дело, что пришлось в гриде заменить textbox на editbox, что бы корректно вызывалась модальная форма, если вызывать ее из текстбокса, то одновременно с ней вызывается и editor, т.е. встроенное окошко мемо-поля VFP. Теперь в гриде едитбокс, но при прохождении курсора по строке грида с помощью стрелок или enter, он на этом едитбоксе "залипает", видимо, из-за свойств самого едитбокса, только tab дает возможность перемещения. Т.е. при если курсор попал на это поле, то с помощью стрелок нельзя перейти ни на строки выше-ниже, ни на ячейки влево-вправо. А прописывать активацию соседних ячеек по keypress - громоздко и не очень правильно, имхо, должна быть какое-то иное решение, настройка там, или что-то еще, просто я не в курсе и нарыть не могу. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 13:32 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
Убрать столбец с мемо-полем из грида ваще. Если хочется все таки что-то показывать пользователю добавить столбец с вычисляемым полм с, например - Left(myMemo,250), и стандартным текстбоксом ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 13:56 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
BurnУбрать столбец с мемо-полем из грида ваще. Если хочется все таки что-то показывать пользователю добавить столбец с вычисляемым полм с, например - Left(myMemo,250), и стандартным текстбоксом Нет, убирать - неправильно. Пользователь должен иметь возможность не только посмотреть запись, но и редактировать, и это для каждой строки, поэтому и в гриде. Такая возможность востребована, из практики. Нет никаких уважительных причин отказываться от использования мемо в моем случае, тем более, что все практически работает. стандартный текстбокс приводит к одновременному вызову окошка Editor VFP и моей модальной формы. А вот едитбокс - вызывает форму нормально, но не удобная навигация. Может, можно вызов стандартного окошка Editor как-то отключить? Тогда текстбокс вернуть можно, в остальном он устраивает более чем. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 14:48 |
|
Memo - поле в гриде
|
|||
---|---|---|---|
#18+
>Может, можно вызов стандартного окошка Editor как-то отключить? Тогда текстбокс вернуть можно, в остальном он устраивает более чем. Обрабатываете коды нажатых кнопок самостоятельно. Но ващето Владимир уже указал правильное решение: Однако лучше сделать по другому. Справа от Grid расположи один объект EditBox, куда и выводи содержимое мемо текущей записи. Просто в качестве ControlSource укажи нужное memo-поле. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2015, 23:53 |
|
|
start [/forum/topic.php?fid=41&fpage=21&tid=1582212]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
2ms |
others: | 292ms |
total: | 448ms |
0 / 0 |