Помощь проекту
|
Visual Basic
- Как в Visual Basic создать графическую кнопку?
- Как в Visual Basic создать иконку в трее?
- Как в Visual Basic создать многоуровневый каталог?
- Как в Visual Basic создать окно произвольной формы?
- Как в Visual Basic создать универсальную процедуру обработки массивов?
- Как в Visual Basic сохранить значение переменных?
- Как в Visual Basic сохранить параметры программы?
- Как в Visual Basic сохранить текущее значение индекса списка?
- Как в Visual Basic спрятать и показать курсор мыши?
- Как в Visual Basic спрятать кнопку Закрыть?
Как в Visual Basic создать графическую кнопку?
Создайте на форме 3 элемента Image: img1 - обрабатываемая картинка img2 - обычное изображение img3 - изображение когда нажата
Private Sub Form_Load() img1.Picture = img2.Picture End Sub
Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) img1.Picture = img3.Picture SendKeys "A" 'чтобы побароть западание End Sub
Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) img1.Picture = img2.Picture End Sub
Как в Visual Basic создать иконку в трее?
В этом примере показано, Как в Visual Basic можно использовать иконку в трее
Private Sub butAdd() cTray.hwnd = hwnd cTray.Icon = Icon cTray.ToolTipText = "Комментарий" cTray.Add End Sub
Private Sub Form_Load() Set cTray = New TrayIcon butAdd End Sub
Private Sub Form_Unload(Cancel As Integer) cTray.Delete Set cTray = Nothing End Sub
Private Sub butModify(ByVal Txt As String) cTray.ToolTipText = Txt cTray.Modify End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) cTray.CallEvent X, Y End Sub
Private Sub cTray_OnIcon(MouseButton As Integer) If MouseButton = cTray_MOUSE_LEFTDOWN Then ' если щелкнули левой кнопкой If MouseButton = cTray_MOUSE_LEFTDBLCLICK Then ' если дважды щелкнули левой кнопкой If MouseButton = cTray_MOUSE_RIGHTUP Then ' если щелкнули правой кнопкой End Sub
Следующий код необходимо добавить в модуль класса
Private Declare Function Shell_NotifyIcon Lib "shell32.dll" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, lpData As NOTIFYICONDATA) As Long Private Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Const NIF_MESSAGE = &H1 Const NIF_ICON = &H2 Const NIF_TIP = &H4 Const NIM_ADD = &H0 Const NIM_MODIFY = &H1 Const NIM_DELETE = &H2 Const WM_RBUTTONDOWN = &H204 Const WM_NULL = &H0
Private Type NOTIFYICONDATA cbSize As Long hwnd As Long uID As Long uFlags As Long uCallbackMessage As Long hIcon As Long szTip As String * 64 End Type
Private NID As NOTIFYICONDATA Private m_hWnd As Long Private m_Icon As Long Private m_ToolTipText As String
Public Enum TrayIcon_Mouse TRAYICON_MOUSE_NONE = 0 TRAYICON_MOUSE_LEFTDOWN = 1 TRAYICON_MOUSE_LEFTUP = 2 TRAYICON_MOUSE_LEFTDBLCLICK = 3 TRAYICON_MOUSE_RIGHTDOWN = 4 TRAYICON_MOUSE_RIGHTUP = 5 TRAYICON_MOUSE_RIGHTDBLCLICK = 6 End Enum
Public Event OnIcon(MouseButton As Integer)
Public Property Get hwnd() As Long hwnd = m_hWnd End Property
Public Property Let hwnd(ByVal NewValue As Long) m_hWnd = NewValue End Property
Public Property Get Icon() As Long Icon = m_Icon End Property
Public Property Let Icon(ByVal NewValue As Long) m_Icon = NewValue End Property
Public Property Get ToolTipText() As String ToolTipText = m_ToolTipText End Property
Public Property Let ToolTipText(ByVal NewValue As String) m_ToolTipText = NewValue End Property
Public Sub Add() Dim ret As Long NID.uID = m_hWnd NID.hwnd = m_hWnd NID.hIcon = m_Icon NID.szTip = Left$(m_ToolTipText, 63) & Chr$(0) NID.uFlags = NIF_TIP + NIF_MESSAGE + NIF_ICON NID.uCallbackMessage = WM_RBUTTONDOWN NID.cbSize = Len(NID) ret = Shell_NotifyIcon(NIM_ADD, NID) End Sub
Public Sub Modify() Dim ret As Long NID.hIcon = m_Icon NID.szTip = Left$(m_ToolTipText, 63) & Chr$(0) NID.uFlags = NIF_TIP + NIF_ICON NID.cbSize = Len(NID) ret = Shell_NotifyIcon(NIM_MODIFY, NID) End Sub
Public Sub Delete() Dim ret As Long NID.cbSize = Len(NID) ret = Shell_NotifyIcon(NIM_DELETE, NID) End Sub
Public Sub CallEvent(X As Single, Y As Single) Dim MouseButton As Integer
If Y Then Exit Sub MouseButton = (X And &HFF) / Screen.TwipsPerPixelX RaiseEvent OnIcon(MouseButton) End Sub
Public Sub CallPopupMenu(Window As Form, PopMenu As Menu, Optional Flags, Optional X, Optional Y, Optional DefMenu) SetForegroundWindow m_hWnd Window.PopupMenu PopMenu, Flags, X, Y, DefMenu PostMessage m_hWnd, WM_NULL, 0, 0 End Sub
Как в Visual Basic создать многоуровневый каталог?
Private Sub CreateLongDir(sDir As String) Dim sBuild As String, sDirTmp As String, i As Integer sDirTmp = sDir & "\" i = InStr (sDirTmp, ":") If i > 0 Then sBuild = Left$(sDirTmp, i) sDirTmp = Mid$(sDirTmp, i + 1) Else sBuild = "" End If Do i = InStr (2, sDirTmp, "\") If i = 0 Then Exit Do sBuild = sBuild & Left$(sDir, i - 1) sDirTmp = Mid$(sDirTmp, i) If Dir$(sBuild, 16) = "" Then MkDir sBuild End If Loop End Sub
Как в Visual Basic создать окно произвольной формы?
Private Declare Function SelectClipPath Lib "gdi32" (ByVal hdc As Long, ByVal iMode As Long) As Long Private Declare Function BeginPath Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function EndPath Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function PathToRegion Lib "gdi32" (ByVal hdc As Long) As Long Private Declare Function SetWindowRgn Lib "user32" (ByVal hWnd As Long, ByVal hRgn As Long, ByVal bRedraw As Boolean) As Long
Private Const RGN_COPY = 5
Private Sub Form_Load() Const TXT = " Cool programm" & vbCrLf & " from" & vbCrLf & "Cool Company" & vbCrLf & "CopyLeft by Ark" Dim hRgn As Long 'в данном примере форму окна будет определять надпись Font.Name = "Times New Roman" Font.Bold = True Font.Size = 60 Width = TextWidth(TXT) Height = TextHeight(TXT) BeginPath hdc CurrentX = 0 CurrentY = 0 Print TXT ' Здесь вместо текста можно рисовать фигуры EndPath hdc hRgn = PathToRegion(hdc) SetWindowRgn hWnd, hRgn, False
' Hачинаем фантазировать с формой. Можно так 'Picture = LoadPicture("c:\windows\облака.bmp") ' А можно так 'dclr = 256 / (TextHeight(TXT) / 30) 'clr = 0 'For i = 120 To 120 + TextHeight(TXT) Step 30 ' Line (0, i)-Step(5000, 0), RGB(0, 0, clr) ' clr = clr + dclr 'Next i ' Можно дать форме градиентную заливку и т.д. ' Двигаем к центру, а можно в таймере крутить 'Move (Screen.Width - Width) / 2, (Screen.Height - Height) / 2 End Sub
Как в Visual Basic создать универсальную процедуру обработки массивов?
В данном примере процедуре Crypt можно передавать для обработки линейны массив любого типа и размерности
Public Sub Crypt(Mas as Variant) Dim i as Integer For i = UBound(Mas) to LBound(Mas) Mas(i) = Mas(i) + 1 Next End Sub
Как в Visual Basic сохранить значение переменных?
Чтобы значение переменной сохранялось при выхде их процедуры, в разделе описания переменных введеите:
Static Str as String
Как в Visual Basic сохранить параметры программы?
Для того чтобы сохранить параметры программы можно воспользоваться процедурой SaveSetting и функцией GetSetting. Рассмотрим пример сохранения статуса окна программы.
SaveSetting App.Title, "Setting", "Key", WindowState
Здесь App.Title - имя программы, строка Setting может быть любой она обозначает что-то вроде раздела, Key - ключ указывающий на запись, чтото вроде переменной WindowState - это свойсво формы, вообще здесь может находиться лубое свойство, константа, переменная.
Для того чтобы прочитать эти данные используем функцию GetSetting
WindowState = GetSetting(App.Title, "Setting", "Key", "Default")
Для одного параметра поля Setting и Key должны быть одинаковыми. Параметр Default нужен в слуе если запрашиваемых данные еще не существует (при первом старте) и в таком случае он будет присвоен переменной (в нашем случае свойству WindowState) по умолчанию.
Как в Visual Basic сохранить текущее значение индекса списка?
Private Sub List1_LostFocus() List1.Tag = Format$(List1.ListIndex) End Sub
Private Sub List1_GotFocus() If List1.Tag <> "" Then List1.ListIndex = Cint(List1.Tag) End Sub
Как в Visual Basic спрятать и показать курсор мыши?
Public Declare Function ShowCursor Lib "user32.dll" (ByVal bShow As Long) As Long
X = ShowCursor(False) ' убрать курсор X = ShowCursor(True) ' показать курсор
Как в Visual Basic спрятать кнопку Закрыть?
В окне Property (Свойства) формы установить значение False свойству ControlBox.
|
|