Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Новости ИТ Программы Книги Games   Обои   Экспорт RSS E-Books
 
10 новых программ
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full
Mozilla Firefox 3.5.4
Download Accelerator Plus 9.3.0.4
SMSengeR 1.17
MKey 1.0
Next Video Converter 2.6.0
Advanced SystemCare 3.3.1
 
Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
 
 
Поиск по сайту


Вы недостаточно хорошо владеете компьютером и неумеете устанавливать Windows XP, Vista, драйвера и программы? Теперь это не проблема!

Полезный Видеокурс из 130 уроков научит вас собирать и модернизировать свой компьютер, устанавливать все необходимые программы и пользоваться ими!

>>> <<<

 
 

   Интернет технологии -> VBScript -> Visual Basic: Полезные советы


Здесь всё, что мне когда-нибудь помогло и я хотел бы этим поделиться с другими, а также полезные советы других пользователей.

1. Есть много программ, снимающих маски с окон с паролями... Все, наверное, видели: наводишь мышку на окно со звёздочками и в окне программы-взломщика появляется текст пароля. Приложения, написанные на Visual Basic не защещены от этого... Другими словами в текстовом окне всё же находится текст, только замаскированный. Я же нашёл как этого избежать:

  • в разделе формы General Declarations объявите переменную, котрая будет содержать код:

Dim pswd As String

  • в свойствах текстового поля установите в PasswordChar звёздочку "*". Теперь кликните по текстовому полю два раза и выберите событие Text1_KeyPress, впишите:

Private Sub Text1_KeyPress(KeyAscii As Integer)
   pswd = pswd + Chr(KeyAscii)
   KeyAscii = Asc("*")
End Sub

  • Теперь нажатия будут отлавливаться, а передоваться будут текстовому полю только звёздочки! И программа-взломщик пароль уже не достанет!!! Если кто-то хочет сделать так, как в Linux'e, т.е. никаких звёздочек нет вообще, то строку KeyAscii = Asc("*") надо заменить на KeyAscii = 0 и всё!

2.Сочитание операторов Chr(13) + Chr(10) можно заменять константой vbCrLf.


3.Чтобы Ваш EXE не был запущен одновременно два раза в событие Form_Load впишите:

Private Sub Form_Load()
If App.PrevInstance = True Then
   MsgBox "Проект уже запущен!"
   End
End If


4.Чтобы запустить на VB5.0 исходники, написанные на VB6.0 откройте файл проекта с расширением VBP каким-нибудь текстовым редактором и удалите строки:
Retained = 0
DebugStartupOption = 0


5.Если Вы применяете в вашей программе сравнение текстовых строк, то Вам будет полезно напоминание следующего:

  • строки одинаковые по содержанию, но различные по написанию будyт распознаны, как неравные:

"Visual Basic" <> "Visual BASIC"

  • если же Вы хотите, чтобы сходство проходило по содержанию, а не по написанию, то Вам придётся преобразовать обе строки к верхнему или нижнему регистру:

UCase ("Visual Basic") = UCase ("Visual BASIC")
'"VISUAL BASIC" = "VISUAL BASIC"
LCase ("Visual Basic") = LCase ("Visual BASIC")
'"visual basic" = "visual basic"

  • или же поставить в General Declaration опцию Option Compare Text. Программа будет тогда различать текст только по содержанию

6.Если Вы хотите В MsgBox'e вывести несколько строк и каждые раз с новой строки, то между этими строками нужно вставить константу vbCrLf:
MsgBox "Галодранци" + vbCrLf + "ycix краiн" + vbCrLf + _
"y eдiну кучку" + vbCrLf + "гоп!"


7. На одном из русских сайтов, посвященных VB, я наткнулся на целую дискуссию, посвященную тому, что делать и как бороться с Null (в частности, при работе с базами данных). Возможно, я не прав, но я всегда для этих целей пользуюсь маленькой функцией, помещенной где-нибудь в
модуле:

Public Function CheckNull(sCheck as String) as String
 If IsNul(sCheck) Then
  CheckNull = Empty
 Else
  CheckNull=Trim$(sCheck)
 End If
End Function

И все.


8.Очень часто вместо обычных кнопок используются картинки. Т.е. существует всего три картинки - одна на которую будут жать (img1), вторая отжатая (img2) и третья нажатая (img3) (img2 и img3 - невидимы). Делаем это так:

Private Sub Form_Load()
    'при загрузке формы картинка 1 принимает вид _
     картинки 2 (отжатая)
    img1.Picture = img2.Picture
End Sub

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
    'при нажатии мышкой на картинку 1, она принимает вид _
     картинки 3 (нажатая)
    img1.Picture = img3.Picture
End Sub

Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
    'при отпускании кнопки мышки картинка 1, она снова принимает вид _
     картинки 2 (отжатая)
    img1.Picture = img2.Picture
End Sub

Этот приём знает каждый... Но есть в нём один недостаток, а именно: при серии непрерывных кликов на объект картинка почему-то реагирует через раз. Т.е. то нажмётся, то не нажмётся. Так вот вот сам совет :-) : чтобы этого избежать в событие Img1_MouseDown нужно вставить строку

SendKeys "A"

Т.е. картинке одновременно посылается нажатая клавиша. Почему так, понять не могу сам. Но в скобках, конечно же, не важна буква "A" - там может стоять и В и С. Главное само событие. Если кто-нибудь может дать этому вразумительное объяснение - давайте! Заранее благодарю!


9.Если в течении работы программы Вам нужно несколько раз менять значения двух переменных, то используйте эту процедуру:

Sub Swap (V1 As Variant, V2 As Variant)
    Dim Mk As Variant
    Mk = V2
    V2 = V1
    V1 = Mk
