Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Новости ИТ Программы Книги Games   Обои   Экспорт RSS E-Books
 
Поиск по сайту

10 новых программ
MKey 1.0
Next Video Converter 2.6.0
Advanced SystemCare 3.3.1
Process Hacker v.1.3.8
EssentialPIM v.3.0
IntelBurnTest 2.0
Tweak-7 1.0.518
Zortam Mp3 Media Studio 9.25
Power Notes 3.39
Ultimate Windows Tweaker 1.2
 
Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
 

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

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

>>>Узнать полные подробности о курсе! <<<

 
Новости Hi-tech компаний
Не упустите возможность пройти обучение в рамках ЛЕТНЕГО ПРЕДЛОЖЕНИЯ Высшей Школы ИТ

Компания Infobox получила награду «Партнер года 2009» от корпорации Microsoft.

Выпущен новый продукт EarthMediaCenter®: тысячи каналов онлайн телевидения и радио со всего мира - бесплатно!

В компании «ПЕРФЕКТСЕО» открыт новый отдел

Евросерверы - по евроценам!

 

   Интернет технологии -> 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

 
 
Популярные книги

Windows XP для всех

Подробнее

Практические работы по Excel на уроках информатики

Подробнее

Solid Works. Практическое руководство

Подробнее


 

Новости ИТ
03.07.2009  Bridgestone очень скоро пополнит список производителей «E-Book-ридеров»
03.07.2009  Объявлены финалисты конкурса Novell на видеоролик про Linux
03.07.2009  Дуэт The Tings Tings запишет «берлинский альбом»
03.07.2009  Intel Calpella и Windows 7 уменьшат спрос на ноутбуки
03.07.2009  Apple предупреждает о возможности перегрева iPhone
03.07.2009  Лишь каждый сотый ноутбук в этом году получит SSD
03.07.2009  HP ставит в рабочие станции шестиядерные процессоры AMD Opteron серии 2400
03.07.2009  Alienware выпускает игровой монитор OptX AW2210
03.07.2009  Контроллер вентиляторов NZXT Sentry 2 не имеет кнопок и ручек
03.07.2009  Bridgestone становится производителем электронной бумаги
03.07.2009  Zalman CNPS9900-NT - обновленный процессорный кулер CNPS9900 для Core i7
03.07.2009  Thermaltake ProWater PW880i - производительная СВО с частичным наружным размещением
03.07.2009  Gainward готовит «зеленые» варианты 3D-карты GeForce GTS 250
03.07.2009  Silicon Power выпустила энергоэкономичные наборы памяти DDR3-1333/1066 для Intel Core i7 и AMD AM3
03.07.2009  ОАО «МегаФон» реорганизовано
03.07.2009  MSI 760GTM-P33 - системная плата размера micro-ATX с неплохими возможностями
03.07.2009  Intel Calpella и Windows 7 уменьшат спрос на ноутбуки?
03.07.2009  Bridgestone становится производителем быстрой электронной бумаги для устройств E-Book Reader
03.07.2009  "Open Source" 046 -- новый выпуск электронного издания
02.07.2009  Spire PacificBreeze II - универсальный кулер для лэптопа

 
Полезно

новостройки г москвы
Интернет магазин topalco - виски, оформить заказ.
Объектив для nikon dynax 5 купить почтой.
Компания transwood.ru -бревно пиломатериалы .Клееный брус.
 
Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100