Показать сообщение отдельно
Старый 05.04.2006, 11:19   #5  
vallys is offline
vallys
Developer
 
146 / 108 (0) +++++
Регистрация: 18.01.2005
Цитата:
Сообщение от sukhanchik
... RunBase - несмотря на то, что создается на сервере - он сам делает клиентскую копию себя, откуда и работает с формой. А данные просто передает через контейнер между экземплярами классов.
Хм... Думаю, что RunBase (вернее его наследник) делает клиентскую копию себя только если "Run on" равно "Called from" и экземпляр RunBase создан на сервере. Это можно увидеть в RunBase.PrompPrim():
Код:
...
// Move prompt to client when running on server and the class is swappable
if (isRunningOnServer() && this.canSwapBetweenCS() && this.canSwapBetweenCSPrim())
{
    [clientPrompt,clientPacked] = runbase::promptOnClient(classidget(this),this.promptPack());
    this.promptUnpack(clientPacked,clientPrompt);
    return clientPrompt;
}
...
Если "Run on" равно "Server", то создается клиентская копия Dialog - см. Dialog.doRun() и Dialog::runOnClient(). Соответственно в метод RunBase.dialogPostRun() передается серверный Dialog у которого формы нет, а клиентский (c формой) остается 'в тени'.
Цитата:
Сообщение от oip
Т.е. если класс выполняется на сервере, то ничего не поделаешь?
IMHO лучше "Run on" выставлять в "Called from" и создавать экземпляр RunBase на сервере принудительно. Получим и Dialog на клиенте (со всеми DialogField и формой) и выполнение RunBase.run() на сервере.