End Sub

Вызов:
Swap x, y

Но объявление перменных желательно поменять с Variant на то, которое нужно Вам - меньше памяти надо будет. А эта процедура - универсальна! Чтобы не содержали аргументы V1 и V2, их значения поменяются местами.


10. В Бэйсике есть одна ОЧЕНЬ полезная, но многими забытая функция Environ! Она возвращает имена и содержание всех переменных среды операционной системы!!! Так, например, чтобы получить директорию Windows, совсем не надо прибегать к API-функции GetWindowsDirectory!!!!!! А получить её можно так:

ABC = Environ ("windir")

И ВСЁ!
Но и это ещё не всё! Также можно получить следующие перменные:

ABC = Environ ("TMP") 'директория временных файлов TEMP
ABC = Environ ("BLASTER") 'координаты звуковой карты
ABC = Environ ("PATH") 'пути, объявленные в autoexec.bat

НО И ЭТО ВСЁ ЕЩЁ НЕ ВСЁ!!!!
Чтобы получить имя и значение перменной, в скобках вместо строки надо поставить номер переменной (или индекс?).

Вставьте следуюшую процедуру в окно Code, запустите проект, кликните на форме увидите список всех переменных и их значений!

Private Sub Form_Click()
  'берём перменную и присваеваем ей единицу
   m = 1
  'запускаем цикл, который увеличивает переменную m каждый
  'раз на единицу и подсовывает её функции Environ
   Do
  'присваеваем перменной EnvString возвращаемую перменную,
  'соответсвующую номеру m
   EnvString = Environ(m)
  'печатаем перменную, соответсвующую номеру m
   Print Environ(m)
  'перменную m увеличиваем на один
   m = m + 1
  'если перменная EnvString всё ещё не пустая - крутим дальше...
   Loop Until EnvString = ""
End Sub

ТЕПЕРЬ ВСЁ! ;-)) И теперь все, кто недолюбливает API-функции (по-моему их вообще мало, кто долюбливает :-)) могут пользоваться только этой строчкой!


11.Чтобы сделать форму с рамками, но без заголовка, нужно изменить следующие её свойства:
Caption = ""
ControlBox = False


12.Если нужно поменять значение переменной As Boolean на противоположное, то вместо процедуры:

If ABC Then
   ABC = False
Else: ABC = True
End If

можно использовать строку:

ABC = Not ABC

И тогда какое значение не содержала бы переменная ABC, оно (значение) станет противоположным!


13.Чтобы в меню между пунктами ввести разделительную полоску, в окне "Menu Editor" в поле "Caption" введите "-" (тире), а поле "Name" любое имя.


14.Если ваша форма содержит меню, введите в событие Form_Load этот код и под меню появится маленькая полоска, подчёркивающая меню: 

AutoRedraw = True 
ScaleMode = 3 
Cls 
Line (0, 0)-Step(ScaleWidth, 0), QBColor(8) 
Line (0, 1)-Step(ScaleWidth, 0), QBColor(15) 
AutoRedraw = False

 
 


 


Новости ИТ
10.03.2010  Для ОС Android вышла новая версия набора Native Development Kit
10.03.2010  PayPal закрыл счёт архива компромата
10.03.2010  Продавцы eBay отказывают клиентам из России из-за медлительности российских почтовиков
10.03.2010  Место для русской Кремниевой долины
10.03.2010  ФБР будет искать украинских киберпреступников
10.03.2010  Майкрософт настоятельно рекомендует предпочесть 32-битный Office 2010 64-битному
10.03.2010  Freescale представила планшетник с ОС Chromium
10.03.2010  Слухи: Palm готовит еще один коммуникатор с webOS
10.03.2010  Процессор Intel Celeron P4500 выйдет во втором квартале
10.03.2010  Ноутбук Dell Adamo XPS провалился на рынке США
10.03.2010  Sceptre выпустила 27-дюймовый геймерский монитор X270W
10.03.2010  ASUS Eee Box EB1007 поддерживает HD-видео, но обходится без NVIDIA ION
10.03.2010  Настройщики: DSL Speed v.6.2
10.03.2010  Microsoft: средство удаления вредоносных программ из Microsoft Windows v.3.5
10.03.2010  Cisco не будет участвовать в противостоянии WiMAX и LTE
10.03.2010  Мультимедиа: MediaInfo v.0.7.29
10.03.2010  Первые системные платы Foxconn на чипсете AMD 890GX
10.03.2010  Веб-браузеры: Maxthon v.2.5.12 Build 4513
10.03.2010  Кодеки: x264 Video Codec r1471
10.03.2010  Мониторинг трафика: PRTG - Paessler Router Traffic Grapher v.7.3.2.5476
10.03.2010  Мультимедиа: ConvertXToDVD 2 v.4.0.10.324
10.03.2010  Компьютерные приводы Blu-ray Disc подешевели до $70-80
10.03.2010  Чистильщики: Wise Disk Cleaner v.5.12
10.03.2010  Диагностика: TaskInfo v.9.2.0.320
10.03.2010  Тестовые приложения: CrystalDiskMark v.3.0 Beta 5
10.03.2010  Dell представила серию ноутбуков «бизнес-класса» Vostro 3000 всех цветов и размеров
10.03.2010  Intel готовит двухъядерный процессор Atom N500 для нетбуков?
10.03.2010  Tamron отмечает шестидесятилетие выпуском первого объектива с ультразвуковым приводом фокусировки
10.03.2010  DreamBook Lite U11a и U12 ? пара функциональных нетбуков от Pioneer
10.03.2010  iSupply составила рейтинг компьютерных производителей

 
Advertisment

новостройки г москвы
Интернет магазин topalco - виски, оформить заказ.

 
Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100