Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование (VB,C#,ASP,.NET): новости, советы, примеры


Kbyte.Ru - новости мира программирования

Выпуск # 3


http://www.kbyte.ru/

 

Новый выпуск!

Здравствуйте дамы и господа!

Не смотря на то, что я временно ушел в отпуск :), рассылку я все же забросить не смог.

Приятного чтения!

 

Содержание выпуска

Читайте в этом выпуске:

 

1.

Новости Microsoft

   

2.

Новые статьи

   

3.

FAQ VB 5.0/6.0

 

1.1. Как удалить каталог с файлами?

 

1.2. Как добавить CheckBox в ComboBox?

 

1.3. Как получить имя компьютера?

 

1.4. Как перехватить нажатие клавиши Escape?

 

1.5. Как прочитать данные из файла в текстовое поле?

 

 

4.

Универсальные коды

 

2.1. VB 6.0: TextBox: Как получить содержимое любой строки?

 

2.2. VB 6.0: TextBox: Как скрыть/показать каретку?

 

2.3. VB 6.0: TextBox: Как узнать количество строк?

 

2.4. VB 6.0: TextBox: Как запретить ввод определенных символов?

 

2.5. VB 6.0: TextBox: Как заблокировать стандартное меню?

 

 

Новости Microsoft

Источник: http://www.microsoft.com

 

Корпорация Microsoft порадовала разработчиков большим количеством новых конкурсов!

 

1. Международный конкурс проектов и/или устройств, выполняемых с использованием любой из версий Visual Studio Express или SQL Server Express.

 

2. Конкурс программ для Windows Vista - Code Master Challenge. Участвовать могут и индивидуальные разработчики, и компании. Срок подачи предложений – по 31 июля 2006 года, призовой фонд конкурса составляет 125 000 долл.

Правила конкурса и регистрация – на сайте Code Master Challenge.

 

3. Всероссийский конкурс разработчиков Microsoft Office Extensions.

 

<наверх>

 

Новые статьи

Статьи: http://www.kbyte.ru/articles/

 

Наследование в VB.Net

http://www.kbyte.ru/articles/showarticle.aspx?id=35&group=3

Автор: Увалиев Николай (Neco) | добавлено: 16.04.2006 / 03:22

Если кто-нибудь уже сталкивался с мелкомягким контролом DataGridView, то наверняка порадовался обилию возможностей, которые он предлагает. Однако, когда дело доходит до реального кодинга, начинаешь хотеть чего-то большего. Мне, к примеру, понадобилось, чтобы внутри таблицы был ComboBox – конечно, он там есть, но мне понадобилось, чтобы в нём можно было ЛИБО печатать, ЛИБО выбирать. Т.е., если в списке не оказалось нужной нам вещицы, то мы могли впечатать её и тем самым дополнить список.

 

<наверх>

 

FAQ VB 5.0/6.0

Ведущий раздела: BiT <bit@kbyte.ru>

http://kbyte.ru/forum/default.aspx?forumid=8

 

1.1 > Как удалить каталог с файлами?

 

Option Explicit

Private Sub Command1_Click()
On Error GoTo ErrorLabel
Dim delFSO As Object
Set delFSO = CreateObject("Scripting.FileSystemObject")
delFSO.DeleteFolder Text1.Text, True
Exit Sub
ErrorLabel:
If Err.Number = 76 Then
MsgBox ("Путь к папке указан неверно"), vbCritical
Text1.SetFocus
End If
End Sub

Private Sub Text1_Validate(Cancel As Boolean)
If Text1.Text = Empty Then
MsgBox ("Введите путь"), vbCritical
Cancel = True
Exit Sub
End If
End Sub

 

<наверх>

 

1.2 > Как добавить CheckBox в ComboBox?

 

