|
|
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
Хотел бы посоветоватся ... Решил замарочится одной штукой... Сама задача (собственно): Динамически создавать форму, контролы на которой берутся в соответствии указанному DataSet... причем если это значение подставляемое (Id), то на форме соответветственно этому полю должен организовыватся какой нить ComboBox, если Data по соотв. DataTimeEdit ... ну и так далее... Пример ДатаСет : Дата Возраст Пол Форма Дата DataTimeEdit Возраст Edit Пол ComboBox мне кажеться кто нить полюбому задавался такой задачей, просто что бы ускорить свою работу )) Решение не нужно, просто что бы не нарыватся на одни и теже грабли, хотелось бы послушать знающего человека... Всем заранее спасибо! ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 11:54 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
Хотел бы посоветоватся ... Решил замарочится одной штукой... Сама задача (собственно): Динамически создавать форму, контролы на которой берутся в соответствии указанному DataSet... причем если это значение подставляемое (Id), то на форме соответветственно этому полю должен организовыватся какой нить ComboBox, если Data по соотв. DataTimeEdit ... ну и так далее... Пример ДатаСет : Дата Возраст Пол Форма Дата DataTimeEdit Возраст Edit Пол ComboBox мне кажеться кто нить полюбому задавался такой задачей, просто что бы ускорить свою работу )) Решение не нужно, просто что бы не нарыватся на одни и теже грабли, хотелось бы послушать знающего человека... Всем заранее спасибо! ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 11:57 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
/topic/108310 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 11:58 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
Ну а в чем проблема ? 1 решение которое я вижу , это набрасать контролы , сделать их невидимыми и когда нужно показывать. и второе это все нужно для последующего редактирования ? ш (';') (V),(V),, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 12:04 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
Когда ты набрасываешь контролы ты уже к ним привязван... Я имею ввиду конструкцию динамического создания контрола и распределения на форме (взависимости от типа данных поля)... Что бы было к примеры 1000 представлений, и один код который реализует заполнение динамической формы динамическими контролами... :-)) И главное что бы это было универсально и быстро! ) Один раз вот так потратив время можно в последствии создавать представления на сервере, и не морочиться с кодом клиентского приложения ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 12:18 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
ну тогда , нужно знать заранне что за тип поля и к нему уже заранее привязать контролл вот тут вот , логику надобно продумать ... ну вот допустим пример (то что в голову на данный момент пришло) Код: plaintext 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. больше пока в голову ничего не пришло :) ш (';') (V),(V),, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 12:54 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
думал обсолютно так же ... Самый простой выход ... но может есть какой то другой способ... Хотелось бы просто об этом больше узнать, прежде чем за это браться .. ) Я думаю что бы не сорить на серваке, надо в одном датасете задавать типы полей, а поля которые содержат такие сведения скрывать при открытии ДатаСета, отслеживая какой нить признак... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 13:01 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
а можно еще оду табличку завести где в табличке(пусть будет table_controls) поля fieldname, control берещь из всех таблиц пихаещь назваение полей в таблицу table_controls, а потом на клиенте допустим из какойто таблицы делаешь выборку (select * from sotrudniki) и находишь название полей Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. а по мне так проше , просто смотря какую СУБД юзаещь на MSSQL можно из всех таблиц выдернуть название полей и запихнуть в эту таблицу , то есть ручного труда почти никакого :) только поля с контролами ассоциировать. ш (';') (V),(V),, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 14:20 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
тоесть можно вообще сделать еще покоректней скриптом что бы небыло этого некрасивого цикла . Код: plaintext 1. 2. 3. 4. 5. ш (';') (V),(V),, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 14:23 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
а можно следующим образом ... )) View->Close(); View->Open(); Panel->Height = View->FieldCount * 40; Panel->DestroyComponents(); for (int ii=0;ii<View->FieldCount;ii++) { TLabel *NewLabel = new TLabel(Panel); NewLabel->Parent = Panel; NewLabel->Top = 10 + ii * 40; NewLabel->Left = 100; NewLabel->Caption = View->Fields->Fields[ii]->DisplayName; switch (View->Fields->Fields[ii]->DataType) { case 24: {TDBEditEh *NewEdit = new TDBEditEh(Panel); NewEdit->Parent = Panel; break;} case 3: {TDBNumberEditEh *NewEdit = new TDBNumberEditEh(Panel); NewEdit->Parent = Panel; NewEdit->EditButton->Visible = true; break;} case 11: {TDBDateTimeEditEh *NewEdit = new TDBDateTimeEditEh(Panel); NewEdit->Parent = Panel; break;} } TDBEditEh *NewEdit = (TDBEditEh*)(Panel->Controls[ii*2 + 1]); NewEdit->OnKeyDown = DBGridEh1KeyDown; NewEdit->DataSource = Data; NewEdit->DataField = View->Fields->Fields[ii]->DisplayName; NewEdit->Top = NewLabel->Top; NewEdit->Left = NewLabel->Left + 100; } Таким образом мы избавляемся от одной таблицы... Но отсается открытым вопрос подстановки из списков... Это можно решить через: в Датасет после Полей (в которых стоят подставленные значения) пускать поля которые содержат нужные ключи имена задавать через " Id " + "имя ключевого поля", эти поля разумеется скрываем, ну и ключевые поля по именам похожи на таблицы из которых мы берем эти значения .. )) следовательно в ComboBox->Lookup ... можно добавить " tbl " + "имя ключевого поля"... если схема идеальна то работать должно безотказно ... однако может будут варианты ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 15:11 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
О, эта как раз наша прога. Ora+MFC. Граблей нет. А какие тут могут быть грабли? Это тот же самый скрипт rc из VC++. Можно сделать парсер из твоего представления в rc. А потом создавать диалог на этом шаблоне. Кстати... у нас не так. А зря. Это потому что я тут недавно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 15:15 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
Блин... расплодил ветки :) авторИ главное что бы это было универсально и быстро! Храни в базе шаблоны: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И ничё разбирать не нада.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 15:19 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
О! .. нифига! а в Builder есть такое понятие как шаблон?! ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 15:30 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
есть :) ш (';') (V),(V),, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 16:20 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
2CEMb только не путай енто же Builder C++ там немного не так :) 2DжеFF а шаблоны он имел ввиду не STL ш (';') (V),(V),, Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 16:22 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
ну я тоже так неадеюсь )) ПОтому как STL для меня пока вообще темный лес )) Ну и вообще многа еще всякого чего я не понимаю )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 16:26 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
CEMb а что такое парсер... И каким образом хранить шаблон в на Серваке?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 16:28 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
DжеFFCEMb а что такое парсер... И каким образом хранить шаблон в на Серваке?! ну такая штука котороая разбирает строку ну или Парсер - это шняга, которая какую-то белеберду, включающую в себя много всего, разделяет на нужные тебе компоненты.(c) не мое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2004, 16:33 |
|
||
|
Вот такая вот задача!
|
|||
|---|---|---|---|
|
#18+
Не шняга, а прибамбас :) Что такое шняга, спросите у Гоблина, он вам ничего хорошего не расскажет :) А шаблоны (может я немного и напутал, но совсем немного и не по существу) везде одинаковые, ибо это от API, а и VC и BC API умеют. Шаблон хранишь на сервере в виде строки например, потом вычитал шаблон и сказал волшебное слово CreateDialogIndirect у которого вторым параметром msdn lpTemplate [in] Pointer to a global memory object containing a template that CreateDialogIndirect uses to create the dialog box. A dialog box template consists of a header that describes the dialog box, followed by one or more additional blocks of data that describe each of the controls in the dialog box. The template can use either the standard format or the extended format. In a standard template, the header is a DLGTEMPLATE structure followed by additional variable-length arrays. The data for each control consists of a DLGITEMTEMPLATE structure followed by additional variable-length arrays. In an extended dialog box template, the header uses the DLGTEMPLATEEX format and the control definitions use the DLGITEMTEMPLATEEX format. After CreateDialogIndirect returns, you can free the template, which is only used to get the dialog box started. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2004, 07:30 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32613149&tid=2034639]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
94ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 273ms |
| total: | 476ms |

| 0 / 0 |
