On-line: гостей 0. Всего: 0 [подробнее..]
АвторСообщение
постоянный участник




Пост N: 5855
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 14.05.18 21:33. Заголовок: Вылет из программы...


Всем привет !
Как можно в МиниГуи программе сделать вызов своих функций при аварийном завершении программы (т.е. при вылете) ?
Т.е. хочу сделать сразу после появления MsgBox() вызов 2-3 функций и потом сделать DbCloseAll().
Как это реализовать ?

Для чего это нужно, поясню: при входе в свою программу я пишу в базу кто и когда вошел в программу (логин пользователя).
И при выходе из программы, стираю этого пользователя из базы.
Если программа "вылетает", то юзер числится как работающий.
Древнее наследие с клипера, хотел переделать, да так и осталось.

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 173 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]


постоянный участник




Пост N: 4279
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.05.23 13:15. Заголовок: gfilatov2002 Андрей..


gfilatov2002
Андрей присылал мне кино с зависанием. Думаю виснет на прорисовке тсб, т.к. используется установка :FilterFTS() и на короткий просмотр (строк < :nRowCount()) прорисовка тсб и подсчет :nLen успевает сработать, если строк в тсб > :nRowCount(), то на тсб клинит, т.к. кнопка вызова справочника остается Disable. Набор символов поиска происходит в :HandleEvents() -> : KeyDown() -> :bUserKeys символы набираются в Static переменную и Label отображает. Еще у него исп. :bEvents с отображением на каждом нажатии
 
STATIC FUNCTION MyEventBrowse(oBrw, nMsg) // "RUS/LAT"
LOCAL cForm := oBrw:cParentWnd, cAlias := oBrw:cAlias

IF nMsg != WM_PAINT .and. _IsControlDefined( "Label_KB", cForm )
SetProperty(cForm, "Label_KB", "Value", '('+KB_LANG()+')' )
ENDIF

RETURN 0

Думаю здесь из за разницы скоростей набора символов и прорисовки тсб получается подвис. Ранее :FilterFTS() делался тут же в :bUserKeys, сейчас ушло на _wPost() и Андрей написал, что стало лучше
 цитата:

Сейчас 6 раз выбрал мышкой, всё отлично.
5 раз выбрал через ENTER и повис.
Ну хоть больше стало выбирать...


Предложение перевести ввод данных для фильтра в GETBOX\TEXTBOX он пока отвергает.
PS. Это происходит у него только на PC с WinServer 2008

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7385
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.05.23 13:35. Заголовок: SergKis пишет: Пред..


SergKis пишет:

 цитата:
Предложение перевести ввод данных для фильтра в GETBOX\TEXTBOX он пока отвергает.


Я убрал совсем TEXTBOX и поставил только LABEL, чтобы проверить.
Т.е. только отображение что набрали на клавиатуре, убрал одну причину СОВСЕМ для проверки.
Или я что-то не понимаю с этим GETBOX\TEXTBOX, мне он не нужен пока ?
После того как переделал на LABEL всё равно ВИСНЕТ прога по клавише ENTER, на 5-6-7 раз, как повезёт

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7437
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.06.23 12:06. Заголовок: Фигня получается... ..


Фигня получается...
Вылет был из-за потери окна !
1,5 года была плавающая ошибка, то есть, то нет. Вылетало только на одном сервере-терминалов.
Сейчас с переходом на новый BCC 7.30 ошибка получилась постоянной и всегда !
Наверное более жесткий контроль установлен. В принципе это хорошо.
И понятней стала причина ошибки - потеря MODAL окна, т.е. вызываем несколько MODAL окон,
и при возврате окно теряется, улетает под главную форму. Вот и вся ошибка была.
Причём, чем больше весит ехе-ник, тем больше вероятность возникновения такой ошибки !!!
Сергей дал функцию для предотвращения таких ситуаций, выкладываю сюда, может ещё кому понадобиться.