Option Explicit
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _
(ByVal hwndParent As Long, _
ByVal hwndChildAfter As Long, _
ByVal lpszClass As String, _
ByVal lpszWindow As String) As Long
Private Declare Function SendMessageLong Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Const EC_LEFTMARGIN = &H1
Const EC_RIGHTMARGIN = &H2
Const EC_USEFONTINFO = &HFFFF&
Const EM_SETMARGINS = &HD3&
Const EM_GETMARGINS = &HD4&
Dim i As Byte
Private Sub AddCheckToCombo _
(ByRef chkThis As CheckBox, _
ByRef cboThis As ComboBox)
Dim lhWnd As Long
Dim lMargin As Long
lhWnd = FindWindowEx(cboThis.hwnd, 0, "EDIT", vbNullString)
If (lhWnd <> 0) Then
lMargin = chkThis.Width \ Screen.TwipsPerPixelX + 2
SendMessageLong lhWnd, EM_SETMARGINS, EC_LEFTMARGIN, lMargin
chkThis.BackColor = cboThis.BackColor
chkThis.Move cboThis.Left + 3 * Screen.TwipsPerPixelX, _
cboThis.Top + 2 * Screen.TwipsPerPixelY, chkThis.Width, _
cboThis.Height - 4 * Screen.TwipsPerPixelY
chkThis.ZOrder
End If
End Sub
Private Sub Form_Load()
Check1.Width = 200
Check1.Height = 200
AddCheckToCombo Check1, Combo1
For i = 0 To 4
Combo1.AddItem i
Next
End Sub
Private Sub Check1_Click()
Label1 = Combo1.ListIndex
End Sub
Private Sub Combo1_Click()
'Если флажок установлен покажем в метке номер строки
If Check1.Value = 1 Then Label1 = Combo1.ListIndex
End Sub

 

<наверх>

 

1.3 > Как получить имя компьютера?

 

Option Explicit
Private Declare Function GetComputerName _
Lib "kernel32" Alias "GetComputerNameA" _
(ByVal lpBuffer As String, _
nSize As Long) As Long
Private Sub Form_Load()
Dim strName As String
Dim bytSize As Long
bytSize = 31
strName = String(bytSize, "X")
GetComputerName strName, bytSize
strName = Left(strName, bytSize)
AutoRedraw = True
Print strName
End Sub

 

Скачать пример

 

Второй варинат:

Автор: AWP <http://www.kbyte.ru/service/showprofile.aspx?id=18>

 

А в Excel (и не только!) можно и проще:

 

Dim CompName As String
CompName = ComputerName
MsgBox Prompt:=CompName, Buttons:=vbOKOnly, Title:="Имя компьютера"

 

<наверх>

 

1.4 > Как перехватить нажатие клавиши Escape?

 

Когда фокус имеет текстовое поле.
Таким образом можно перехватить и другие клавиши…

 

Option Explicit
‘Перехватываем нажатие клавиши Escape в текстовом поле
‘И посылаем в поле PRESS
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
‘Нажатие клавиши Escape на клавиатуре
‘Посылает в поле текст PRESS
If KeyCode = vbKeyEscape Then SendKeys "( )"
End Sub

 

<наверх>

 

1.5 > Как прочитать данные из файла в текстовое поле?

 

Варинат #1:

 

Option Explicit
'Multiline = True
Private Sub Form_Load()
Dim Str As String
Dim FileNum As Byte
FileNum = FreeFile
'Не забудьте создать файл в папке с примером
'Иначе он будет создан программой, но будет пустой
'И результата вы не увидете
Open App.Path & "\123.txt" For Binary As FileNum
Str = Space(LOF(FileNum))
Get #FileNum, , Str
Text1 = Text1 & Str
Close #FileNum
End Sub

 

Вариант #2:

 

Option Explicit
Private Sub Form_Load()
Dim FileNum As Byte
Dim Str As String
FileNum = FreeFile
Open App.Path & "\1.txt" For Input As FileNum
Do Until EOF(FileNum)
Line Input #FileNum, Str
Text1 = Text1 & Str & vbCrLf
Loop
End Sub

 

Более подробную информацию по работе с файлами смотрите здесь:

http://www.kbyte.ru/forum/show.aspx?id=517

 

<наверх>

 

Универсальные коды

Ведущий раздела: Немиро Алексей <aleksey@kbyte.ru>

http://www.kbyte.ru/unicode/

 

2.1 > VB 6.0: TextBox: Как получить содержимое любой строки?

 

