Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Как решить данную проблему? Добавлено: 14.03.10 18:14  

Автор вопроса:  Alex111
Доброе время суток.

Есть проект с Texbox и 2-мя кнопками. На нажатие первой кнопки раскладка клавиатуры меняется на Русскую и в свойствах Texbox'a text1.font.charset = 204. При нажатие другой кнопки, раскладка клавиатуры меняется на английскую, немецкую и шведскую здесь 3 языка все по выбору, text1.fontcharset = 0. Так проблема в том что если я пишу в Texbox'e на кириллице а потом хочу писать там же на латинице соответственна я нажимаю на вторую кнопку , то мой текст превращается в иероглифы. Как решить данную проблему? Задача в том чтоб я мог в Texbox'е писать и кириллицей и латиницей.

Спасибо всем за помощь.

Ответить

  Ответы Всего ответов: 22  

Номер ответа: 1
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #1
Добавлено: 14.03.10 19:37
сделай программное нажатие клавюш переключения раскладки клавиатуры. или другое свойство те fontcharset изменяет кодовую таблицу использующююся для кодирования символов во всём текстбоксе

Ответить

Номер ответа: 2
Автор ответа:
 VbStarter



ICQ: 357911808 

Вопросов: 118
Ответов: 1340
 Web-сайт: moscowdevils.ru
 Профиль | | #2
Добавлено: 14.03.10 19:40
както так - ASCII номер клавюши и тп параметры

Ответить

Номер ответа: 3
Автор ответа:
 Alex111



Вопросов: 1
Ответов: 13
 Профиль | | #3 Добавлено: 14.03.10 20:16
Спасибо, но при этом мне нужна будет так описать 4 алфавита а эта не мало. Может есть другой способ по легче?

Ответить

Номер ответа: 4
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #4
Добавлено: 14.03.10 22:26
Ну никак её не решить,меняешь кодировку-то для всего текста в текстбоксе. Либо кириллица, либо латиница. Тут нужен юникодный текстбокс видимо

Ответить

Номер ответа: 5
Автор ответа:
 Alex111



Вопросов: 1
Ответов: 13
 Профиль | | #5 Добавлено: 15.03.10 00:15
Winand
А есть такой текстбокс? Я сейчас поставил фонт.чарсет= 204. Я могу писать на кириллице и на латинице но такие буквы как Ö,Ä они не печатаются.

Ответить

