Конференция "Основная" » Реализация интерфейса-мастера.
 
  • Kolan © (04.03.08 14:53) [40]
    > А у тебя тоже все статично.

    Ну а как без этого, хоть ListClass не править.


    > Захочешь добавить будешь править свой

    Этим мне и ненравится кейс… О чем собссно и вся ветка с самого начала…

    Имел это ввиду…
  • KSergey © (04.03.08 15:58) [41]
    Я не знаю что еще можно добавлять
    Я вроде все написал.

    По поводу статичности - не понятно о какой динамике речь. Что-то - в любом случае править: или код программы или метаданные в виде внешнего файла, к примеру (это для особых ценителей настроек без перекомпиляции).

    Про перечисления - я лишь говорю о том, что не надо тут использовать строковые константы. Просто не по делу тут строки.

    Короче принципиально архитектурно я не вижу как это все можно изменить так, чтобы при добавлении/изменении ничего еще и не править :)
  • Kolan © (04.03.08 16:00) [42]
    > ничего

    Не ничего, а мак. просто. :) Строковые мож и прям не поделу…
  • KSergey © (04.03.08 16:12) [43]
    > Kolan ©   (04.03.08 16:00) [42]
    > Не ничего, а мак. просто. :)

    Так опять же - это от ситуации зависит.
    Если переход межту отдельными шагами весьма не тривиален - то от case - не отвертеться. Ну либо от каких-либо метаданных, которые по сути будут этот case описывать. Усложняя "ядро".

    Если же логика простейшая - то [11].
  • oxffff © (04.03.08 19:40) [44]

    > Усложняя "ядро".


    Да нет здесь никакого усложнения вся логика перехода может быть посредоточена NodeStep, который запрашивает у контролера нужный переход по строке, по классовому типу и т.д.
    Причем переход может быть статичен,
    либо динамический передача параметра перехода (следующего шага) в конструкторе. Задача контролера выполнить действие по запросу нода, предоставить экземпляр типа по строке или классовому типу. И все. Причем действительно контроллер отвязан от логики (можно не перекомпилировать)
    А логика задается в Шагах.
  • oxffff © (04.03.08 19:47) [45]

    > oxffff ©   (04.03.08 19:40) [44]


    А шаги задаются на лету (DLL).
    Например шаг
      Выбор директории (класс TStepDirectorySelection(TAbstractStepClass)), где
    TAbstractStepClass=class of TAbstractStepClass;

    Controler.Add(TStepDirectorySelection.create(TStepConfirm)    <-параметр следующий шаг.
    Причем не обязательно определять порядок создания.
    Шаги можно доинициализировать в порядке добавления других шагов (естественно предусмотрев это в виде контракта).
  • oxffff © (04.03.08 19:48) [46]

    > oxffff ©   (04.03.08 19:47) [45]

    Sorry
    (TAbstractStepClass)) =  (TAbstractStep))
    TAbstractStepClass=class of TAbstractStep;
  • Игорь Шевченко © (04.03.08 21:42) [47]
    Автор, а у тебя сколько шагов и сколько различных форм вызывается ?
  • Kolan © (05.03.08 08:59) [48]
    > Автор, а у тебя сколько шагов и сколько различных форм вызывается
    > ?

    Где-то 25 ±5.
    Из них 1-2 используются в нескольких местах.
  • Игорь Шевченко © (05.03.08 10:21) [49]
    Kolan ©   (05.03.08 08:59) [48]

    Это как понимать ? Некоторое действие будет выполняться за 25-30 шагов ?

    Никому плохо не станет ?
  • Kolan © (05.03.08 10:22) [50]
    Нет, это всего возможных. Самое доинное — 5 шагов.
  • Игорь Шевченко © (05.03.08 11:44) [51]

    > Самое доинное — 5 шагов.


    И чего ты маешься ? Классы-фигасы. Сделал case и радуешься. Код вполне сопровождаемый получится.

    Keep It Simple Stupid
  • TStas © (05.03.08 16:12) [52]
    Простите чайника, может, я чего-то не понимаю, но почему нельзя PageControl использовать? И, конечно, Sender, а не case? Это же, как я понял, получится что-то вроде телефонной платилки? Просто я когда-то задавал аналогичный вопрос и мне ответили, что это и есть общепринятый способ. TabVisible := False и все. И тут хоть 100 шагов можно вставить, если пользователь не уйдет. И последовательность как угодно менять. и обращаться к ним хоть через Sender, хоть через ActivePageIndex
  • Kolan © (05.03.08 16:22) [53]
    > PageControl использовать

    Нехочется держать все в памяти. Аппарат гораздо менее мощный чем платилка.
  • KSergey © (05.03.08 17:37) [54]
    > Kolan ©   (05.03.08 16:22) [53]
    > Нехочется держать все в памяти.

    А я бы все же замерил. Памяти потребление.
    Т.к. если аппарат будет заниматься только тем, что круглые сутки отображать одну из этих 25 форм - то скорее эффективнее их сразу все создать (если в память влезут и скорее всего влезут), нежели каждый раз напрягать менеджер кучи перераспределять адресное пространство.
    Еще не известно не загнется ли этот менеджер через месяц непрерывной работы приолжения постоянно перераспределяя память (в смысле - не фрагментируется ли память до полного изнеможения).
  • TStas © (05.03.08 19:01) [55]
    Но все равно. PageControl - по сути, те же формы. 25 - это очень даже пристойное число и сразу их создать, если прога никогда не выключается - вполне разумное решение. Я верю, что мощнее, но принцип-то тот же: нажмите кнопочку 1, посмотрите, сколько вы ошибок наделали, вернитесь к шагу 1 и т. д. Это тот же принцип, что и мастера установки чего-нибудь.
    >если в память влезут Так ведь сама форма (экземпляр) не очень много занимает в памяти, а класс формы там так и так висит. А потом ну не байты же вы считаете.
  • Kolan © (05.03.08 20:33) [56]
    > что круглые сутки отображать одну из этих 25 форм

    Не это некй измеритель. То есть формы сменяют друг друга. Программа то раьботает с БД, то с ком портом…


    > Сделал case и радуешься.

    Я его и сделал, только вот строки использовал в кач состояни(наверно переделаю). А как предлагается?


    > Но все равно. PageControl


    У меня есть даже самописный компонент такой. Там вся логика получается в событиях OnExecute (так работают большиство визардов) и.т.д. Опыт паказал, что код такой трудно сопроваждать.
    Кроме того в визаде только далее и назад, ну отмена, а тут у меня хз сколько событий будет.
  • Германн © (06.03.08 03:31) [57]

    > Kolan ©   (05.03.08 20:33) [56]
    >
    > > что круглые сутки отображать одну из этих 25 форм
    >
    > Не это некй измеритель. То есть формы сменяют друг друга.
    >  Программа то раьботает с БД, то с ком портом…
    >
    >

    Ну и пусть формы меняются. Тем более KSergey ©   (05.03.08 17:37) [54].

    А при чём тут БД или Сом-порт?

    >
    > У меня есть даже самописный компонент такой. Там вся логика
    > получается в событиях OnExecute (так работают большиство
    > визардов) и.т.д. Опыт паказал, что код такой трудно сопроваждать.
    >
    >

    No comments!
  • Kolan © (06.03.08 09:24) [58]
    > No comments!


    Почему?
  • KSergey © (06.03.08 09:33) [59]
    > Kolan ©   (06.03.08 09:24) [58]
    > > No comments!
    > Почему?

    Сам же написал: "такой трудно сопроваждать". И это понятно, т.к. вся логика разбросана по разным местам.
 
Конференция "Основная" » Реализация интерфейса-мастера.
Есть новые Нет новых   [134483   +44][b:0.001][p:0.001]