Событие на кнопку.
       (This.Object):Event(11,{|obtn,ky,abtn|             // объект,event,параметр получаем   
Local ow, cw, cn, lbtn, lwnd, aRet, nRet, cRet, aForm, hWnd
Local nButton := abtn[1] // nButton
Local cButton := aBtn[2] // This.Name
lbtn := obtn:IsControl // переменная контрол\окно .T.\.F.
lwnd := obtn:IsWindow // переменная окно\контрол .T.\.F.
ow := obtn:Window // если lbtn == .T. окно берем так
cw := ow:Name // аналог ThisWindow.Name
cn := obtn:Name // аналог This.Name
//SetProperty(cw, "Topmost", .T.) ; DO EVENTS // 18.06.23
//SetProperty(cw,cn, "Enabled", .F.) // блокировка кнопки
//This.&(cn).Enabled := .F. // блокировка кнопки
Darken2Open(ow:Handle) // затенение на окно
aRet := ButtonSpavki(aDim,nButton,cw) // вызов другого MODAL окна
Darken2Close(ow:Handle) // убрать затенение с окна
DO EVENTS
aForm := HMG_GetForms() // все открытые окна
? " === ButtonSpavki(...)=", ProcNL(), "aRet=", HB_ValToExp(aRet)
? " === aForm=", aForm ; ?v aForm
? " === !", cw, _IsWindowActive(cw), _IsWindowDefined(cw), cn, _IsControlDefined(cn, cw)
IF _IsWindowDefined(cw)
SET WINDOW THIS TO cw
SetProperty( cw, cn, "Caption", cRet )
? " === ThisWindow =", cw, ThisWindow.Name
? " === This =", cn, This.Name
This.&(cn).Enabled := .T.
This.Label_Buff.SetFocus()
SET WINDOW THIS TO
ELSE
? "==== *** ERROR *** WINDOW ["+cw+"] not found ! "
ENDIF
IF ! To_Focus(cw)
AlertStop("Window not found ! " + cw, "ERROR")
ENDIF
//ow:SetFocus('Label_Buff') // на форме должен быть LABEL Label_Buff
? " === End = :Event(11)" ; ? " ..."
Return Nil
} )

Вот сама функция:
FUNCTION To_Focus( cForm, cControl )  
LOCAL hForm, lRet := _IsWindowDefined(cForm)
DEFAULT cControl := "Label_Buf"

IF lRet
hForm := GetFormHandle(cForm)
IF hForm != 0
IF IsIconic( hForm ) ; _Restore( hForm )
ENDIF
SetProperty(cForm, "Topmost", .T.)
DoMethod(cForm, "SetFocus")
IF _IsControlDefined(cControl, cForm)
DoMethod(cForm, cControl, "SetFocus")
ENDIF
SetProperty(cForm, "Topmost", .F.)
ENDIF
ENDIF

RETURN lRet


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4315
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 21.06.23 12:25. Заголовок: Andrey пишет В принц..


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


Не уверен, что это хорошо, т.к. получается не работает механизм назначения modal окну родителя, т.е.
 