Номер ответа: 6
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #6
Добавлено: 15.03.10 00:47
Ну я делал простой текстбокс в виде класса
  1. '    Copyright 2009, 2010 Makarov Andrey
  2. '
  3. '    This file is part of Audica - Open Simple Audio Player.
  4. '
  5. '    Audica is free software: you can redistribute it and/or modify
  6. '    it under the terms of the GNU General Public License as published by
  7. '    the Free Software Foundation, either version 3 of the License, or
  8. '    (at your option) any later version.
  9. '
  10. '    Audica is distributed in the hope that it will be useful,
  11. '    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12. '    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13. '    GNU General Public License for more details.
  14. '
  15. '    You should have received a copy of the GNU General Public License
  16. '    along with Audica.  If not, see <http://www.gnu.org/licenses/>.
  17.  
  18. Option Explicit
  19. Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
  20. Private Declare Function OleTranslateColor Lib "oleaut32.dll" (ByVal lOleColor As Long, ByVal lHPalette As Long, ByRef lColorRef As Long) As Long
  21. Private Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
  22. Dim m_Font As IFont
  23. Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long
  24. Private Declare Function CreateBrushIndirect Lib "gdi32.dll" (ByRef lpLogBrush As LOGBRUSH) As Long
  25. Private Type LOGBRUSH
  26.     lbStyle As Long
  27.     lbColor As Long
  28.     lbHatch As Long
  29. End Type
  30. Private m_BackColor As Long
  31. Private m_BackColorColor As Long
  32. Private m_ForeColor As Long
  33.  
  34. Private Type RECT
  35.     Left As Long
  36.     Top As Long
  37.     Right As Long
  38.     Bottom As Long
  39. End Type
  40. Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
  41. Private Declare Function GetClientRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
  42.  
  43. Private Declare Function SetBkColor Lib "gdi32.dll" (ByVal hdc As Long, ByVal crColor As Long) As Long
  44. Private Declare Function SetTextColor Lib "gdi32.dll" (ByVal hdc As Long, ByVal crColor As Long) As Long
  45. Private Declare Function CreateWindowEx Lib "user32" Alias "CreateWindowExW" (ByVal dwExStyle As Long, ByVal lpClassName As Long, _
  46.                         ByVal lpWindowName As Long, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, _
  47.                         ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, _
  48.                         ByVal hMenu As Long, ByVal hInstance As Long, lpParam As Any) As Long
  49. Private Declare Function DestroyWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
  50. Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongW" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
  51. Private Const GWL_WNDPROC As Long = -4
  52. Private Declare Function DefWindowProc Lib "user32.dll" Alias "DefWindowProcW" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  53. Private Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcW" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  54. Private Const WS_EX_WINDOWEDGE As Long = &H100&
  55. Private Const WS_EX_CLIENTEDGE As Long = &H200&
  56. Private Const WS_EX_OVERLAPPEDWINDOW As Long = (WS_EX_WINDOWEDGE Or WS_EX_CLIENTEDGE)
  57. Private Const WS_VISIBLE As Long = &H10000000
  58. Private Const WS_CHILD As Long = &H40000000
  59. Private Const ES_AUTOHSCROLL As Long = &H80&
  60. Private Const ES_NOHIDESEL As Long = &H100&
  61. Private Declare Function MoveWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
  62. Const AsmMain As String = "558BEC83C4FC8D45FC50FF7514FF7510FF750CFF75086800000000B800000000FFD08B45FCC9C21000"
  63. Private ASMArr() As Byte
  64. Private editproc As Long
  65. Private editwnd As Long
  66. Private prtproc As Long
  67. Private prtwnd As Long
  68. Private parent As Long
  69.  
  70. Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageW" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  71. Private Const EM_LIMITTEXT As Long = &HC5
  72. Private Const EM_SETSEL As Long = &HB1
  73. Private Const EM_LINELENGTH As Long = &HC1
  74. Private Const EM_GETLINE As Long = &HC4
  75. Private Const WM_SETFONT As Long = &H30
  76.  
  77. Private Const WM_NCPAINT = &H85
  78. Private Const WM_ERASEBKGND = &H14
  79. Private Const WM_PAINT = &HF
  80.  
  81. Private Const WM_NCHITTEST = &H84
  82. Private Const WM_SETCURSOR = &H20   'if the mouse causes the cursor to move within a window and mouse input is not captured
  83. Private Const WM_NCMOUSEMOVE = &HA0 'MouseMove nonclient area
  84. Private Const WM_MOUSEMOVE = &H200  'MouseMove client area
  85.  
  86. Private Const WM_KEYDOWN As Long = &H100
  87. Private Const WM_KEYUP As Long = &H101
  88. Private Const WM_LBUTTONDOWN = &H201
  89. Private Const WM_RBUTTONDOWN = &H204
  90. Private Const WM_LBUTTONUP = &H202
  91. Private Const WM_RBUTTONUP = &H205
  92. Private Const WM_CHAR As Long = &H102
  93. Private Const WM_SETFOCUS As Long = &H7
  94. Private Const WM_KILLFOCUS As Long = &H8
  95. Private Const WM_DESTROY As Long = &H2
  96. Private Const WM_IME_SETCONTEXT As Long = &H281
  97. Private Const WM_IME_NOTIFY As Long = &H282
  98. Private Const WM_NCDESTROY As Long = &H82
  99. Private Const WM_CTLCOLOREDIT As Long = &H133
  100. Private Const WM_SETTEXT As Long = &HC
  101.  
  102. Private Const WM_COMMAND As Long = &H111
  103. Private Const EN_CHANGE As Long = &H300
  104.  
  105. Public Event KeyDown(ByRef KeyCode As Long, ByRef lParam As Long)
  106. Public Event KeyUp(ByRef KeyCode As Long, ByRef lParam As Long)
  107. Public Event MouseDown(ByVal Button As Long)
  108. Public Event MouseUp(ByVal Button As Long)
  109. Public Event GotFocus()
  110. Public Event Changed()
  111.  
  112. Public Function EditWindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
  113.     Select Case uMsg
  114.     Case WM_SETFOCUS: RaiseEvent GotFocus
  115.     Case WM_KEYDOWN: RaiseEvent KeyDown(wParam, lParam)
  116.     Case WM_KEYUP: RaiseEvent KeyUp(wParam, lParam)
  117.     Case WM_LBUTTONDOWN: RaiseEvent MouseDown(vbLeftButton)
  118.     Case WM_RBUTTONDOWN: RaiseEvent MouseDown(vbRightButton)
  119.     Case WM_LBUTTONUP: RaiseEvent MouseUp(vbLeftButton)
  120.     Case WM_RBUTTONUP: RaiseEvent MouseUp(vbRightButton)
  121.     Case WM_CTLCOLOREDIT:
  122.         SetBkColor wParam, m_BackColorColor
  123.         SetTextColor wParam, m_ForeColor
  124.         EditWindowProc = m_BackColor
  125.         Exit Function
  126.     Case WM_COMMAND:
  127.         Select Case wParam \ &H10000 'HiWord
  128.         Case EN_CHANGE:
  129.             RaiseEvent Changed
  130.         End Select
  131.     Case WM_PAINT:  'Без этого может прекратиться перерисовка родительского окна
  132.         EditWindowProc = CallWindowProc(editproc, hwnd, uMsg, wParam, lParam)   '???
  133.         EditWindowProc = DefWindowProc(hwnd, uMsg, wParam, lParam)
  134.         Exit Function
  135.     End Select
  136.     EditWindowProc = CallWindowProc(editproc, hwnd, uMsg, wParam, lParam)
  137. End Function
  138.  
  139. Public Sub Move(Optional ByVal pLeft As Long = -1, Optional ByVal pTop As Long = -1, Optional ByVal pWidth As Long = -1, Optional ByVal pHeight As Long = -1)
  140.     Dim rc As RECT, rcp As RECT
  141.     GetWindowRect parent, rcp
  142.     GetWindowRect prtwnd, rc
  143.     MoveWindow prtwnd, IIf(pLeft <> -1, pLeft, rc.Left - rcp.Left), _
  144.                         IIf(pTop <> -1, pTop, rc.Top - rcp.Top), _
  145.                         IIf(pWidth <> -1, pWidth, rc.Right - rc.Left), _
  146.                         IIf(pHeight <> -1, pHeight, rc.Bottom - rc.Top), 1
  147.     MoveWindow editwnd, 0, 0, _
  148.                         IIf(pWidth <> -1, pWidth, rc.Right - rc.Left), _
  149.                         IIf(pHeight <> -1, pHeight, rc.Bottom - rc.Top), 1
  150. End Sub
  151.  
  152. Private Sub StartSubclass(ByRef ASM() As Byte, ByVal hwnd As Long, ByRef OldWndProc As Long, Optional ByVal ProcNumber As Long)                 ' Сабклассинг с пом. ASM (автора не знаю...)
  153.     Dim lng As Long, tPtr As Long
  154.     lng = Len(AsmMain) \ 2&
  155.     ReDim ASM(0 To lng - 1)
  156.     For lng = 0 To lng - 1
  157.         ASM(lng) = Val("&H" & Mid$(AsmMain, (lng) * 2& + 1, 2&))
  158.     Next lng
  159.     Call CopyMemory(tPtr, ByVal ObjPtr(Me), 4&)
  160.     Call CopyMemory(lng, ByVal tPtr + &H1C + (4& * ProcNumber), 4&)
  161.     Call CopyMemory(ASM(23), ObjPtr(Me), 4&)
  162.     Call CopyMemory(ASM(28), lng, 4&)
  163.     OldWndProc = SetWindowLong(hwnd, &HFFFC, VarPtr(ASM(0)))
  164. End Sub
  165.  
  166. Private Sub StopSubclass(ByVal hwnd As Long, ByVal OldWndProc As Long)
  167.     Call SetWindowLong(hwnd, &HFFFC, OldWndProc)
  168. End Sub
  169.  
  170. Public Sub init(ByVal hParent As Long, Optional ByVal pLeft As Long = 0, Optional ByVal pTop As Long = 0, Optional ByVal pWidth As Long = 200, Optional ByVal pHeight As Long = 20)
  171.     parent = hParent
  172.     prtwnd = CreateWindowEx(0, StrPtr("STATIC"), StrPtr(""), _
  173.                 WS_VISIBLE Or WS_CHILD, _
  174.                 pLeft, pTop, pWidth, pHeight, hParent, 0&, App.hInstance, ByVal 0&)
  175.     editwnd = CreateWindowEx(0, StrPtr("EDIT"), StrPtr(""), _
  176.                 WS_VISIBLE Or WS_CHILD Or ES_AUTOHSCROLL Or ES_NOHIDESEL, _
  177.                 0, 0, pWidth, pHeight, prtwnd, 0, App.hInstance, ByVal 0&)
  178.     Call StartSubclass(ASMArr, prtwnd, prtproc)
  179.     Call StartSubclass(ASMArr, editwnd, editproc)
  180.  
  181.     Dim c1 As Long, c2 As Long
  182.     If OleTranslateColor(vbWindowBackground, 0, c1) Then BackColor = vbBlack Else BackColor = c1
  183.     If OleTranslateColor(vbWindowText, 0, c2) Then ForeColor = vbWhite Else ForeColor = c2
  184.     
  185.     Set m_Font = New StdFont
  186.     m_Font.Name = "Verdana"
  187.     SendMessage editwnd, WM_SETFONT, m_Font.hFont, ByVal 1
  188. End Sub
  189.  
  190. Private Sub Class_Terminate()
  191.     If editproc Then Call StopSubclass(editwnd, editproc): editproc = 0
  192.     If prtproc Then Call StopSubclass(prtwnd, editproc): prtproc = 0
  193.     DestroyWindow editwnd
  194.     DestroyWindow prtwnd
  195.     DeleteObject m_BackColor
  196.     DeleteObject m_ForeColor
  197.     Call m_Font.ReleaseHfont(m_Font.hFont)
  198. End Sub
  199.  
  200. Public Sub SelectText(Optional ByVal pStart As Long = 0, Optional ByVal pFinish As Long = -1)
  201.     SendMessage editwnd, EM_SETSEL, 0, ByVal -1
  202. End Sub
  203.  
  204. Public Property Let TextLimit(ByVal maxlen As Long)
  205.     SendMessage editwnd, EM_LIMITTEXT, maxlen, ByVal 0
  206. End Property
  207.  
  208. Public Property Let Font(ByVal fontname As String)
  209.     m_Font.Name = fontname
  210.     SendMessage editwnd, WM_SETFONT, m_Font.hFont, ByVal 1
  211. End Property
  212.  
  213. Public Property Get Length() As Long
  214.     Length = SendMessage(editwnd, EM_LINELENGTH, 0, ByVal 0)
  215. End Property
  216.  
  217. Public Property Get Text() As String
  218.     Dim textlen As Long, copied As Long
  219.     If b(textlen, Length) Then
  220.         ReDim buf(textlen * 2 - 1) As Byte
  221.         lngToArr buf, textlen, 0
  222.         copied = SendMessage(editwnd, EM_GETLINE, 0, buf(0))
  223.         Text = MidB(buf, 1, copied * 2)
  224.     End If
  225. End Property
  226.  
  227. Public Property Let Text(ByRef txt As String)
  228.     Call SendMessage(editwnd, WM_SETTEXT, 0, ByVal StrPtr(txt))
  229. End Property
  230.  
  231. Public Property Get Width() As Long
  232.     Dim rc As RECT
  233.     GetWindowRect editwnd, rc
  234.     Width = rc.Right - rc.Left
  235. End Property
  236.  
  237. Public Property Get Height() As Long
  238.     Dim rc As RECT
  239.     GetWindowRect editwnd, rc
  240.     Height = rc.Bottom - rc.Top
  241. End Property
  242.  
  243. Public Property Get Left() As Long
  244.     Dim rc As RECT, rcp As RECT
  245.     GetWindowRect parent, rcp
  246.     GetWindowRect prtwnd, rc
  247.     Left = rc.Left - rcp.Left
  248. End Property
  249.  
  250. Public Property Get Top() As Long
  251.     Dim rc As RECT, rcp As RECT
  252.     GetWindowRect parent, rcp
  253.     GetWindowRect prtwnd, rc
  254.     Top = rc.Top - rcp.Top
  255. End Property
  256.  
  257. Public Property Let BackColor(ByVal Color As Long)
  258.     Dim lb As LOGBRUSH
  259.     lb.lbColor = Color
  260.     lb.lbStyle = 0
  261.     lb.lbHatch = 0
  262.     m_BackColor = CreateBrushIndirect(lb) 'brush with new background color of editbox
  263.     m_BackColorColor = Color
  264. End Property
  265.  
  266. Public Property Let ForeColor(ByVal Color As Long)
  267.     m_ForeColor = Color
  268. End Property
  269.  
  270. Public Property Let Visible(ByVal bool As Boolean)
  271.     Const SW_SHOW = &H5
  272.     Const SW_HIDE = &H0
  273.     ShowWindow prtwnd, IIf(bool, SW_SHOW, SW_HIDE)
  274. End Property


