VBNet
VBMania
Голосование: Голосования сайта VBNet.Ru. Результаты голосований передаются на сайт. Проследите, что есть соединение с интернетом. Доска почёта: Sergey Y. Tkachev Кононенко Роман Kirill Ссылки: |
Господа!!! читайте MSDN!!! Несколько слов от автора:
Новый выпуск. Ничего нового в рассылке и на сайте не происходит... Меня поразило количество писем в раздел Вопрос/Ответ - почти час в базу данных закидывал!
Читайте! Содержание выпуска
Книги
Остальные книги о VB можно найти здесь. наверх Шифровка/расшифровка текста с использованием пароля Добавьте на форму элемент TextBox и два элемента CommandButton. Public Function Encrypt(ByVal Source As String, ByVal Password As String) As String 'шифрование данных Dim a As String Dim b As String Dim c As String Dim d As String Dim lentext As Long Dim lenpass As Long Dim cn As Long 'ввод исходных данных 'исходный текст для шифрования - запрашивается от пользователя, к примеру - a = Source 'пароль: может запрашиваться от пользователя b = Password 'итог шифрования c = "" 'узнаем длины каждой из строк lentext = Len(a) lenpass = Len(b) 'собственно шифрование For cn = 1 To lentext 'в этой строке разберитесь сами, здесь попросту выполняется функция Xor с каждым символом исходной строки и соответствующим символом пароля, как бы "повторенным" на всю длину исходного текста. Mid берет из середины строки символ, Asc - превращает его в ASCII-код, Str - превращает число в строку, Trim - удаляет пробелы d = Trim(Str(Asc(Mid(a, cn, 1)) Xor Asc(Mid(b, ((cn - 1) Mod lenpass) + 1, 1)))) 'а теперь сделаем так, чтобы каждый символ занимал ровно три позиции, вне зависимости от величины его ASCII-кода. А иначе как вы будете потом при расшифровке разбивать строку на символы? Select Case Val(d) Case 0 To 9 d = "00" + d Case 10 To 99 d = "0" + d End Select c = c + d 'ну вот и все, и так - с каждым символом из исходной строки Next cn 'в итоге в переменной с - зашифрованная строка, каждой исходной букве соответствует 3 символа, ее можно записать в любое место - в документ, к примеру: Encrypt = c End Function Public Function Decrypt(ByVal Code As String, ByVal Password As String) As String 'расшифровывание данных Dim a As String Dim b As String Dim c As String Dim d As String Dim lentext As Long Dim lenpass As Long Dim cn As Long 'строка для расшифровки c = Code 'пароль b = Password 'итог расшифровывания a = "" 'узнаем длины каждой из строк lentext = Len(c) lenpass = Len(b) 'собственно расшифровывание For cn = 1 To lentext Step 3 a = a + Chr(Val(Mid(c, cn, 3)) Xor Asc(Mid(b, (Int(cn / 3) Mod lenpass) + 1, 1))) Next cn 'в итоге в переменной a - расшифрованная строка, ее можно записать в любое место - в документ, к примеру: Decrypt = a End Function Private Sub Command1_Click() Text1 = Encrypt("никому не скажу", "parol") End Sub Private Sub Command2_Click() Text1 = Decrypt(Text1, "parol") End Sub наверх Изменение свойства Style (стиль) Если вы попытаетесь изменить свойство Style элементов OptionButton и CheckBox во время выполнения программы, вы получите сообщение об ошибке "can't assign to read-only property". Для решения этой проблемы вы можете воспользоваться следующим кодом. Добавьте на форму элементы OptionButton, CheckBox и 3 CommandButton. Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Const GWL_STYLE = (-16) Const BS_PUSHLIKE = &H1000& Public Sub SetGraphicStyle(StyleButton As Control, Flag As Boolean) Dim curstyle As Long Dim newstyle As Long 'exit this sub if the control is not Option Button or Check Box If Not TypeOf StyleButton Is OptionButton And _ Not TypeOf StyleButton Is CheckBox Then Exit Sub curstyle = GetWindowLong(StyleButton.hwnd, GWL_STYLE) If Flag Then curstyle = curstyle Or BS_PUSHLIKE Else curstyle = curstyle And (Not BS_PUSHLIKE) End If newstyle = SetWindowLong(StyleButton.hwnd, GWL_STYLE, curstyle) StyleButton.Refresh End Sub Private Sub Command1_Click() Call SetGraphicStyle(Option1, True) Call SetGraphicStyle(Check1, True) End Sub Private Sub Command2_Click() Call SetGraphicStyle(Option1, False) Call SetGraphicStyle(Check1, False) End Sub Private Sub Command3_Click() Option1.Value = False Check1.Value = False End Sub наверх Изменение высоты выпадающей части комбобокса (Вариант 1) Данный пример покажет, как можно изменить высоту выпадающей части элемента ComboBox в зависимости от высоты формы, на которой элемент расположен. Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long Private Sub Form_Load() Dim i As Integer ' Заполняем комбобокс значениями For i = 1 To 50 Combo1.AddItem Format$(i) Next i Combo1.ListIndex = 0 ' Меняем размер выпадающей части комбобокса ReSizeCombo Me, Combo1 End Sub Public Sub ReSizeCombo(frm As Form, cbo As ComboBox) ' Процедура меняет размер выпадающей части комбобокса Dim cboLeft As Long Dim cboTop As Long Dim cboWidth As Long Dim cboHeight As Long Dim oldScaleMode As Long ' Меняем Scale Mode формы на пиксели. oldScaleMode = frm.ScaleMode frm.ScaleMode = vbPixels ' Сохраняем размеры комбобокса cboLeft = cbo.Left cboTop = cbo.Top cboWidth = cbo.Width ' Задаем новую высоту комбобокса, в соотвествии с рабочей областью формы cboHeight = frm.ScaleHeight - cbo.Top - 5 frm.ScaleMode = oldScaleMode 'и собственно ресайзаем MoveWindow cbo.hwnd, cboLeft, cboTop, cboWidth, cboHeight, 1 End Sub Private Sub Form_Resize() ReSizeCombo Me, Combo1 End Sub наверх Как установить количество открываемых строк (вариант 1) Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Const CB_GETITEMHEIGHT = &H154 Private Sub Form_Load() Dim i As Integer 'Заполняем комбобокс значениями For i = 1 To 50 Combo1.AddItem Format$(i) Next i Combo1.ListIndex = 0 'Меняем размер выпадающей части комбобокса ReSizeCombo Me, Combo1, 9 End Sub Public Sub ReSizeCombo(frm As Form, cbo As ComboBox, n As Integer) 'Процедура меняет размер выпадающей части комбобокса Dim cboLeft As Long Dim cboTop As Long Dim cboWidth As Long Dim cboHeight As Long Dim oldScaleMode As Long Dim h As Long 'Меняем Scale Mode формы на пиксели. oldScaleMode = frm.ScaleMode frm.ScaleMode = vbPixels 'Сохраняем размеры комбобокса cboLeft = cbo.Left cboTop = cbo.Top cboWidth = cbo.Width 'Получаем высоту одной строчки в пикселях h = SendMessage(cbo.hwnd, CB_GETITEMHEIGHT, 0, 0) 'Задаем новую высоту комбобокса 'К количеству строк надо прибавить 2 (не знаю почему) cboHeight = h * (n + 2) frm.ScaleMode = oldScaleMode 'и собственно ресайзаем MoveWindow cbo.hwnd, cboLeft, cboTop, cboWidth, cboHeight, 1 End Sub наверх Изменение высоты выпадающей части комбобокса (Вариант 2) Изменяя значение '100' в событии Form_Load вы меняете высоту выпадающей части элемента ComboBox Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long Function SetComboHeight(YourCombo As ComboBox, lDropDownHeight As Long) Dim oldscalemode As Integer If TypeOf YourCombo.Parent Is Frame Then Exit Function oldscalemode = YourCombo.Parent.ScaleMode YourCombo.Parent.ScaleMode = vbPixels MoveWindow YourCombo.hwnd, YourCombo.Left, _ YourCombo.Top, YourCombo.Width, lDropDownHeight, 1 YourCombo.Parent.ScaleMode = oldscalemode End Function Private Sub Form_Load() 'Замените значение '100' ниже на нужную вам высоту элемента ComboBox SetComboHeight Combo1, 100 End Sub наверх Изменилось ли содержимое ComboBox Данный код позволяет проверить, изменилось ли содержиомое ComboBox'а Расположите на форме элементы ComboBox и CommandButton Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWndParent As Long, ByVal hWndChild As Long, ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Const EM_SETMODIFY = &HB9 Const EM_GETMODIFY = &HB8 Private Sub Command1_Click() Dim CombohWnd As Long Dim DirtyFlag As Long CombohWnd = FindWindowEx(Combo1.hWnd, 0&, vbNullString, vbNullString) DirtyFlag = SendMessage(CombohWnd, EM_GETMODIFY, ByVal 0&, ByVal 0&) If DirtyFlag = 1 Then MsgBox "Содержимое Combo Box изменилось" Else MsgBox "Содержимое Combo Box не изменилось" End If End Sub наверх Мои программы BalloonMessage for MS Agent BalloonMessage for Microsoft Agent реализует диалог программы с
пользователем, используя при этом технологию Microsoft Agent. OCX реализует три
типа диалоговых окон: InputBox, MsgBox и MsgLabels. Автора: Шатрыкин Иван и Павел Сурменок. наверх Вопрос/Ответ Здесь Вы можете задать вопрос, или ответить на уже имеющиеся вопросы. Вопросы:Автор вопроса: Igor Ответ ожидается по этому адресу В пакете Microsoft Office Word имеется перенос слов по слогам, если его можно использовать в своей программе, то как это можно сделать? Не хочется изобретать велосипед. Автор вопроса: Nechaev Sergey Ответ ожидается по этому адресу Как можно прицепить к TextBox'у свое контекстное меню, чтобы при нажатии правой кнопки мыши выскакивала моя менюшка а не стандартная. А может можно как-нибудь добавить в стандартное меню свой пункт? (хотя сильно в этом сомневаюсь). Писать свой контрол с нуля или подключать уже готовый не хотелось бы, т.к. данный ход нужен только в одном месте на весь проект, а сторонний контрол ресурсов сожрет немерено. Автор вопроса: Mystf0rse Ответ ожидается по этому адресу Если в буфер обмена помещается строка текста (к примеру адрес сайта), то как записать его отдельной строкой в файл(txt), если строка уже сужествует вывести сообщение и повторно не записывать. Автор вопроса: Артем Ответ ожидается по этому адресу Может кто подскажет, как сделать звонилку для Инета, восстанавливающую связь при обрыве, при работе по системе CallBack (обратный звонок). Т.к. телефонщики перешли на повременную оплату, все перешли на этот способ в ответ, но поставить задачу закачки на ночь невозможно т.к. этот метод стандартный софт дозвона не поддерживает. Автор вопроса: DAEDMEN Ответ ожидается по этому адресу Народ непоскажител какие есть типы БД с которымиможно было работать на ВБ, хорошобы чтоб они поддерживали тип данных в котором моглт бы храниться графические файлы. Автор вопроса: Сергей Ответ ожидается по этому адресу Как отобаяить в listbox имена файлов в укаяаной папки Автор вопроса: Сергей Ответ ожидается по этому адресу Как раяархивировать zip формат Автор вопроса: Юра Ответ ожидается по этому адресу Как сделать запрос к двум таблицам, которые храняться в разных базах данных? Автор вопроса: Vir Ответ ожидается по этому адресу А все таки как нарисовать треугольник по трем точкам. Конкретно мне надо: чтобы на экране нарисовался закрашенный треугольник. Если я буду рисовать его по линиям, то это займет много времени. Автор вопроса: Саша Ответ ожидается по этому адресу Private Declare Function RasEnumConnections Lib "RasApi32.dll" Alias "RasEnumConnectionsA" (lpRasCon As Any, lpcb As Long, lpcConnections As Long) As Long Private Declare Function RasGetConnectStatus Lib "RasApi32.dll" Alias "RasGetConnectStatusA" (ByVal hRasCon As Long, lpStatus As Any) As Long Private Const RAS95_MaxEntryName = 256 Private Const RAS95_MaxDeviceType = 16 Private Const RAS95_MaxDeviceName = 32 Private Type RASCONN95 dwSize As Long hRasCon As Long szEntryName(RAS95_MaxEntryName) As Byte szDeviceType(RAS95_MaxDeviceType) As Byte szDeviceName(RAS95_MaxDeviceName) As Byte End Type Private Type RASCONNSTATUS95 dwSize As Long RasConnState As Long dwError As Long szDeviceType(RAS95_MaxDeviceType) As Byte szDeviceName(RAS95_MaxDeviceName) As Byte End Type Public Function IsConnected() As Boolean Dim TRasCon(255) As RASCONN95 Dim lg As Long Dim lpcon As Long Dim RetVal As Long Dim Tstatus As RASCONNSTATUS95 TRasCon(0).dwSize = 412 lg = 256 * TRasCon(0).dwSize RetVal = RasEnumConnections(TRasCon(0), lg, lpcon) Tstatus.dwSize = 160 RetVal = RasGetConnectStatus(TRasCon(0).hRasCon, Tstatus) If Tstatus.RasConnState = &H2000 Then IsConnected = True Else IsConnected = False End If End Function Private Sub Form_Load() MsgBox IsConnected() End Sub Эта программа проверяет есть свяяь с инетом или нет Когда программу яапускаю под Win98 все рабоиает нормально, а когда под Win2000 Происходит крах программы Вопросы: 1.Почему ? 2.Какими функциями можно яаменить их чтобы работали под Win2000 3.Может кто янает как еще можно проверить есть свьяь с инетом или нет. Автор вопроса: LexSYs Ответ ожидается по этому адресу Не мог бы кто нибудь прислать мне не сложный пример на тему Ping... (как работать...) Желательно с описанием... Gav@beep.ru Автор вопроса: Andrey Ответ ожидается по этому адресу У меня VB60. Почему в его собственном редакторе не работает колесико у скролинговой мыши? Везде работает а в VB нет. Мышь обыкновенная Genius NetScroll. Драйвера стандартные Windows. Установлена Win98. Как можно решить? Или никак? А? Автор вопроса: Dr.Max Ответ ожидается по этому адресу Товарищи!! Может кто знает как в DirectDraw7 сделать объекта полупрозрачными???????? Ответы: Вопрос: Как отследить, какие клавиши нажимаются на клавиатуре, при этом форма находится в свернутом состоянии? Ответ: Автор ответа: Eugene Вытащил из API-Guide 3.7 'In a module Public Const DT_CENTER = &H1 Public Const DT_WORDBREAK = &H10 Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Declare Function DrawTextEx Lib "user32" Alias "DrawTextExA" (ByVal hDC As Long, ByVal lpsz As String, ByVal n As Long, lpRect As RECT, ByVal un As Long, ByVal lpDrawTextParams As Any) As Long Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer Declare Function SetRect Lib "user32" (lpRect As RECT, ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal Y2 As Long) As Long Global Cnt As Long, sSave As String, sOld As String, Ret As String Dim Tel As Long Function GetPressedKey() As String For Cnt = 32 To 128 'Get the keystate of a specified key If GetAsyncKeyState(Cnt) <> 0 Then GetPressedKey = Chr$(Cnt) Exit For End If Next Cnt End Function Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) Ret = GetPressedKey If Ret <> sOld Then sOld = Ret sSave = sSave + sOld End If End Sub 'In a form Private Sub Form_Load() 'KPD-Team 1999 'URL: http://www.allapi.net/ 'E-Mail: KPDTeam@Allapi.net Me.Caption = "Key Spy" 'Create an API-timer SetTimer Me.hwnd, 0, 1, AddressOf TimerProc End Sub Private Sub Form_Paint() Dim R As RECT Const mStr = "Start this project, go to another application, type something, switch back to this application and unload the form. If you unload the form, a messagebox with all the typed keys will be shown." 'Clear the form Me.Cls 'API uses pixels Me.ScaleMode = vbPixels 'Set the rectangle's values SetRect R, 0, 0, Me.ScaleWidth, Me.ScaleHeight 'Draw the text on the form DrawTextEx Me.hDC, mStr, Len(mStr), R, DT_WORDBREAK Or DT_CENTER, ByVal 0& End Sub Private Sub Form_Resize() Form_Paint End Sub Private Sub Form_Unload(Cancel As Integer) 'Kill our API-timer KillTimer Me.hwnd, 0 'Show all the typed keys MsgBox sSave End Sub Вопрос: Как отследить, какие клавиши нажимаются на клавиатуре, при этом форма находится в свернутом состоянии? Ответ: Автор ответа: Администратор Если нужно глобально, то без библиотеки не обойдешься. на сайт dansoft.narod.ru в разделе библиотеки есть библиотека Danlib.dll С помощью её ты и сможешь перехватывать нажатие клавишь клавиатуры и мыши. Вопрос: У меня такой вопросик: в Accessовской таблице есть два поля (допустим одно поле "Мужские фамилия", другое поле "Женские фамилия"), необходимо в отчете эти поля объединить в одно и отиндексировать по алфавиту. И такой вопросик: в Accessовской таблице есть поля (допустим поле "Пол" и поле "Имя"), необходимо в отчете вывести имена в два столбца параллельно (допустим справа Женские, а слева Мужские). Желательно пример кода, но буду рад даже мыслям и идеям! Ответ: Автор ответа: Eugene Запрос для объединения полей и сортировки: SELECT [МужскоеИмя] & " " & [ЖенскоеИмя] AS ОбъединенноеПоле, [Таблица].МужскоеИмя, [Таблица].ЖенскоеИмя FROM [Таблица] ORDER BY [МужскоеИмя] & " " & [ЖенскоеИмя]; В отчете создай поле, укажи данные из [ОбъединенноеПоле] Вопрос: Как на VB работать с графикой. Точнее со спайтами. Тобишь есть картинка. Как на ней яаставить двигаться другую картинку бея глюков. А то если испольяовать PicBox или Image то при движении появляються глюки. Желательно с примерами и по проши. Ответ: Автор ответа: Ревягин_Алексей впиши этот код в пустую форму, сохрани его, в директории где его сохранил помести два файла image1.jpg image2.jpg запусти и ... Dim Image1 As IPictureDisp Dim Image2 As IPictureDisp Private Type Location X As Integer Y As Integer End Type Dim Image1Move As Integer Dim Image2MoveX As Integer Dim Image2MoveY As Integer Dim Image1Local As Location Dim Image2Local As Location Const Operation = vbSrcAnd Private Sub Form_Load() 'Load the graphics Set Image1 = LoadPicture(App.Path & "\Image1.jpg") Set Image2 = LoadPicture(App.Path & "\Image2.jpg") 'Setup the window With frmMain .Show .Refresh .AutoRedraw = True .ScaleMode = vbPixels End With 'Load the variables Image1Move = 1 Image2MoveX = 3 Image2MoveY = 3 'Begin the loop Do 'Draw image 1 frmMain.PaintPicture Image1, Image1Local.X, Image1Local.Y frmMain.PaintPicture Image1, Image1Local.X + frmMain.ScaleWidth, Image1Local.Y frmMain.PaintPicture Image1, Image1Local.X, Image1Local.Y + frmMain.ScaleHeight frmMain.PaintPicture Image1, Image1Local.X + frmMain.ScaleWidth, Image1Local.Y + frmMain.ScaleHeight 'Draw image 2 frmMain.PaintPicture Image2, Image2Local.X, Image2Local.Y, , , , , , , Operation frmMain.PaintPicture Image2, Image2Local.X + frmMain.ScaleWidth, Image2Local.Y, , , , , , , Operation frmMain.PaintPicture Image2, Image2Local.X, Image2Local.Y + frmMain.ScaleHeight, , , , , , , Operation frmMain.PaintPicture Image2, Image2Local.X + frmMain.ScaleWidth, Image2Local.Y + frmMain.ScaleHeight, , , , , , , Operation 'Move the images With Image1Local .X = .X - Image1Move .Y = .Y - Image1Move If .X < -frmMain.ScaleWidth Then .X = 0 If .Y < -frmMain.ScaleHeight Then .Y = 0 End With With Image2Local .X = .X - Image2MoveX .Y = .Y - Image2MoveY If .X < -frmMain.ScaleWidth Then .X = 0 If .Y < -frmMain.ScaleHeight Then .Y = 0 If .X + frmMain.ScaleWidth > frmMain.ScaleWidth Then .X = -frmMain.ScaleWidth If .Y + frmMain.ScaleHeight > frmMain.ScaleHeight Then .Y = -frmMain.ScaleWidth End With 'Release for moving events etc. DoEvents Loop End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Image2MoveX = Int(frmMain.ScaleWidth \ 2 - X) \ 10 Image2MoveY = Int(frmMain.ScaleWidth \ 2 - Y) \ 10 End Sub Private Sub Form_Unload(Cancel As Integer) 'Close the program End End Sub Private Sub lblOperation_Click() End Sub Private Sub Label1_Click() End Sub Вопрос: Как сделать так (не обяяательно средствами visual'a), чтобы приложение яапускалось раньше всех в системе, ну имеется ввиду, после ее запуска? Т.е. своеобраяная автозагруяка, но раньше всех... Желательно, даже значки с рабочки и трей обогнать!!! Ответ: Автор ответа: Администратор Делай свою программу малых обьемов. Чем меньше программа тем быстрее она запустится. Вопрос: Как сделать так (не обяяательно средствами visual'a), чтобы приложение яапускалось раньше всех в системе, ну имеется ввиду, после ее запуска? Т.е. своеобраяная автозагруяка, но раньше всех... Желательно, даже значки с рабочки и трей обогнать!!! Ответ: Автор ответа: Ревягин_Алексей поместить строку запуска в RunServicies Вопрос: Как сделать так (не обяяательно средствами visual'a), чтобы приложение яапускалось раньше всех в системе, ну имеется ввиду, после ее запуска? Т.е. своеобраяная автозагруяка, но раньше всех... Желательно, даже значки с рабочки и трей обогнать!!! Ответ: Автор ответа: Eugene В Win98 это можно сделать в файле winstart.bat. Если его нет, нужно создать. Для WinXP, приложение можно загрузить как службу. Берешь любую службу, экспортируешь в .reg файл, изменяешь и запускаешь этот .reg файл. Вопрос: Я сделал отчет с помощью Crystal Reports Pro присоединил к форме, но когда яаношу новые данные в отчете они не обновляются, как это сделать или подскажите как можно сделать отчет по другому если это вояможно. Испольяую баяу данных MS Access Ответ: Автор ответа: Шувакин Н.В. ЕСТЬ ПРЕКРАСНАЯ ПРОГРАММА SEAGATE CRISTAL REPORTS ОНА ПОЗВОЛЯЕТ СОЗДАВАТЬ ОТЧЕТЫ ПРАКТИЧЕСКИ ИЗ ЛЮБЫХ БАЗ (ДАЖЕ ТЕКСТОВЫХ ФАЙЛОВ), В ТОМ ЧИСЛЕ И АВТОМАТИЧЕСКИ ОБНОВЛЯЕМЫЕ. ОЧЕНЬ РЕКОМЕНДУЮ. Я ИСПОЛЬЗУЮ SEAGATE CRISTAL REPORTS 8.0 Вопрос: Подскажите где вяять описание функций WinInet.dll. Ответ: Автор ответа: Tibor Самый простой способ не ждать пока ктонибудь тебе ето выложит, что врядле, а взять что-нибудь вроде W32Dasm и расковырять самому. :) Вопрос: Как получить полный объем жесткого диска и объем яагруженности жесткого диска. Ответ: Автор ответа: Rutshtein Alex Public Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" _ (ByVal lpRootPathName As String, _ lpSectorsPerCluster As Long, _ lpBytesPerSector As Long, _ lpNumberOfFreeClusters As Long, _ lpTotalNumberOfClusters As Long) _ As Long Public Function GetDiskSpace(lpRootPathName As String, FreeSpace As Long, TotalSpace As Long) As Boolean Dim lpSectorsPerCluster As Long Dim lpBytesPerSector As Long Dim lpNumberOfFreeClusters As Long Dim lpTotalNumberOfClusters As Long If GetDiskFreeSpace(lpRootPathName, lpSectorsPerCluster, _ lpBytesPerSector, lpNumberOfFreeClusters, _ lpTotalNumberOfClusters) <> 0 Then FreeSpace = lpSectorsPerCluster * lpBytesPerSector * lpNumberOfFreeClusters TotalSpace = lpSectorsPerCluster * lpBytesPerSector * lpTotalNumberOfClusters GetDiskSpace = True Else GetDiskSpace = False End If End Function Вопрос: Помогите советом. Можно ли в 98 Виндовсе сделать так чтобы нельзя было установить ни одной программы. А то достали пользователи. И еще где то мне попадалась инфа, что можно сделать чтоб при выключении компа реестр не сохраняется. соответсвенно какие бы настройки не изменяли. после загрузки будет все по старому. Проблемма в классе с учениками. то шрифт поставят большой, то цвета черти какие, а любимое выставлять частоту которую монитор не поддерживает. Вобщем достало это дело. Может кто то с этим сталкивался. Ответ: Автор ответа: -=CBK=-CRaSH Это эленементарно закачай с интернета программу windows configurator http://www.w98c.prv.pl/ или что-то подобное Вопрос: Помогите советом. Можно ли в 98 Виндовсе сделать так чтобы нельзя было установить ни одной программы. А то достали пользователи. И еще где то мне попадалась инфа, что можно сделать чтоб при выключении компа реестр не сохраняется. соответсвенно какие бы настройки не изменяли. после загрузки будет все по старому. Проблемма в классе с учениками. то шрифт поставят большой, то цвета черти какие, а любимое выставлять частоту которую монитор не поддерживает. Вобщем достало это дело. Может кто то с этим сталкивался. Ответ: Автор ответа: Mind Engine Для запрета вызова настроек диспелея+сотоварищи: HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System\NoDispCPL Ставь 1 и все... А вообще сходи на http://pisoft.da.ru или http://psoft.narod.ru Есть прога WinTune, она тебе поможет... Вопрос: Помогите советом. Можно ли в 98 Виндовсе сделать так чтобы нельзя было установить ни одной программы. А то достали пользователи. И еще где то мне попадалась инфа, что можно сделать чтоб при выключении компа реестр не сохраняется. соответсвенно какие бы настройки не изменяли. после загрузки будет все по старому. Проблемма в классе с учениками. то шрифт поставят большой, то цвета черти какие, а любимое выставлять частоту которую монитор не поддерживает. Вобщем достало это дело. Может кто то с этим сталкивался. Ответ: Автор ответа: my_postman Используй программу тонкой настройки реестра http://www.xteq.com/ если плохо знаешь реестр, рекомендую делать резервные копии. Предупреждаю! Некоторые настройки опасно изменять, так что если что повалится сам виноват. Вопрос: Помогите советом. Можно ли в 98 Виндовсе сделать так чтобы нельзя было установить ни одной программы. А то достали пользователи. И еще где то мне попадалась инфа, что можно сделать чтоб при выключении компа реестр не сохраняется. соответсвенно какие бы настройки не изменяли. после загрузки будет все по старому. Проблемма в классе с учениками. то шрифт поставят большой, то цвета черти какие, а любимое выставлять частоту которую монитор не поддерживает. Вобщем достало это дело. Может кто то с этим сталкивался. Ответ: Автор ответа: Igor A. Volkov Для того чтобы не позволять доступ к настройкам рабочего стола в реестре найди HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System элемент NoDispCpl и установи значение 1. При этом блокируется доступ как из Панели управления, так и через контекстное меню Рабочего стола. В ветви реестра HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer необходимо создать ключ NoSaveSettings и установить для него значение 1. При этом все настройки пользователей сохраняться не будут. Если создан для каждого пользователя свой профиль, то нужно создать ключ в ветке HKEY_USERS\[имя профиля]\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer для тех кому запрещено сохранять настройки. Эти исправления можно сделать ручками в реестре используя regedit, а можно задавая системные политики при помощи System Policy Editor для нужных юзеров. Его можно поставить с CD установки W98. (запусти "установка и удаление программ", "установка Windows", кнопка "Установить с диска" и укажи tools\Reskit\Netadmin\Poledit). Но самый лучший вариант - перейти на НТ ! Вопрос: Как на форме нарисовать треугольник по 3 точкам, может быть с помощью API функции, важна скорость прорисовки! Ответ: Автор ответа: Администратор пишишь что-то вроде. form1.line(x1,y1)-(x2,y2) form1.line(x2,y2)-(x3,y3) form1.line(x3,y3)-(x1,y1) Вопрос: Тупой вопрос Открываю Notepad пишу туда число 20 Закрываю. Смотрю размер файла - 2 байта Делаю тоже самое в ВБ Dim FileNum As Integer Dim txt As Byte FileNum = FreeFile txt = 20 Open "c:\file.txt" For Output As FileNum Write #FileNum, txt Close #FileNum Смотрю размер 4 байта Мне необходимо создать именно 2 байтовый Пробовал через Binary Access - добавляются левые символы Помогите примером Ответ: Автор ответа: -=CBK=-CRaSH Тут фишка ы том что тип byte занимает в памяти 4 байта и ты с этим ничего поделать на сможеш. Но ты можеш записать в файл страку. Dim FileNum As Integer Dim txt As STRING FileNum = FreeFile txt = "20" Open "c:\file.txt" For Output As FileNum print# FileNum, txt Close #FileNum и все будет ок Вопрос: Тупой вопрос Открываю Notepad пишу туда число 20 Закрываю. Смотрю размер файла - 2 байта Делаю тоже самое в ВБ Dim FileNum As Integer Dim txt As Byte FileNum = FreeFile txt = 20 Open "c:\file.txt" For Output As FileNum Write #FileNum, txt Close #FileNum Смотрю размер 4 байта Мне необходимо создать именно 2 байтовый Пробовал через Binary Access - добавляются левые символы Помогите примером Ответ: Автор ответа: P@Ssword Всё просто до безобразия, но не так просто, как кажется. 1) Два байта появляются из-за символа перевода строки. 2) Предлагаю вместо Write использовать Print. 3) Наверное не все знают, что если написать [Print "20"], то после "20" будет напечатан символ перевода строки; если написать [Print "20",], то после "20" будут напечатаны пробелы до столбца, кратного 14; а если написать [Print "20";], то после "20" не будет напечатано ничего (а ведь это было ещё на ZX-Spectrum'ах :). 4) Если кто ещё не понял, то ответ в пункте 3 %-) Вопрос: Тупой вопрос Открываю Notepad пишу туда число 20 Закрываю. Смотрю размер файла - 2 байта Делаю тоже самое в ВБ Dim FileNum As Integer Dim txt As Byte FileNum = FreeFile txt = 20 Open "c:\file.txt" For Output As FileNum Write #FileNum, txt Close #FileNum Смотрю размер 4 байта Мне необходимо создать именно 2 байтовый Пробовал через Binary Access - добавляются левые символы Помогите примером Ответ: Автор ответа: Sergey Поменяй Write# на Put# и output режим на binary и получишь искомые два байта: Dim FileNum As Integer Dim txt As Integer FileNum = FreeFile txt = 20 Open "c:\file.txt" For Binary As FileNum Put #FileNum, , txt Close #FileNum Вопрос: Тупой вопрос Открываю Notepad пишу туда число 20 Закрываю. Смотрю размер файла - 2 байта Делаю тоже самое в ВБ Dim FileNum As Integer Dim txt As Byte FileNum = FreeFile txt = 20 Open "c:\file.txt" For Output As FileNum Write #FileNum, txt Close #FileNum Смотрю размер 4 байта Мне необходимо создать именно 2 байтовый Пробовал через Binary Access - добавляются левые символы Помогите примером Ответ: Автор ответа: Sergei Gorlovetsky Add Reference to Microsoft Scripting Runtime Private Sub Command1_Click() Dim txt As Integer Dim fso As New FileSystemObject Dim tmp txt = 20 Set tmp = fso.OpenTextFile("c:\file.txt", ForWriting, True) tmp.Write txt tmp.Close End Sub Вопрос: Тупой вопрос Открываю Notepad пишу туда число 20 Закрываю. Смотрю размер файла - 2 байта Делаю тоже самое в ВБ Dim FileNum As Integer Dim txt As Byte FileNum = FreeFile txt = 20 Open "c:\file.txt" For Output As FileNum Write #FileNum, txt Close #FileNum Смотрю размер 4 байта Мне необходимо создать именно 2 байтовый Пробовал через Binary Access - добавляются левые символы Помогите примером Ответ: Автор ответа: Eugene Dim intFileNum As Integer Dim bytDigit As Byte intFileNum = FreeFile bytDigit = 20 Open "c:\file.txt" For Output As intFileNum 'Вместо Write нужно Print 'Перед записью в файл, преобразуем Byte в String 'с удалением лишних пробелов Print #intFileNum, Trim(Str(bytDigit)); 'Добавить точку с запятой ОБЯЗАТЕЛЬНО! 'Без онной в конец будут добавленны 2 кода ANSI/ASCII: '10 (LF - код перевода строки) и 13 (CR - код абзаца) Close #intFileNum 'Смотрю, размер уже 2 байта Вопрос: Подскажите как сохранить фаил .txt не вызывая диалога сохранения Ответ: Автор ответа: Tibor open FileName$ for output as #1 print #1, YourText$ close Вопрос: Как сделать, чтобы RichTextBox скроллился автоматически? Ответ: Автор ответа: Tibor Private Type SCROLLINFO cbSize As Long fMask As Long nMin As Long nMax As Long nPage As Long nPos As Long nTrackPos As Long End Type Private Declare Function GetScrollInfo Lib "user32" (ByVal hwnd As Long, ByVal n As Long, lpScrollInfo As SCROLLINFO) As Long Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Const SIF_RANGE = &H1 Const SB_VERT = 1 Dim lHeight As Long, OnePixel As Long Dim S As SCROLLINFO Private Sub Command1_Click() Do DoEvents ScrollUp 50 Loop End Sub Private Sub Form_Load() rtb1(0).LoadFile App.Path & "\mydoc.rtf", rtfRTF Picture1.Move rtb1(0).Left, rtb1(0).Top, rtb1(0).Width, rtb1(0).Height Set rtb1(0).Container = Picture1 OnePixel = Screen.TwipsPerPixelY S.cbSize = Len(S) S.fMask = SIF_RANGE Do Call GetScrollInfo(rtb1(0).hwnd, SB_VERT, S) If S.nMax = 0 Then Exit Do lHeight = S.nMax * OnePixel rtb1(0).Height = lHeight Loop If lHeight = 0 Then lHeight = rtb1(0).Height Text1 = lHeight / OnePixel rtb1(0).Move 0, 0 Load rtb1(1) rtb1(1).Visible = False End Sub Private Sub ScrollUp(delay As Long) Sleep delay With rtb1(0) .Top = .Top - OnePixel If .Top + .Height = 0 Then .Move 0, 0 rtb1(1).Visible = False End If If .Top + .Height <= Picture1.Height Then rtb1(1).Top = .Top + .Height rtb1(1).Visible = True End If End With End Sub Private Sub Form_Unload(Cancel As Integer) End End Sub Вопрос: Как подключить FileSystemObject? Какая библиотека за нее отвечает? Ответ: Автор ответа: Eugene Библиотека Microsoft Scripting Runtime (SCRRUN.DLL) Вопрос: Как найти число строк в Text1.Text? Как найти первое слово ия каждой стоки? Как польяоваться функцией Find в RichTextBox? Другими словами я соядал цикл: For i = 0 To [число строк в Text1.Text] RTFText1.Find [первое слово ия строки i] If [слово найдено] Then . . . End If Next i Всё что яаписанно в квадратных скобках, туда надо вписать правильный код. Да, и ещё, в Text1 текст записан вот так: чёрный, белый большой, малый . . . Ответ: Автор ответа: Ревягин_Алексей 1) достаточно посчитать количество vbnewline'ов 2) при поиске vbnewline'ов следующим символом искать пробел и выделить сово до пробела 3) with rtfbox pos = .Find(SLOVO, 0, len(.text)) Вопрос: Здрасьте, мой вопрос про изображения. Короче у элемента ImageBox есть свойство Stretch, оно подгоняет картинку под размеры элемента, но когда переносишь это изображение в PictureBox, то размеры опять меняются. А мне надо, чтобы они остались такими какими были в ImageBox (Stretch=true). Я пробовал делать так: Загружаю картинку в ИмагеБокс и с помощью метода PaintPicture пытаюсь перенести её в ПикчерБокс в том же виде, но получается ещё большая фигня чем была. Последнее я делал так: Private Sub Command1_Click() Image1.Picture = LoadPicture(Text1.Text) Picture1.ScaleMode = 3 Picture1.PaintPicture Image1.Picture, 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight, _ 0, 0, Image1.Width, Image1.Height, vbSrcCopy End Sub Что здесь не так? Или как мне вообще перенести картинку из ImageBox (stretch=true) в PictureBox не потеряв размеров? Помогите пожайлуста, я уже просто в отчаянии, пробовал и через буфер, и через файл - никак не получается. Была надежда на метод PaintPicture и та провалилась. Как мне сделать так, как написано выше? Ответ: Автор ответа: P@Ssword Picture1.PaintPicture Image1.Picture, 0, 0, Image1.Width, Image1.Height Вопрос: Вот вам товарищи программеры обломный вопрос - как вставлять модели 3DMax'а в VB6 программы и самое главное как ими потом управлять, если можно с примерами и по проще... А то вот собрался 3D елку к новому году зделать а как MAX'овские модели всавлять неизвестно :( P.S. кстати если кто хочет присоединится к моему проэкту всегда пожалуйста, несколько vb программеров работающих за одно - это сила :)) Ответ: Автор ответа: -=CBK=-CRaSH Вставлять 3д модели в вб нальзя. но можно их саздавать с помощью OpenGl или DirectX Вопрос: Вот вам товарищи программеры обломный вопрос - как вставлять модели 3DMax'а в VB6 программы и самое главное как ими потом управлять, если можно с примерами и по проще... А то вот собрался 3D елку к новому году зделать а как MAX'овские модели всавлять неизвестно :( P.S. кстати если кто хочет присоединится к моему проэкту всегда пожалуйста, несколько vb программеров работающих за одно - это сила :)) Ответ: Автор ответа: RomanBor Вставить в принцыпе не сложно... есть 3D движки для VB например Revolution 3D посмотри на сайте http://vbstreets.ru/ или вот сам сайт разработчика движка там с примерами и прочее... интересная штучка ... http://revolution3d.net/ Вопрос: Что такое Package & Deployment Wizard и нафиг это надо???? Ответ: Автор ответа: RomanBor PDW это приблуда к VB нужна для создание установочных пакетов... она засовывает все ocx и Dll в один пакети потом при установке пихает все это куда укажеш там в win\system... и т.д. и в Пуск прописывает... вот. но кривая она лудше пользоваться какой нить другой например хотя бы NSIS Вопрос: Что такое Package & Deployment Wizard и нафиг это надо???? Ответ: Автор ответа: -=CBK=-CRaSH Создавать инсталяшки к твоим проектам. В них запиханы все файлы требуюшиеся для работы твоей проги Вопрос: Что такое Package & Deployment Wizard и нафиг это надо???? Ответ: Автор ответа: Nechaev Sergey Тупая мелкософтовская прога для создания инсталляций. К тому же глючит на любом компе, где формат даты и времени не совпадает с американским. Вопрос: Что такое Package & Deployment Wizard и нафиг это надо???? Ответ: Автор ответа: Rutshtein Alex Это программа для создания инсталляции своей программы, написанной на VB. Для чего это надо? EXE-шник программы, написанной на VB требует наличия библиотеки msvbvb60.dll и других OCX-компонентов, которые были использованы при создании программы. Если программа (EXE-файл) переносится на другой компьютер, то должны перенестись и указанные выше файлы. Package & Deployment Wizard создаёт инсталляционный пакет, включая туда все необходимые файлы. Вопрос: Есть ли у кого-нибудь библиотека Microsoft Data Bound Grid Control 5.0 или ссылка где её можно скачать. В VB6.0 у меня она отсутствует. Ответ: Автор ответа: RomanBor Незнаю где от Microsoft взять эту штуку но вот тут есть гриды и покруче http://componentone.com/ кряк найти можно в инете на той же http://astalavista.com/ или www.cracks.am Вопрос: есть прога которая паботает с базой данных mbd. Переношу на другую машину, инсталлирую. При запуске пишет что не может найти поставщика данных. Для доступа к базе использую Microsoft Jet 3.51 OLE DB Provider(выбираю в свойствах элемента ADO Data). В литературе пишут что надо создать источник данных, т.е. файл с расширением mdl. Это не получилось. Тем не менее приложение работает на машине где есть VB. Win 2000 VB 6.0 Ответ: Автор ответа: RomanBor попробуй скачай вот эту штуку http://www.microsoft.com/data/download_21242023.htm это комплект доступа к данным и поставь на машине где хочеш установить эту прогу... Вопрос: есть прога которая паботает с базой данных mbd. Переношу на другую машину, инсталлирую. При запуске пишет что не может найти поставщика данных. Для доступа к базе использую Microsoft Jet 3.51 OLE DB Provider(выбираю в свойствах элемента ADO Data). В литературе пишут что надо создать источник данных, т.е. файл с расширением mdl. Это не получилось. Тем не менее приложение работает на машине где есть VB. Win 2000 VB 6.0 Ответ: Автор ответа: Rutshtein Alex Попробуй создать инсталляцию при помощи Package & Deployment Wizard, идущий в комплекте с VB, он все необходимые файлы включит в себя и, соответственно установит на другой компьютер Вопрос: есть прога которая паботает с базой данных mbd. Переношу на другую машину, инсталлирую. При запуске пишет что не может найти поставщика данных. Для доступа к базе использую Microsoft Jet 3.51 OLE DB Provider(выбираю в свойствах элемента ADO Data). В литературе пишут что надо создать источник данных, т.е. файл с расширением mdl. Это не получилось. Тем не менее приложение работает на машине где есть VB. Win 2000 VB 6.0 Ответ: Автор ответа: Ревягин_Алексей нужно поместить в директорию с программой файлы MSJINT35.DLL и т. д. Вопрос: Помогите! Кто-нибудь знает как сделать прогу, которая по нажатию на кнопку (Command1 например) удаляла бы все файлы из заданой папки? И еще. Кто-нибудь знает как сделать прогу при запуске которой по эрану бегала бы какая-нибудь зверюшка (может кто-нибудь видел овцу бегающую по экрану)? Ответ: Автор ответа: RomanBor посмотри на сайте http:\\vbstreets.ru\ там полно всякой такой лабуды... Вопрос: Помогите! Кто-нибудь знает как сделать прогу, которая по нажатию на кнопку (Command1 например) удаляла бы все файлы из заданой папки? И еще. Кто-нибудь знает как сделать прогу при запуске которой по эрану бегала бы какая-нибудь зверюшка (может кто-нибудь видел овцу бегающую по экрану)? Ответ: Автор ответа: -=CBK=-CRaSH ну про удаления это легко Public sub command1_click() on error goto fuck dim str as string str=text1.text 'в текстовом поле text1 хранится путь к папке с файлами Например C:\window\ последний слеш обязателен kill str exit sub fuck: msgbox "Типа ошибка" End sub А вот со вторым проблема Вопрос: Как пользоваться DLL? Желательно с примерами, но без ссылок. Ответ: Автор ответа: Ревягин_Алексей указываешь в Project->References нужную библиотеку, а потом в коде объявляешь переменную как этот объект и всё dim asd as MyLib sub asdasd() asd.adsdasd (ПАРАМЕТРЫ_ФУНКЦИИ) end sub Вопрос: Пишу: private sub fff (optional option1 as byte) Print IsMissing(option1) end sub Не работает всегда говорит False а если пишу private sub fff (optional option1) Print IsMissing(option1) end sub Все работает правельно ! Кто янает почему ??? Ответ: Автор ответа: Андрей Германович логично, ибо пара "optional/IsMissing" работает тока на Variant-параметры, а еси указан тип, то параметр инициалица в дефолт, а енто уже не миссинг. Можете заполнить эту форму, либо отослать вопрос СЮДА Форма для добавления нового вопроса в этот раздел. Информация отсылается по E-mail владельцу сайта. |
|||||||||||||||
Выпуск подготовили: |
Сурменок Павел |