|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
Здравствуйте. имеется код который необходимо прописать в lostfocus у 65 полей грида. Пробовал засунуть код в процедуру и в lostfocus прописать её, но fox ругается на Код: java 1.
Как это обойти, а то код объемный прописывать в каждое поле грида не хочется. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2018, 21:17 |
|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
andrepontЗдравствуйте. имеется код который необходимо прописать в lostfocus у 65 полей грида.Для этого придумано ООП. Пробовал засунуть код в процедуру и в lostfocus прописать её, но fox ругается на Код: java 1.
Как это обойти, а то код объемный прописывать в каждое поле грида не хочется.Что ЭТО? Какое отношение этот код имеет к LostFocus()? Зачем менять ИСТОЧНИК данных? ВЫ вообще понимаете назначение свойства ControlSource? Вы для какой задачи выбрали такой... неочевидный способ решения? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2018, 21:55 |
|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
Я вычисляю сумму полей таблицы, присваиваю переменной NN_1 это значение, а потом мне необходимо это значение отобразить в итоговой таблице куда через ControlSource я переменную и вывожу. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2018, 22:04 |
|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
Чтоб было понятно мне нужно вот эту конструкцию прописать в lostfocus каждого поля грида, а их 65 шт. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2018, 23:18 |
|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
Ничего не понял, но попробую угадать: в lostfocus() ты прописал что-то типа Код: sql 1.
а в my_proc Код: sql 1. 2.
Если так, то так нельзя. Надо передавать ссылку на форму или грид в параметрах, т.е. Код: sql 1. 2. 3. 4. 5.
Или добавить форме метод my_method() и из lostfocus() вызывать его Код: sql 1.
Чтобы не прописывать 65 раз вызов одного и того же, можно перебрать их в цикле и привязать вызов через BINDEVENT() PS Код 21663253 точно не для lostfocus(). Ты бы книжку какую почитал по фоксу, раз уж пишешь на нем. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2018, 07:24 |
|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
andrepontЧтоб было понятно мне нужно вот эту конструкцию прописать в lostfocus каждого поля грида, а их 65 шт.Не надо повторять мантру про 65 штук. От этого идиотское желание не перестанет быть идиотским. Далее разбираем код. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
ЭТО заменяется на 1(один) запрос с выводом результата в массив NN.NN_GF = NN_13+NN_14+NN_15+NN_16+NN_17+NN_18+NN_19+NN_20+NN_21+NN_22+NN_23+NN_24 Это меняется на NN_GF = NN[13]+NN[14}+NN[15}+NN[16]+NN[17]+NN[18]+NN[19]+NN[20]+NN[21]+NN[22]+NN[23]+NN[24] ThisForm.grid2.column1.ControlSource = ALLTRIM(STR(NN_1)) ThisForm.grid2.column2.ControlSource = ALLTRIM(STR(NN_2)) ThisForm.grid2.column3.ControlSource = ALLTRIM(STR(NN_3)) ThisForm.grid2.column4.ControlSource = ALLTRIM(STR(NN_4)) ThisForm.grid2.column5.ControlSource = ALLTRIM(STR(NN_5)) ThisForm.grid2.column6.ControlSource = ALLTRIM(STR(NN_6)) ThisForm.grid2.column7.ControlSource = ALLTRIM(STR(NN_7)) ThisForm.grid2.column8.ControlSource = ALLTRIM(STR(NN_8)) ThisForm.grid2.column9.ControlSource = ALLTRIM(STR(NN_9)) ThisForm.grid2.column10.ControlSource = ALLTRIM(STR(NN_10)) ThisForm.grid2.column11.ControlSource = ALLTRIM(STR(NN_11)) ThisForm.grid2.column12.ControlSource = ALLTRIM(STR(NN_12)) ThisForm.grid3.column1.ControlSource = ALLTRIM(STR(NN_13)) ThisForm.grid3.column2.ControlSource = ALLTRIM(STR(NN_14)) ThisForm.grid3.column3.ControlSource = ALLTRIM(STR(NN_15)) ThisForm.grid3.column4.ControlSource = ALLTRIM(STR(NN_16)) ThisForm.grid3.column5.ControlSource = ALLTRIM(STR(NN_17)) ThisForm.grid3.column6.ControlSource = ALLTRIM(STR(NN_18)) ThisForm.grid3.column7.ControlSource = ALLTRIM(STR(NN_19)) ThisForm.grid3.column8.ControlSource = ALLTRIM(STR(NN_20)) ThisForm.grid3.column9.ControlSource = ALLTRIM(STR(NN_21)) ThisForm.grid3.column10.ControlSource = ALLTRIM(STR(NN_22)) ThisForm.grid3.column11.ControlSource = ALLTRIM(STR(NN_23)) ThisForm.grid3.column12.ControlSource = ALLTRIM(STR(NN_24)) ThisForm.grid2.column13.ControlSource = ALLTRIM(STR(NN_G)) ThisForm.grid3.column13.ControlSource = ALLTRIM(STR(NN_GF)) [/src] А вот ЭТО вообще выкидывается за полной ненадобностью ибо установка источника должна производиться 1(один) раз и тут ну совершенно не нужны идиотские Altrim(Str()). И это можно сделать прямо в конструкторе формы. И использовать только NN[] и NN_GF. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2018, 09:13 |
|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
andrepont, Есть такой мультфильм "Следствие ведут колобки...". И там был фрагмент, когда они ехали на велосипеде по шпалам железной дороги. Их трясло и раскачивало в разные стороны. Неудобно. Поэтому они сделали вмятины в колесах велосипеда, чтобы эти вмятины попали на шпалы. И сразу езда стала ровной и приятной Так вот, Вы делаете то же самое. По железной дороге, вообще-то, ездят на поезде, ну, или на дрезине. Но никак не на велосипеде, пусть и с квадратными колесами Объект Grid предназначен для отображение содержимого ТАБЛИЦ. Т.е. неких СПИСКОВ. Он никак не предназначен для отображения переменных памяти. Сделать-то это можно, но, сильно подозреваю, Вам надо совсем не то, что в результате получится Не знаю, есть ли там где Вы живете эскалатор? Ну, в сериалах, наверное, видели. Это такая движущаяся лестница. Теперь представьте, что каждая ступень этой лестницы - это отдельная запись таблицы. А сам эскалатор - это Grid. Вы видите не все "ступени" (записи таблицы), а только те, которые попадают в область видимости. Те ступени, которые находятся "сверху". Чтобы просмотреть все "ступени" нужно "прокрутить" всю ленту эскалатора У Вас есть одно значение переменной памяти. Каким образом Вы можете "отобразить" эту переменную на "ступенях эскалатора"? Ну, очевидно, либо "приклеить" к ОДНОЙ ступеньке, либо заменить ОДНУ ступеньку. Обратите внимание - ОДНУ Возвращаясь, к ControlSource. Если речь идет о Column, то это замена ВСЕХ ступеней. Как Вы вообще себе представляете процесс, при котором вообще все ступени эскалатора выбрасываются и остается только одна? Бред это. Вот никто Вам ничего вразумительного посоветовать и не может. Все дают советы в рамках собственного понимания. Но, поскольку, все они "по умолчанию" предполагают некоторые "совершенно очевидные" вещи, то теперь уже Вы их не понимаете Прикрепите здесь во вложении либо свой проект, либо картинку того, что Вы хотите увидеть в результате. Ну, хоть в Excel или Word нарисуйте, что должно получиться ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2018, 13:10 |
|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
ВладимирМ, да наверняка очередная попытка нарисовать на гриде аналог электронной таблицы, то бишь excel'я. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2018, 14:48 |
|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
Гм... Если я правильно понял, то под Grid с отображением содержимого курсора npi, хочется отобразить Grid с суммами с результатам вычислений по полям этого курсора. Тогда это так делается Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.
Насчет сокрытия отрицательных значений можно потом уточнить. Если я саму идею правильно уловил ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2018, 15:54 |
|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
Здравствуйте. Спасибо за комментарии. Прошу сильно не пинать, т.к. в foxpro я 2-й месяц а до этого вообще программированием не занимался вот и приходится методом тыка разбираться т.к. в литературе не всегда понятно. В грид я эти расчеты вывожу для удобства восприятия. А суть в том что мне нужно посчитать суму выражений между полями таблицы и вывести их в грид для удобства восприятия в виде таблички. при этом скрыть отрицательные результаты. А потом посчитать итог, результатом которого будет сумма переменных с NN_13 по NN_24, но есть условие что если переменная меньше 0 то она является 0, т.к. иначе сумма будет недостоверна, далее поместить результат в переменную NN_GF и вывести её в последнюю колонку грида после всех переменных. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2018, 21:53 |
|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
Пример ВладимираМ понятен только как быть с отрицательными значениями. И можно ли переменные с NN_1 по NN_12 отобразить в первой строке, а переменные с NN_13 по NN_24 во второй? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2018, 22:04 |
|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
Вот фото того что должно получиться. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.09.2018, 22:06 |
|
Thisform.grid в процедуре.
|
|||
---|---|---|---|
#18+
Начинаем с того, что источник данных Grid - это таблица. Без вариантов. Значит, для Grid итогами нам надо создать таблицу. Можно временную (курсор). Но в любом случае, это должна быть таблица Судя по картинке, таблица должна иметь 13 столбцов (12 месяцев и год). Вот и создаем такую таблицу примерно так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Далее выполняется итоговый подсчет по таблице npi и получаем курсор с результатами этого расчета Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
А вот теперь, переносим данные из промежуточного результата расчета curSum в таблицу для отображения результата curTotal примерно так Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
Собственно, все. Источники данных Grid здесь не меняются. Как была временная таблица CurTotal, так и осталась. Просто меняется содержимое записей этой таблицы ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2018, 11:38 |
|
|
start [/forum/topic.php?fid=41&fpage=9&tid=1581752]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
others: | 294ms |
total: | 431ms |
0 / 0 |