Создается так:
  1. Option Explicit
  2. Public WithEvents TxtEdit As clsTextEdit
  3.  
  4. Private Sub Form_Load()
  5.     Set TxtEdit = New clsTextEdit
  6.     TxtEdit.init hwnd, 10, 10, 200, 20
  7. End Sub

Ответить

Номер ответа: 7
Автор ответа:
 Alex111



Вопросов: 1
Ответов: 13
 Профиль | | #7 Добавлено: 15.03.10 01:22
Winand
Создал класс модуль с именем TxtEdit в форму в загрузку поставил код и в начало формы тоже. а Бейзик ругается на данную строку. Public WithEvents TxtEdit As clsTextEdit Может я что не так сделал? Я в программирование не силен, сейчас как пол года может за бейзиком. Так что прошу сильна не ругать.

Ответить

Номер ответа: 8
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #8
Добавлено: 15.03.10 01:47
нет, ты должен создать класс с именем clsTextEdit.
И кстати, если будешь использовать эту штуку, то завершать программы с помощью End нельзя и на паузу выполнение программы тоже нельзя ставить будет) Иначе всё крашится, это неисправимая проблема бейсика

Ответить

Номер ответа: 9
Автор ответа:
 Alex111



Вопросов: 1
Ответов: 13
 Профиль | | #9 Добавлено: 15.03.10 20:41
