Съвети за Visual Basic (^_^)
Пишете ми: [email protected]
Как да изчистите записи от обект ListBox
До List1.ListCount = 0 List1.RemoveItem 0 Loop
Изчиства мигновено всяко списъчно поле.
Защита с парола в TextBox
Има много програми, които премахват маски от прозорци с пароли. Вероятно всеки е виждал: задържате курсора на мишката върху прозореца със звездички и текстът на паролата се появява в прозореца на програмата за кракване. Приложенията, написани на Visual Basic, не са имунизирани срещу това. С други думи, текстовото поле все още съдържа текст, само маскиран. Намерих как да избегна това: в секцията Общи декларации на формуляра декларирайте променлива, която ще съдържа кода: Dim pswd Като низ в свойствата на текстовото поле задайте звездичката "*" на PasswordChar. Сега щракнете два пъти върху текстовото поле и изберете събитието Text1_KeyPress, въведете:
Private Sub Text1_KeyPress(KeyAscii като цяло число) pswd = pswd + Chr(KeyAscii) KeyAscii = Asc("*") End Sub
Сега щракванията ще бъдат уловени и само звездичките ще бъдат предадени в текстовото поле! И програмата за кракер вече няма да получи паролата. Ако някой иска да го направи както е в Linux, т.е. изобщо няма звездички, тогава редът KeyAscii = Asc("*") трябва да се замени с KeyAscii = 0 и това е!
Преоразмерете всички контроли във формуляра
Опция Explicit Const K = 1.25 'ако 800/600 ще бъде 1.33333, но 1.25 е по-добре 'тази функция е свързана с откриване на разделителната способност на екрана
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
Частен под формата_load () 'Определете резолюциите на екрана Изберете Case GetSystemmetrics (0) Случай 640 Form1.Width = 9600 ' COMMAND1.width = 1500 случай 800 form1.width = form1.width * k command1.width =Command1.Width * K End Select Form1.Caption = GetSystemMetrics(0) & "x" & GetSystemMetrics(1) End Sub
Симулирайте натискане на бутон
Понякога, когато създавах програми, включващи елементи на изчислителни операции, трябваше да създавам клавиатури. За да създам визуален ефект от натискането на определен бутон във формуляра, когато въвеждам данни от клавиатурата, използвам събитията KeyDown и KeyUp на текстовото поле, където се въвежда информацията. Прави се по следния начин: В зависимост от условията на задачата вие или задавате свойството Text1.TabIndex = 0 (на етапа на проектиране) или му давате фокус Text1.SetFocus . В процедурата за събитие KeyDown на текстовото поле въведете
Private Sub Text1_KeyDown(KeyCode като цяло число, Shift като цяло число) Ако KeyCode = 97, тогава Command1.Default = True End Sub
и в процедурата за събитие KeyUp
Private Sub Text1_KeyUp(KeyCode като цяло число, Shift като цяло число) Ако KeyCode = 97, тогава Command1.Default = False End Sub
В текстовото поле Text1.Text започва да се отпечатва въведената информация, а бутоните на панела показват кой клавиш е натиснат. Примерът е даден само за един ключ - 1.
Управление на ключове
Трябваше да се преместя от едно текстово поле в друго с помощта на стрелките „надясно“ и „наляво“. Сега има решение и аз го нося.
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) Ако KeyCode = 39 и Text1.SelStart = Len(Text1.Text) Тогава Text2.SetFocus End Sub KeyCode=39 - коригира натискането на клавиша 'Right' Text1.SelStart = Len( Text1.Text) –Определяне на движението на курсора на местоположения, в този случай, така че курсорът да е в края на Text1 Text2.SetFocus – прехвърляне на фокуса върху Text2
Private Sub Text1_KeyDown(KeyCode като цяло число, ShiftКато цяло число) If KeyCode = 37 And Text2.SelStart = 0 Then Text1.SetFocus End Sub KeyCode = 37 - клавишът 'Left' е натиснат Text2.SelStart = 0 – определете местоположението на курсора, в този случай, така че курсорът да е в началото на Text2.Tex1.SetFocus – прехвърляне фокусът върху Text1
Копчета - картинки
Много често се използват снимки вместо обикновени бутони. Тези. има само три снимки - едната, която ще бъде натисната (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 като Single, Y като Single) 'когато бутонът на мишката бъде освободен, картина 1 ще се промени обратно на _ картина 2 (надолу) img1.Picture = img2.Picture End Sub
Всеки знае този трик. Но има един недостатък в него, а именно: при поредица от непрекъснати кликвания върху обект, картината по някаква причина реагира всеки друг път. Тези. ще натиска, няма да натиска. Ето го и самият съвет :-) : за да избегнете това, трябва да вмъкнете реда в събитието Img1_MouseDown
Тези. Натиснатият клавиш се изпраща едновременно към картината. Защо така, сама не мога да разбера. Но в скоби, разбира се, буквата "А" не е важна - там могат да стоят както B, така и C. Самото главно събитие.
Бутон за помощ в MsgBox
Ако трябва да направите MsgBox с бутон към конкретна страница от вашата помощ, направете следното:
MsgBox „ABCVisual Basic", vbMsgBoxHelpButton, "http://www.cm.f2s.com", _ "c:\file_path", 10
Където 10 е номерът на страницата на вашия помощен файл!
Сигнали за затваряне
Напишете как, така че програмата на Baysik да емулира натискането на Enter в системното съобщение от браузъра. Дойдоха много сигнали, но нежеланието за разтоварване на браузъра е по-добро, ако програмата се опита да натисне ENTER на съобщението. Ако съм разбрал всичко правилно, тогава имам нужда от програма, която периодично изпраща на браузъра натискане на клавиша ENTER? Така че давай! За да изпратите натискане на клавиш към нещо, то първо трябва да бъде активирано. Командата AppActivate е чудесна за активиране на прозорец. Но изисква заглавието на прозореца да бъде активирано или поне първите букви от заглавието. В този случай имахме късмет - когато браузърът изпраща предупреждения, името му е в заглавките! В моя случай това е Netscape. Ако имате Internet Explorer, тогава ще има нещо подобно :-) - което ще разберете сами. И сега трябва да напишем самата програма. 1.Създайте стандартен проект. 2. Прикрепете обект на таймер към него. Интервалът трябва да бъде зададен в зависимост от честотата, с която трябва да се изпращат кликванията. Вземете една десета от секундата - Интервал = 100. 3.Сега трябва да щракнете два пъти върху таймера и да отворите прозореца на кода. Въведете:
Private Sub Timer1_Timer() При грешка GoTo abc _ програмата ще работи дори при липса на _ прозорци - предупреждения. Активирането на прозорец, който не съществува _ причинява грешка AppActivate "Netscape" 'Активиране на прозорец със заглавие Netscape _ ' (Internet Explorer) SendKeys "
" 'Изпращане на клавиша ENTER: низ"
" е идентичен на 'низ "" abc: 'и товаетикет abc, към който отиваме, когато _ възникне грешка, етикет abc ни води директно към изхода от процедурата End Sub
Сега просто трябва да стартирате програмата и тя сама ще затвори всички предупреждения! Между другото се оказа много полезна програма за потребителите на Netscape - винаги пита дали да тегли или не? :)