|
|
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. На форме имеется PageControl с множеством вкладок. На каждой вкладке имеется DBGrid, DBEdit и др. контролы DB, причем db контрлы располагаются ни непосредственно на TabSheet а на Panel, др. словами имеется вложенность. Можно ли при смене вкладок открыть датасеты на которых завязаны DB контролы расположенные на текущей вкладке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 00:12 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Есть parent и owner. owner - это форма-владелец. Делай цикл по owner и проверий тип или проверяй наличие нужного свойства, например свойства FieldName. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 00:17 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Classes.TComponent.Components У каждого контрола есть список дочерних контролов. Пройди их все рекурсивным перебором и найди нужные тебе типы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 00:17 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Не нужно привязываться к Parent. Используйте ActivePage. Завтра вам понадобится не только Гриды открывать, а ещё что нибудь Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2018, 00:39 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Помогите разобраться. Если установлено что компонент имеет свойство как его изменить Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 11:08 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Алексаша, .. is .. as ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 12:03 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Док, и перебирать всевозможные варианты DB контролов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 16:31 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Алексашаи перебирать всевозможные варианты DB контролов? все перебирать не надо, фильтруй по условию Код: pascal 1. 2. 3. 4. 5. зы. ты бы приложил какой-нибудь минимальный проект, кол-во помощников увеличилось бы на порядок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 19:29 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Док, На вкладках PageControl располагаются различные контролы DBGrid, DBEdit и др. и получается что надо так Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 20:46 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Алексашаполучается что надо так получается так, как напишешь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 21:35 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
сейчас наткнулся на SetPropValue получается можно попробовать так ... Код: pascal 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 22:53 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Алексашасейчас наткнулся на SetPropValue получается можно попробовать так ... Можно, но певерьте не нужно. Дайте датасетам нормальные имена и откройте их без всякого перебора контролов на форме. Это и проще и понятнее изменять в дальнейшем и меньше кода занимает. Вы накропали уже 15 строчек кода для открытия датасета привязаного к гриду. За эти 15 строчек можно открыть 15 датасетов, без всякого рекурсивного перебора и более понятным кодом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2018, 23:25 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
DimaBr, на данный момент 15 вкладок на каждой как минимум 2 датасета, порядок вкладок меняется. А так я подумал один раз написал 15 строчек и забыл привязывать соответствующие датасеты к порядковому номеру ТабШита на событие Change. Так мне показалось, что правильнее. Спасибо за высказанное мнение, может и вправду откажусь от такого подхода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 00:01 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Порядок меняется и что ? Имена то у вкладок не меняются. Кроме Гридов завтра появятся DB-контролы со датасетами (например Lookup-ы), которые тоже нужно будет открывать, а послезавтра попадётся Master/Details и прежде чем открыть этот Details нужно задать ему параметры от мастера. То есть его открытие не зависит от вкладки, а зависит от другого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 00:24 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
В исходной задаче были датасеты т.е. наследники TDataSet, которые надо было открывать. А теперь уже "всевозможные варианты DB контролов". Определился бы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 02:02 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
white_niggerВ исходной задаче были датасеты т.е. наследники TDataSet, которые надо было открывать. А теперь уже "всевозможные варианты DB контролов". Определился бы... ТС ищет db - контролы. Когда найдет - будет искать их TDataSource, потом - в TDataSet's и открывает их. Потом выяснит, что некоторые db контролы имеют больше одного TDataSource, будет искать и их. Потом - что некоторые db - контролы могут работать, не используя TDataSource. А еще у некоторых этот самый TDataSource запрятан чуть глубже, чем обычно. А еще некоторые могут вообще обходиться без прослойки TDataSource. Потом выяснится, что важен порядок активации датасетов. И т.д., движуха. Сик итур ад астра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 03:20 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Алексаша Можно ли при смене вкладок открыть датасеты на которых завязаны DB контролы расположенные на текущей вкладке? Можно) У меня тоже самое. Сам ответил: Код: pascal 1. 2. 3. 4. 5. 1. Если эта форма родитель, то сделай это в базовой форме -тогда такой функционал перейдёт все наследники. 2. Не используй RTTI 3. Раньше, я выносил это в отдельный класс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 10:28 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
В результате, я не поленился и сделал вот так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Да, это требует переделки всех контролов, но потом код гораздо легче обслуживать и значительно повышает его читабельность. В общем, в результате ты сделаешь всю туже самую работу, только растянув это на много строчек кода перебирая Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 10:29 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
Valery_B Код: pascal 1. 2. Почему не сделать так? Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 15:18 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Valery_B Код: pascal 1. 2. Почему не сделать так? Код: pascal 1. 2. Что бы переменную не объявлять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 15:25 |
|
||
|
Перебор DB контролов на вкладке
|
|||
|---|---|---|---|
|
#18+
DimaBrЧто бы переменную не объявлятьДа. Лучше два раза вызвать GetInterface ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2018, 15:38 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39735687&tid=2040097]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 520ms |

| 0 / 0 |