Winand
Спасибо большое, все работает. Вот толка жаль что на Енд нельзя жать, да и ЕХЕ он не делает почему то ругается на строку в файле класса.

Ответить

Номер ответа: 10
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #10
Добавлено: 15.03.10 21:41
как ругается?

Ответить

Номер ответа: 11
Автор ответа:
 Alex111



Вопросов: 1
Ответов: 13
 Профиль | | #11 Добавлено: 15.03.10 22:27
Вот здесь
  1. Public Property Get Text() As String
  2.       Dim textlen As Long, copied As Long
  3.       If b(textlen, Length) Then
  4.           ReDim buf(textlen * 2 - 1) As Byte
  5.           lngToArr buf, textlen, 0
  6.           copied = SendMessage(editwnd, EM_GETLINE, 0, buf(0))
  7.           Text = MidB(buf, 1, copied * 2)
  8.       End If
  9.   End Property
на переменную b: If b(textlen, Length) Then

Ответить

Номер ответа: 12
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #12
Добавлено: 15.03.10 22:48
ой блин. Не заметил.
  1. 'Присвоение p2 к p1 с проверкой результата на равенство нулю
  2. Public Function b(p1 As Long, p2 As Long) As Boolean
  3.     p1 = p2
  4.     b = CBool(p1)
  5. End Function