Создайте стандартный EXE-проект. На форме (Form) разместите один элемент TextBox и CommandButton. Установите свойство MultiLine = True у TextBox и вставьте следующий код:

 

Public Function nasGetLine(strText As String, lngLine As Long) As String
On Error Resume Next
Dim arrStrings() As String
arrStrings = Split(strText, vbCrLf)
If (lngLine - 1) > UBound(arrStrings) Then nasGetLine = "&#209;&#242;&#240;&#238;&#234;&#224; &#237;&#229; &#237;&#224;&#233;&#228;&#229;&#237;&#224;": Exit Function
nasGetLine = arrStrings(lngLine - 1)
End Function

Private Sub Form_Load()
Text1.Text = "&#209;&#242;&#240;&#238;&#234;&#224; 1" & vbCrLf & _
"&#209;&#242;&#240;&#238;&#234;&#224; 2" & vbCrLf & _
"&#209;&#242;&#240;&#238;&#234;&#224; 3" & vbCrLf & _
"&#209;&#242;&#240;&#238;&#234;&#224; 4" & vbCrLf & _
"&#209;&#242;&#240;&#238;&#234;&#224; 5"
End Sub

Private Sub Command1_Click()
MsgBox nasGetLine(Text1, 2)
End Sub

 

<наверх>

 

2.2 > VB 6.0: TextBox: Как скрыть/показать каретку?

 

Создайте стандартный EXE-проект. На форме (Form) разместите один элемент TextBox и CehckBox.

 

Private Declare Function HideCaret _
Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function ShowCaret _
Lib "user32" (ByVal hwnd As Long) As Long

Private Sub CheckCaret()
If Check1.Value = vbChecked Then
ShowCaret (Text1.hwnd)
Else
HideCaret (Text1.hwnd)
End If
End Sub

Private Sub Form_Load()
Check1.Value = 1
End Sub

Private Sub Text1_Change()
CheckCaret
End Sub

Private Sub Text1_GotFocus()
CheckCaret
End Sub

 

<наверх>

 

2.3 > VB 6.0: TextBox: Как узнать количество строк?

 

Создайте стандартный EXE-проект. На форме (Form) разместите один элемент TextBox, установите свойства MultiLine = True. Также, разместите на форме один элемент CommandButton.

 

Private Declare Function SendMessageLong _
Lib "user32" Alias "SendMessageA" _
(ByVal hwnd As Long, _
ByVal wMsg As Long, _
ByVal wParam As Long, _
ByVal lParam As Long) As Long
Const EM_GETLINECOUNT = &HBA

Private Sub Command1_Click()
Dim lngLineCount As Long
On Error Resume Next
lngLineCount = SendMessageLong(Text1.hwnd, _
EM_GETLINECOUNT, 0&, 0&)
MsgBox lngLineCount
End Sub

 

<наверх>

 

2.4 > VB 6.0: TextBox: Как запретить ввод определенных символов?

 

Создайте стандартный EXE-проект. На форме (Form) разместите один элемент TextBox и вставьте следующий код.

 

Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim sTemplate As String
sTemplate = "!@#$%^&*()_+="
If InStr(1, sTemplate, Chr(KeyAscii)) > 0 Then KeyAscii = 0
End Sub

 

<наверх>

 

2.5 > VB 6.0: TextBox: Как заблокировать стандартное меню?

 

Создайте стандартный EXE-проект. На форме (Form) разместите один элемент TextBox, также дополнительно создайте меню (Инструменты => Редактор меню… [Ctrl + E]) с одним элементом подменю. Имя меню первого уровня – mnuMyMenu.

 

Private Declare Function LockWindowUpdate _
Lib "User32" (ByVal hwndLock As Long) As Long

Private Sub Text1_MouseDown(Button As Integer, _
Shift As Integer, X As Single, Y As Single)
'on Error Resume next
If Button = vbRightButton Then
LockWindowUpdate Text1.hWnd
Text1.Enabled = False
DoEvents
PopupMenu mnuMyMenu
Text1.Enabled = True
LockWindowUpdate 0&
End If
End Sub

 

<наверх>


Выпуск подготовил: Немиро Алексей


В избранное