WinDev - первые опыты
Добавлено: 18 Июнь 2012, 13:53
Сделал пробную прогу - КНИЖНЫЙ КАТАЛОГ(может чуть сложнее ТЕЛЕФ.СПРАВОЧНИКА).
Первые впечатления:
1) Функциональная незавершенность типовых шаблонов (Browse, Form, Tree). Генерируемый RAD код требует ручных доработок. Например:
Для броуза генрируится станд кнопки Validate/New/Modify/Delete и т.д. После модификации записи возвращаемся в броусе на текущую запись (как и должно быть). А если отменить модификацию - улетаем неизв на какую запись. Неудобно! Получается надо обрамлять ручками вызов Win_Form операторами сохр/восст позиции?
2) Использую шаблон TreeViewTable. Сгенерировал - работает. Не хватает станд кнопок Collaps/Expand.Ладно, добавляем ручками. Вставляем код - TableCollapseAll(...)/TableExpandAll(..). Не очень красиво - обрамляем вызовы операторами HourGlass(True/False). Уже лучше. Не хватает кнопки Modify. Ладно, добавляем ручками. Вставлем код Open(Win_Form...). Работает. Но теперь надо рефрешить дерево после модификации. Добавляем код TableDispla(....). Работает, но. О Ужас!, после обновления дерева оно полностью разворачивается (ExpandAll) и позиционируется черти- куда. Надо запоминать состояние и дерева и позицию записи!И все ручками! Напрягает учитывать все эти нюансы.
3) После добавления RussianLang в проект стандартные диалоги в сообщениях (например, на Подтверждение удаления) оказываются просто пустыми (незаполненными даже какими-нибудь англояз строками (Yes/No и т.д.). Приходится редактирвать везде по тексту кода. Вроде бы для централиз трансляции сообщений есть средство WDMsg, но оказывается это опционально - приобретается за отд. плату.
4)Через TPS ODBC импортирую данные в HyperFileClassic(HFC - родной формат для WinDev). Все богатство операторов обработки данных только для формата HFC. C источникам ODBC - работа через SQL-запросы и очереди. Т.е. стандартизации на уровне драйверов нет. Просто используй соверш другие операторы и т.д. Например,
чтобы узнать колич записей в HFC-файле достаточно оператора HnbRec(FileName), а для ODBC пришлось огород городить
//records count
IF SQLExec(sSQLQueryCntRazdel,"QRY_RAZDEl_COUNT") THEN
IF SQLFetch(QRY_RAZDEL_COUNT)=0 THEN
nCountRazdel=SQLGetCol("QRY_RAZDEL_COUNT",1)
//Info("Count=",nCountRazdel)
PROGBAR_RAZDEL..MaxValue=nCountRazdel
END
END
SQLClose("QRY_RAZDEL_COUNT")
А количество записей понадобилось для того, чтобы правильно выставить границы PROGRESS_BAR(его состояние тоже управлется ручками в цикле, т.к. шаблона Process-процедуры я в WinDev не нашел)
Вывод (на сегодняшний момент моих познаний WinDev): учетно-бухгалтерские проги переводить на WinDev рано, а вот что-нибудь нестандартное (в том чиле работа с Inet, USB, BlueTooth, Maps, навигаторами, iPod и т.д.) очень даже можно.
Первые впечатления:
1) Функциональная незавершенность типовых шаблонов (Browse, Form, Tree). Генерируемый RAD код требует ручных доработок. Например:
Для броуза генрируится станд кнопки Validate/New/Modify/Delete и т.д. После модификации записи возвращаемся в броусе на текущую запись (как и должно быть). А если отменить модификацию - улетаем неизв на какую запись. Неудобно! Получается надо обрамлять ручками вызов Win_Form операторами сохр/восст позиции?
2) Использую шаблон TreeViewTable. Сгенерировал - работает. Не хватает станд кнопок Collaps/Expand.Ладно, добавляем ручками. Вставляем код - TableCollapseAll(...)/TableExpandAll(..). Не очень красиво - обрамляем вызовы операторами HourGlass(True/False). Уже лучше. Не хватает кнопки Modify. Ладно, добавляем ручками. Вставлем код Open(Win_Form...). Работает. Но теперь надо рефрешить дерево после модификации. Добавляем код TableDispla(....). Работает, но. О Ужас!, после обновления дерева оно полностью разворачивается (ExpandAll) и позиционируется черти- куда. Надо запоминать состояние и дерева и позицию записи!И все ручками! Напрягает учитывать все эти нюансы.
3) После добавления RussianLang в проект стандартные диалоги в сообщениях (например, на Подтверждение удаления) оказываются просто пустыми (незаполненными даже какими-нибудь англояз строками (Yes/No и т.д.). Приходится редактирвать везде по тексту кода. Вроде бы для централиз трансляции сообщений есть средство WDMsg, но оказывается это опционально - приобретается за отд. плату.
4)Через TPS ODBC импортирую данные в HyperFileClassic(HFC - родной формат для WinDev). Все богатство операторов обработки данных только для формата HFC. C источникам ODBC - работа через SQL-запросы и очереди. Т.е. стандартизации на уровне драйверов нет. Просто используй соверш другие операторы и т.д. Например,
чтобы узнать колич записей в HFC-файле достаточно оператора HnbRec(FileName), а для ODBC пришлось огород городить
//records count
IF SQLExec(sSQLQueryCntRazdel,"QRY_RAZDEl_COUNT") THEN
IF SQLFetch(QRY_RAZDEL_COUNT)=0 THEN
nCountRazdel=SQLGetCol("QRY_RAZDEL_COUNT",1)
//Info("Count=",nCountRazdel)
PROGBAR_RAZDEL..MaxValue=nCountRazdel
END
END
SQLClose("QRY_RAZDEL_COUNT")
А количество записей понадобилось для того, чтобы правильно выставить границы PROGRESS_BAR(его состояние тоже управлется ручками в цикле, т.к. шаблона Process-процедуры я в WinDev не нашел)
Вывод (на сегодняшний момент моих познаний WinDev): учетно-бухгалтерские проги переводить на WinDev рано, а вот что-нибудь нестандартное (в том чиле работа с Inet, USB, BlueTooth, Maps, навигаторами, iPod и т.д.) очень даже можно.