Ответить

Номер ответа: 13
Автор ответа:
 Alex111



Вопросов: 1
Ответов: 13
 Профиль | | #13 Добавлено: 15.03.10 23:16
Так мне что ту часть кода заменить на то что ты сейчас написал? Да и вопрос а если я создам ЕХЕ то там при нажатие на крестик проблемы будут? или эта только в Бейзике так?

Ответить

Номер ответа: 14
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #14
Добавлено: 16.03.10 00:47
Конечно заменять ничего не нужно. b - это функция такая. Ты можешь поместить её либо в модуль, либо внизу в сам класс (в этом случае можно public заменить на private)
Другой вариант. Заменить строку
If b(textlen, Length) Then
на
textlen = Length
If textlen <> 0 Then

Если где-то используешь End, то нужно заменить его на
Dim frm as form
for each frm in forms
   unload frm
next frm

Ответить

Номер ответа: 15
Автор ответа:
 Alex111



Вопросов: 1
Ответов: 13
 Профиль | | #15 Добавлено: 16.03.10 19:46
поставил в бейсики проблем нет, даже на Енд жать можно. А вот при создания ЕХЕ ругается опять но уже на другое вот здесь
  1. Public Property Get Text() As String
  2.       Dim textlen As Long, copied As Long
  3.       If b(textlen, Length) Then
  4.           ReDim buf(textlen * 2 - 1) As Byte
  5.           lngToArr buf, textlen, 0
  6.           copied = SendMessage(editwnd, EM_GETLINE, 0, buf(0))
  7.           Text = MidB(buf, 1, copied * 2)
  8.       End If
  9.   End Property
на lngToArr. Да и я хотел спросить эта сам Тексбокс с размером и позицией?
  1. TxtEdit.init hwnd, 10, 10, 200, 20
меняю на свои у меня имя едитор1, то потом в процедуре для сохранения файла при создания ЕХЕ начинает ругаться и при выходи с программы у меня стоит мсгбокс с вопросом если есть текст то сохранить его или нет и там тоже ругается.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам