Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
IF nButton=2 DO mnurah.mpr ENDIF В гриде 3 записи. Если щёлкать на одной из них - Grid.MouseDown не сработывает. На пустом месте - работает. Кто-нибудь - подскажите в чём дело и как сделать нормально. Да, у меня такаяже ситуация и на Grid.DblClick. Что я не то делаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 10:20 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Когда в Grid'e выделена ячейка, и Вы щёлкаете по ней мышью, то сообщение о событие посылается контролу в этой ячейке, а не контейнеру (Grid). Поэтому обработку события нужно выполнять в контроле ячейки (если Вы ничего не меняли - то это TextBox). Код обработки события нужно написать в соответствующих методах для каждого TextBox'a Grid'a, из которого нужно вызвать меню (Ваш пример) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 10:29 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Сделал так как вы сказали. Не работает ГАД!!! Может быть потому что я в Refresh настраиваю Grid сам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 10:34 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Я бы рекомендовал использовать метод RightClick. Метод вызывается при нажатии на правую кнопку мыши. > я в Refresh настраиваю Grid сам А где и как Вы это делаете, можно посмотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 10:59 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
this.ColumnCount =4 this.column1.header1.Alignment= 6 this.column2.header1.Alignment= 6 this.column3.header1.Alignment= 6 this.column4.header1.Alignment= 6 this.column1.header1.Caption="? ???." this.column2.header1.Caption="????" this.column3.header1.Caption="???????" this.column4.header1.Caption="?????" this.column1.Width=50 this.column2.Width=80 this.column3.Width=340 this.column4.Width=90 this.column1.ControlSource='tmprah.numrah' this.column2.ControlSource='tmprah.datopl' this.column3.ControlSource='tmprah.name' this.column4.ControlSource='tmprah.summa' this.column1.Alignment = 4 this.column2.Alignment = 4 this.column3.Alignment = 4 this.column4.Alignment = 4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 13:51 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Я так понимаю, что Grid Вы создаёте в конструкторе форм, там же присваиваете свойству RecordSource имя таблицы (курсора) и в методе MouseDown прописываете код вызова меню. А в колонках Grid'a поля записи выводятся в том же порядке, в котором они описаны в таблице. Так же в конструкторе форм в методы TextBox'ов Вы так же прописываете некоторый код. Что происходит потом? В методе Refresh Grid'a вы пишете: this.ColumnCount = 4 По этой команде Grid заново создаёт коллекцию объектов Column, и, соответсвенно, вложенных в них объектов TextBox. То есть всё, что Вы сделали в констукторе форм, бесследно исчезает (кроме собственно настроек для самого объекта-контейнера Grid). Действительно ли нужно изменять количество колонок в Grid'e? Если нет, то удалите из Вашего метода Refresh указанную выше строку, и всё заработает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 14:12 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Увы, не пошло. Та же ситуация. Могу скинуть форму, может Вы незамутнённым взглядом найдёте ошибку или выход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 14:45 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Давайте. Упакуйте форму и приложите к сообщению. Так же более подробно пропишите, что хотите поиметь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 15:11 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Высылаю весь проэкт. Интересно было бы услышать мнение, т.к. в Visual Foxpro начал писать недавно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 16:15 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Скачал. К сожалению, сегодня уже не успеваю ответить - рабочий день закончился. Посмотрю дома и отвечу в понедельник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 16:50 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Добро ! До понедельника!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 17:04 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
а почему в проджекте при компиляции сне выдает GENERATOR: Menu MNURAH is invalid LINE NUMBER: 676 и нет возможности глянуть это меню... и тут IF nButton=2 DO mnurah.mpr ENDIF самого файла mnurah.mpr в проджекте нету.... а открыть его тоже не могу... ибо Menu file is invalid... я туплю или все же в этом проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 17:17 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
2 Malec ух ты!!! Да мы оказывается живем в одном городе!!!! пиши на мыло или в аську 263662089 приятно встретить земляка!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 17:27 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Какая версия FoxPro? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 17:57 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
конец работы очень спешу вот прикрепленный пример.. грид и на нем по правой кнопке мыши вызывается меню... 1 - мень есть shortcut 2 - mpr файл с меню ДОЛЖЕН существовать.. у тебя же его вроде как нету.. то есть НЕ скомпилен... Надеюсь я Правильно понял ЧТО тебе нужно??? Если что пиши!! Вадим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2004, 18:06 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Сначала о той ошибке, которая стала причиной данной темы. Дело в том, что у Grid есть такая особенность, что если произвести замену RecordSource, то произойдет сброс вообще ВСЕХ настроек Grid, в том числе и свойств и методов вложенных объектов (Column, Header, TextBox). Чтобы избежать этой неприятности надо ПЕРЕД изменением источника данных обязательно его обнулить. Т.е. в данном случае надо поступить так: Событие FrmScreen.Container1.Command5.Click() This.parent.Grid1.RecordSource ='' SELECT ... FROM ... This.parent.Grid1.RecordSource ='tmprah' В этом случае все созданные методы внутри Grid остануться работоспособными. Более того, остануться неизменными все настройки столбцов. Надо будет восставновить только ControlSource столбцов. ========================================== Далее я хотел пройтись по найденным ошибкам, но на втором десятке понял, что это бессмысленное занятие. Поэтому попытаюсь описать не сами ошибки, а их причины. Основная проблема в том, что Вы используете стиль программирования процедурного языка в объектно-ориентированной среде. В принципе, можно и так (программа ведь работает!). НО! Такой подход фактически связывает как программиста, так и пользователя по рукам и ногам. "Шаг вправо, шаг влево - побег!". Мало того, что сужается инструментарий средств как пользователя, так и программиста, но такую программу крайне сложно развивать (вносить улучшения, модификации). Принципиальное отличие объектно-ориентированного подхода от процедурного заключается в том, что программа "собирается" из максимально независимых друг от друга объектов. Т.е., например, форме, по большому счету, должно быть абсолютно все-равно из какого места программы она была вызвана. У нее есть набор входных параметров и набор выходных параметров. Вот при помощи них и происходит "сборка" программы. У Вас же явный "процедурный" стиль. Когда модули вызываются строго в определенном месте и, более того, они жестко завязаны на определеное состояние среды окружения (вместо того, чтобы формировать эту среду для каждого модуля в отдельности). Еще один пласт ошибок связан со слабым знанием собственно языка программирования. Имею в виду команды и функции. Многие проблемы просто не возникли бы, если бы Вы знали, что существуют альтернативные пути решения (другие команды и функции), а также некоторые особенности работы тех или иных команд. В FoxPro фактически под каждую задачу есть как минимум 2...3 альтернативные команды. Настоятельно рекомендую при чтении описания к той или иной команде обащать внимание на разделы "Remarks" (особенности использования) и "See Also" (альтернативные решения) Следующая проблема заключается в том, что Вашу программу практически невозможно отлаживать! Впрочем, в большой степени - это проблема "процедурного" стиля программирования. Но надо же было предусмотреть возможность запуска программы в режиме отладки. Нельзя же после каждой проверки заново запускать среду FoxPro. Для проверки, как именно была запущена среда FoxPro, можно использовать, например, _VFP.StartMode или какой-либо другой способ. Интерфейс программы, мяго говоря, далек от совершенства. Можно, конечно, списать это на личные вкусы и предпочтения. Но ведь Вы делаете программу не для себя, а для кого-то другого. Вы уверены, что ваши "фокусы" с интерфейсом "обрадуют" конечного пользователя? Подробно, о стиле пользовательского интерфеса можно почитать в книге на сайте http://www.uibook1.ru/ Еще советовал бы почитать размещенные здесь статьи по FoxPro специально для начинающих: http://www.foxclub.ru/kb/index.php?sid=45732&aktion=anzeigen&rubrik=004 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 09:29 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Фокс 8.0 с сервис паком 1. Потому и меню не открывается. Только что пришёл на работу. Буду разбираться с твоими пожеланиями! Спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 10:00 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
to malec Возвращаю Ваш проект с исправлениями. Ошибка была в том, что Grid в форме frmaddrah блокировался в методе Click кнопки Command2 (Додати). См. правку в mainprg.prg - используемый мною приём запуска приложения, а так же в TreeViewTovar.Expand и Command2.Click формы frmaddrah. В объекты Grid.ColumnN.Text1 в метод RigthClick вставлен код вызова контекстного меню. Успехов!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 10:05 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Для Вячеслава Клепинина. Спасибо!!! Будем посмотреть! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 10:08 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
2 ВладимирМ если честно мне очень стыдно... но нельзя ли по-подробней о системе отладки программы... Вы имеете в виду вставлять в проблемных местах AERROR + MESSAGEBOX с выводом возникших ошибок или нечто более сложное... я, увы также ожибки нахожу именно запустив среду ВФП, что не есть хорошо... 2 Malec Коллега и землак - приятно встретиться на далеком форуме..... отзовись! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 10:19 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
to ВладимирМ Ну нельзя же так - сразу фэйсом об тэйбл. Ну учится человек - надо порадоваться этому! Появится опыт - и GUI научится делать красивый. Тем более, если заказчики будут требовательные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 10:34 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
Вообще-то, мне тоже было бы интересно послушать про методологические аспекты отладки в изложении ВладимираМ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 10:43 |
|
||
|
Grid.MouseDown
|
|||
|---|---|---|---|
|
#18+
FM32YO aka KID Все несколько проще. Как правило, в режиме отладки нужны несколько другие настройки. Вот в головном модуле и пишешь что-то вроде IF _VFP.StartMode=0 * Запуск из среды FoxPro ELSE * Другой способ запуска (скорее всего EXE или APP) ENDIF Можно еще посмотреть расширение запущеной проги IF PROGRAM(-1)=1 AND INLIST(UPPER(JustExt(SYS(16))),"EXE","APP")=.F. * Если попали сюда - это значит, что данная программа запущена в режиме отладки * т.е. как PRG или FXP. Значит, необходимо сделать кое-какие настройки * Задание тестовых значений параметров для отладки ELSE ENDIF Можно еще несколько вариантов такой проверки сделать. Соответсвенно и настройки делаешь. Например, давать команду QUIT в режиме отладки - последнее дело. Что так и будешь перегружаться или комментарии ставить? Ну, а на ошибке выскочит окно сообщения и можно сделать Suspend и перейти в окно Debugger, чтобы посмотреть в чем собственно ошибка. Еще почитай описание о полезной команде ASSERT, факт работы которой определяется глобальной настройкой SET ASSERT ON/OFF Вячеслав Клепинин Про GUI - это уже я "до кучи". Действительно, не принципиально. Пользователи и без меня от души "посоветуют" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2004, 10:53 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32530037&tid=1596544]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
80ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 441ms |

| 0 / 0 |