FUNCTION _DefineModalWindow ( FormName, Caption, x, y, w, h, Parent, nosize, nosysmenu, nocaption, aMin, aMax, ;
...
IF _HMG_InplaceParentHandle <> 0
Parent := _hmg_InplaceParentHandle

ELSEIF ! _HMG_BeginWindowMDIActive
Parent := _hmg_MainHandle

ENDIF
...

Для др. окон (например STANDARD, ...) тоже приходится городить
hOld := _hmg_MainHandle
_hmg_MainHandle := ThisWindow.Handle // or ow:Handle
...
DEFINE WINDOW ...
_hmg_MainHandle := hOld
...
END WINDOW
получается и этот механизм, задания Parent тоже под вопросом ?
Parent := _hmg_MainHandle

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7451
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.23 19:14. Заголовок: Столкнулся теперь с ..


Столкнулся теперь с другой проблемой, прога виснет НАГЛУХО в некоторых режимах через несколько раз.
Подозреваю потерю фокуса в MODAL окне.
У юзера прога работает в режиме сервер-терминалов.
Это когда ярлык на рабочем столе, а прога запускается на сервере.
Так в этом режиме и прога наглухо вешается, по окнам проскочить невозможно, STANDART окна показывает, а MODAL спряталось под ним.
Помогает только убивание проги на сервере, юзер вообще ничего сделать не может.
Главное меню тоже висит...
Можно сделать спец-менюшку в проге для показа открытых окон и активации спрятавшегося окна ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4337
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.06.23 21:37. Заголовок: Andrey Попробуй пос..


Andrey
Попробуй поставь в
...
SET TOOLTIP BALLOON ON
SET WINDOW MODAL PARENT HANDLE ON // окна Modal получают родителя - активное окно

PS
Это на последней версии
Для старой версии сделай так, возьми к своему проекту файл h_windows.prg, включи его в hbp сценарий, в нем сделай
 
STATIC nCtEfeito := 0, cDescEfeito := ""
STATIC _HMG_OwnerModalHandle := .F.

FUNCTION Set_HMG_OwnerModalHandle( lSet )
IF Valtype( lSet ) == "L"
_HMG_OwnerModalHandle := lSet
ENDIF
RETURN _HMG_OwnerModalHandle

.
*-----------------------------------------------------------------------------*
FUNCTION _DefineWindow ( FormName, Caption, x, y, w, h, nominimize, nomaximize, ;
...
FUNCTION _DefineModalWindow ( FormName, Caption, x, y, w, h, Parent, nosize, nosysmenu, nocaption, aMin, aMax, ;
...
IF _HMG_OwnerModalHandle
_HMG_InplaceParentHandle := iif( _HMG_BeginWindowMDIActive, GetActiveMdiHandle(), GetActiveWindow() )
ENDIF

IF _HMG_InplaceParentHandle <> 0
Parent := _hmg_InplaceParentHandle
ELSEIF ! _HMG_BeginWindowMDIActive
Parent := _hmg_MainHandle
ENDIF
...
тогда поставь в программе
SET TOOLTIP BALLOON ON
Set_HMG_OwnerModalHandle( .T. )



Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7452
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.23 22:58. Заголовок: SergKis пишет: Это ..


SergKis пишет:

 цитата:
Это на последней версии


Что-то не собирается...
 
Собираю MG_BCC = "c:\borland\bcc55"
ilink32.exe @D:\TEMP\en2z4e.lnk
hbmk2: Linker script:
-Gn -Tpe -LC:\borland\BCC55\Lib;C:\borland\BCC55\Lib\PSDK;"C:\MiniGUI-23.04.4\harbour\lib";"C:\MiniGUI-23.04.4\harbour\bin";
"C:\MiniGUI-23.04.4\lib" -aa c0w32.obj OBJ\main.obj .
.....
"C:\MiniGUI-23.04.4\resources\minigui.res" "C:\MiniGUI-23.04.4\resources\hbprinter.res" "C:\MiniGUI-23.04.4\resources\miniprint.res"
Turbo Incremental Link 5.66 Copyright (c) 1997-2002 Borland
Error: Unresolved external 'SwitchToThisWindow' referenced from C:\MINIGUI-23.04.4\LIB\MINIGUI.LIB|c_windowsAPI
hbmk2[Abonent4win]: Error: Running linker. 2


Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4338
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 28.06.23 23:21. Заголовок: Andrey Что ты собир..


Andrey
Что ты собираешь ?
h_windows.prg надо из своей старой версии брать, у тебя была, вроде 23.01 работающая

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7453
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 28.06.23 23:37. Заголовок: SergKis пишет: Что ..


SergKis пишет:

 цитата:
Что ты собираешь ?


C:\MiniGUI-23.04.4\ - новую версию, старую не хочется...
Если собираю с BCC58, то собирается, но иконки в проге не те (я им не собираю никогда, из-за этого на 7.30 переходить начал)
Если собираю с BCC55, то не собирается.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4339
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 29.06.23 07:56. Заголовок: Andrey пишет Если со..


Andrey пишет
 цитата:
Если собираю с BCC58, то собирается, но иконки в проге не те (я им не собираю никогда, из-за этого на 7.30 переходить начал)


gfilatov2002 пишет про 7.30
 цитата:
Для получения русских букв в имени программы надо заменить два файла в папке \BCC102\bin\ на аналогичные файлы из поставки ВСС 5.5:
- brcc32.exe
- rw32core.dll


Попробуй проделать это для BCC58\bin

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7454
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 29.06.23 11:41. Заголовок: Заменил в BCC58\..


Заменил в BCC58\bin
ilink32.exe
implib.exe
lnkdfm250.dll
из 7.30 - вроде ресурсы стали собираться правильно !
И прога собралась нормально. Выложил юзеру - жду результатов.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7455
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 02.07.23 15:17. Заголовок: SergKis пишет: SET ..


SergKis пишет:

 цитата:
SET WINDOW MODAL PARENT HANDLE ON // окна Modal получают родителя - активное окно


Протестировал юзер этот режим.
Теперь прога вешается в других местах программы, где до этого не вешалась - потеря фокуса окна и нет на экране что можно закрыть.
Т.е. на экране 3-4 окна по которым мышкой можно скакать, а закрыть НЕЛЬЗЯ !!! не реагирует на закрытие.
Может это rdp-протокол не даёт закрыть активную задачу ?
А как тогда закрыть эту "висячую" программу ? Есть какие варианты ?

Веду лог. Вручную смотрю где висит программа и пытаюсь висячее окно приколотить через To_Focus()
Может можно как то по другому ?

P.S. Ещё на таймерах вешается прога. Но это я с помощью Сергея уже исправил.

P.S.2 Проблема с вызовом двух подряд модальных окон так и не решилась, всё равно окно 2 вешается, благо клавиша ESC срабатывает,
хоть юзер может выйти из этого окна и без вылета из программы.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4341
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.07.23 16:11. Заголовок: Andrey пишет P.S.2 П..


Andrey пишет
 цитата:
P.S.2 Проблема с вызовом двух подряд модальных окон так и не решилась, всё равно окно 2 вешается, благо клавиша ESC срабатывает


Попробуй вместо 1-го modal сделать CHILD TOPMOST и не делать ON INIT {|| This.Topmost := .F., ... Изменится поведение ?

 цитата:
Теперь прога вешается в других местах программы, где до этого не вешалась - потеря фокуса окна и нет на экране что можно закрыть.


Пробуй манипулировать командами в тех местах, которые сломались
SET WINDOW MODAL PARENT HANDLE OFF
...
SET WINDOW MODAL PARENT HANDLE ON

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4342
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 02.07.23 18:21. Заголовок: SergKis пишет Попроб..


SergKis пишет
 цитата:
Попробуй вместо 1-го modal сделать CHILD TOPMOST


Ничего не даст, т.к. CHILD привязывается в _DefineWindow(...) к Main окну
ParentHandle := iif( child == .T., _HMG_MainHandle, 0 )
что бы привязывать к STANDARD надо перед созданием CHILD делать
hOld := _HMG_MainHandle
_HMG_MainHandle := ThisWindow.Handle
DEFINE WINDOW ... CHILD TOPMOST ...
_HMG_MainHandle := hOld
...
END WINDOW
...
и смотреть поможет или нет
PS
Перед DEFINE WINDOW ... MODAL ... надо окну CHILD сделать Topmost := .F.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7463
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.07.23 14:29. Заголовок: Пипец... Теперь пере..


Пипец...
Теперь перестал работать код, который ранее работал
    ADD COLUMN TO oBrwV HEADER CRLF + "Наименование"+ CRLF + "оборудования/работ" ; 
SIZE nTxtWidth ;
ALIGN DT_LEFT,DT_CENTER,DT_LEFT ; // cells, header, footer
DATA {|| SAY_SEL((cAlias)->KOBORUD, "OBORUD", "OBORUD", 1 ) } ;
NAME KOborud EDITABLE
oBrwV:aColumns[4]:bPrevEdit := {|| EditTableCol4() /*, _PushKey( VK_ESCAPE )*/, MsgDebug("ky-ky"), FALSE }

MsgDebug("ky-ky") на экране есть, а фокуса в таблице нет, т.е. дальше редактировать не могу !
Окно Модальное на экране не активное !!! Висит и всё ! Выход только по ESC !
И что делать ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7464
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.07.23 17:01. Заголовок: Модальное окно на эк..


Модальное окно на экране (1), вызываю второе модальное окно (2) с ТСБ, нажимаю клавишу F2 - помощи (AlertInfo) и окно (2) - ВИСИТ !!!
Уже во втором месте программы такое с модальными окнами...

Пока сделал так:
   hOld := _HMG_InplaceParentHandle 
_HMG_InplaceParentHandle := ThisWindow.Handle

DEFINE WINDOW Form_Tvr ;
MODAL NOSIZE ;
ON INIT {|| OnInitFormTvr() }
....
ON KEY ESCAPE ACTION ThisWindow.Release
ON KEY F2 ACTION HelpThisWindow()
ON KEY F3 ACTION AlertInfo(cHelp, "Помощь") если вызывать эти клавиши, то окно тоже ВЕШАЕТСЯ !!!


END WINDOW
....
IF ! ISNIL(hOld) ; _HMG_InplaceParentHandle := hOld
ENDIF
? "=[End]= " + ProcNL(), "Forms: "+ HB_ValToExp(HMG_GetForms())

RETURN NIL

STATIC FUNCTION OnInitFormTvr()

oBrwV:Setfocus()
IF oBrwV:nAt == 1 .AND. (oBrwV:cAlias)->KOLVO == 0
oBrwV:PostMsg( WM_KEYDOWN, VK_RETURN, 0 ) // послать ENTER для редактирования
//_PushKey(VK_1)
ENDIF

RETURN NIL

Григорий, почему так происходит ?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4346
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.07.23 17:50. Заголовок: Andrey У тебя устан..


Andrey
У тебя установлено
SET WINDOW MODAL PARENT HANDLE ON
Убери все строки
hOld := _HMG_InplaceParentHandle
_HMG_InplaceParentHandle := ThisWindow.Handle
...
IF ! ISNIL(hOld) ; _HMG_InplaceParentHandle := hOld
ENDIF
Для модального окна, которое запускается с окна STANDARD сделай запоминание типа окна, т.е.
LOCAL cTypeWnd := ow:Type или This.Type
убери все лишние переключения фокуса оставь, например, при выходе из modal окна
 
ACTIVATE WINDOW &cForm

IF cTypeWnd == "S"
To_Focus(cWnd, cBrw)
ENDIF

Что бы при возвратах система сама возвращала фокус на handle родителя

 цитата:
oBrwV:aColumns[4]:bPrevEdit := {|| EditTableCol4() /*, _PushKey( VK_ESCAPE )*/, MsgDebug("ky-ky"), FALSE }
MsgDebug("ky-ky") на экране есть, а фокуса в таблице нет, т.е. дальше редактировать не могу !
Окно Модальное на экране не активное !!! Висит и всё ! Выход только по ESC !


Если _HMG_InplaceParentHandle не задано или задано каким то значением _HMG_InplaceParentHandle := hOld не тек. активного окна и не стоит SET WINDOW MODAL PARENT HANDLE ON , то после MsgDebug("ky-ky") фокус может улететь куда то на др. окно или main, т.к. MsgDebug() - modal окно внутри. Лучше такие конструкции, как вызов AlertInfo, MsgDebug, ... (в основе HMG_Alert()) не использовать

PS
Ты часто ставишь фокус на Label "Label_Buf", если у тебя есть установки oBrw:UserKeys(...) или oBrw:bUserKeys - обработчики клавиш, то они работают, если фокус на тсб, т.е. фокус на "Label_Buf" блокирует работу уст. клавиш тсб. Это надо иметь ввиду.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7465
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.07.23 20:29. Заголовок: Поставил как ты напи..


Поставил как ты написал.
Всё равно без этого не работает.
STATIC FUNCTION OnInitFormTvr()    
oBrwV:Setfocus()
IF oBrwV:nAt == 1 .AND. (oBrwV:cAlias)->KOLVO == 0
oBrwV:PostMsg( WM_KEYDOWN, VK_RETURN, 0 ) // послать ENTER для редактирования
//_PushKey(VK_1)
ENDIF
RETURN NIL


Если из Enter выходим и нажимает эти клавиши - то висим.
   ON KEY F2     ACTION HelpThisWindow()  
ON KEY F3 ACTION AlertInfo(cHelp, "Помощь")

Нажимаем ESC - выход из Modal(2) и потом всё работает - клавиши ВСЕ работают.
Т.е. на ПЕРВОМ разе беда, а потом всё работает...

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 4347
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 05.07.23 21:18. Заголовок: Варианты попробуй 1...


Варианты попробуй
1. - Minimize, Restore потом OnInitFormTvr
2.- Minimize потом выход из modal(2) и снова вход как было 0. и как 1.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник




Пост N: 7466
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 05.07.23 21:27. Заголовок: SergKis пишет: 2.- ..


SergKis пишет:

 цитата:
2.- Minimize потом выход из modal(2) и снова вход как было 0. и как 1.


Не понял, это как ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 173 , стр: 1 2 3 4 5 6 7 8 9 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 9
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет