Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Visual Basic для новичков и профессионалов 39


Информационный Канал Subscribe.Ru

Visual Basic для новичков и профессионалов # 39
Выпуск от 2005-08-08 11:10:50 - Архив Рассылки

 

Сегодня в выпуске:
>
Новости сайта
>
Новое на форуме
>
Вопросы и ответы
>
Курс обучения для начинающих
>
Компоненты, контролы, исходники
>
Статья выпуска
>
Наши партнеры
Бред автора

Здравствуйте уважаемые подписчики!

Здравтсвуйте, здравствуйте, здравствуйте! Что-то я запоздал с этим выпуском, не было времени, а письма все копятся и копятся.

В этом выпуске у меня к вам приятная новость: Открыт сайт VISUALBASIC.NOKA.RU!!! Сайт долго стоял, посетителей было немного, а вот доделать все до конца - не было времени! В общем, я принял решение открыть все-таки сайт для вас, так как уже более двух месяцев обещаю его открыть. В общем работает сайт нормально, но немного не дорвботан администраторский раздел и регистрация. Это не означает, что регистрация не работает. Наоборот, уже 24 человека зарегистрировались на сайте.

Что дает регистрация? Некоторые файлы защищены авторизацией (1% из всех файлов на сервере). Это означает, что пользователь не сможет скачать файл, пока не загеристрируется на сайте или не введет свой логин и пароль. Все очень просто и трудностей не составляет.

Проведем маленькое голосование: "Стоит ли создавать Web-форму отправки ответа или вопроса в рассылке и на сайте? ДА / НЕТ

В общем буду рад увидеть ваше мнение об этой идеи. Заранее спасибо.

Правила рассылки
1. Вопросы, касающиеся другой сферы программирования, а также сферы ПО - НЕ ПРИНИМАЮТСЯ!
2. Письма с указанием ссылок на какой-либо ресурс или сайт будут отвергнуты, либо ссылкы будут заменены на <РЕКЛАМА> и не будут опубликованы в рассылке!
3. Используйте текстовый (не HTML) формат писем при написании вопроса или ответа.
4. ПИСЬМА С СОДЕРЖАНИЕМ ТИПА "ПИШИ СЮДА, Я ТЕБЕ ВЫШЛЮ ИСХОДНИК", ЛИБО "НАПИШИ МНЕ, Я ТЕБЕ ОБЪЯСНЮ" БОЛЬШЕ НЕ ПУБЛИКУЮТСЯ! ЕСЛИ ВЫ ХОТИТЕ ПОДЕЛИТЬСЯ ФАЙЛОМ, ПРИСЫЛАЙТЕ ЕГО АВТОРУ РАССЫЛКИ. ЭТО ВАМ НЕ ФОРУМ И НЕ СЛУЖБА СООБЩЕНИЙ МЕЖДУ ПОДПИСЧИКАМИ!
Новости сайта www.basic.webhost.ru

Сайт открыт и работает!

Вопросы и ответы

 

Место
Имя (ник)
Счет
1
*Casper* (=)
86
2
Андрей (=)
64
3
Игорь (++++++)
63
4
Stormbringer (++)
42
5
Bullet [PCLO] (--)
40
6
HouseBugs (--)
37
7
AGavrilov (New!)
28
8
Андрей (now@) (---)
24
9
Alex Tolmasov (New!)
20
10
Bourn None (New!)
20

(+) - на место выше, (-) - на место ниже, (=) - прежнее место, (New!) - впервые в таблице.

Всего участников: 60 (+6)
Общее число баллов: 529 (+213)
Максимальный счет: 86 (=)
Минимальный счет: 0 (=)

Новые вопросы

111/ У меня к компу подключен принтер который в сети сделан общедоступным, можно ли сделать такое, чтобы если кто-то с другого компьютера послал что-нибудь ко мне на печать, то это застопорилось, а то я шнур принтера от компьютера включаю то в лазерный принтер, то в матричный (взависимости от того, что надо печатать), а в винде он у меня установлен как лазерный. А если мне пошлют на печать документ, когда у меня
матричный подключен ??? знаете какая кака-бяка получается...

Заранее благодарен Евгений
[Ответить]
112/ Привет. Как с помощью VB просмотреть исходный текст web страници. Как в
блокноте.
[Ответить]
113/ Я работаю над закачкой группы файлов с ftp через winsock. Подскажите как определить закачался файл полностью или нет? [Ответить]
114/ Как в Visual Basic работать с архивами (сжатие, распаковка, просмотр и
т.п.)?
[Ответить]
115/ Как при работе в сети при разрыве связи можно узнать, что связь разорвана
удаленным сервером или локальной программой (ошибка 600)?
[Ответить]
116/ Здравствуйте! У меня вопрос:
Как встроить в заголовок окна кнопочку (по типу программы API-GUIDE) и
соответственно отловить события на ней?
[Ответить]
117/ Как сделать чтобы при выборе шрифта с помощью Microsoft CommonDialog менялся
и набор символов (Кириллица, Западноевропейский и т.п.)? Спасибо.
[Ответить]
118/ Как зациклить проигрывание звукового файла (*.wav) в Visual Basic? [Ответить]
119/ Привет всем программистам! Недавно, читая статью об оптимизации приложений,
я столкнулся со следующим вопросом. Для того, чтобы вы меня правильно
поняли, цитирую часть статьи: "...Если вы создали большое приложение,
подумайте о том, как разбить его на более мелкие. Используйте только одну
главную исполняемую программу, которая вызывает другие программы, а также
DDE-технологию для осуществления связей. Когда вы открываете неглавное
приложение, откройте DDE-связь с главным приложением...". Так вот, может ли
кто-нибудь кратко рассказать об DDE-технологии? Я об этом имею лишь общее
понятие. Если можно, то объясните на примере. Заранее благодарю. С
уважением, Алексей.
[Ответить]
120/ Как организовать взаимодействие приложений клиент-сервер на базе файловых отображений на локальном компе. Как записать данные в файловое отображение, считать сохранить на диск и т.д.? [Ответить]
121/ Как программно можно получить список файлов в определенной директории,
разумеется, не используя FileList? Спасибо. Леха
[Ответить]
122/ Как сделать чтобы при нажатии на объект ListView НЕ воспроизводился тот
идиотский звук, который воспроизводится?
[Ответить]
123/ Добрый день !

Как закоментировать много строк , а не каждую отденльно ?
Пример ( ' ) коментрует одну строк , а как все сразу.

'For J = 0 To 11
' FCacheServer.VisM1.P0 = cboRik & "*" & cboN.Text & "*" & i
'FCacheServer.VisM1.Value = ""
'FCacheServer.VisM1.Code = "$$WR^KAN(.P0)"
'FCacheServer.VisM1.ExecFlag = 1
'If FCacheServer.VisM1.Value = 0 Then Exit For
'If FCacheServer.VisM1.Value = "" Then Exit For
'i = PieceBasic(FCacheServer.VisM1.Value, "*", 3)
' Text(i) = PieceBasic(FCacheServer.VisM1.Value, "*", 4)
'Next J

С уважением Александр.
[Ответить]
Вопросы, ответы на которые не были получены

40/ Здраствуйте ! У меня к вам будет один вопрос. Можно ли на ВБ (у меня установлена 6-я версия программы) сделать поиск подключенных компьютеров по локальной сети.Мне нужно узнать их ай-пи адрес и желательно имя компьютера. Я начинающий программист, если можно, обьясните более подробно. Заранее спасибо [Ответить]
62/ Здравствуйте уважаемуе программисты. Подскажите принцип работы с объектом phone. Вопрос жизни и смерти. [Ответить]
63/ Здравствуйте! Как сделать столбец для таблицы с помощью VB который будет показывать номера кварталов с min зарплатой(в таблице 4 квартала). Другой столбец - Динамика изменения средней зарплаты по кварталам (рост, падение, колебание, постоянно)\ нужно найти среднее знаение среди записей каждого отдела и чтобы написал динамику изменени, то что напискано в скобках, одно слово. [Ответить]
67/ Здравствуйте! У меня к Вам два вопроса по VBA. 1. Мне часто приходится выполнять расчеты в Excel по формулам. Каким образом можно организовать вычисление в цикле так, чтобы после каждого следующего обращения формулы к ячейке X ее содержимое изменялось бы с определенным шагом? 2. При поиске в таблице базы данных какого-либо значения я пользуюсь формулами "ВПР" или "ГПР". Как можно сделать, чтобы при нахождении приближенного значения функция возвращала наименьшее из наибольших значений в строке или столбце списка, а не наибольшее из наименьших, как заложено в формулах? Заранее благодарю. Александр. [Ответить]
76/ podskazhite pozhalusta, kak pravil'nee pristupit' k sozdaniu tablic i kakogo roda tablica nujna dlya vvoda, obrabotki i rascheta dannix, na VB.net. mne bazu sozdavat' ne nado. Zaranee spasibo [Ответить]
80/ Как прописать на кнопку запуск Microsoft Query? [Ответить]
88/ Здравствуйте. У меня такой вопрос: можно ли из VB послать команду так, чтобы включилась удалённая машина в сети, на которой включен WakeUp on LAN. Если да, то как? За ранее спасибо за оказанную помощь! [Ответить]
90/ Привет всем. Нужно с помоью программы отправлять данные на вебстраницу, а именно отправить номер телефона и SMS сообщение на страницу php в интернете. Помогите пожалуйста. [Ответить]
91/ Как записать данные из Excel-таблицы в DBF-файл? [Ответить]
98/ Здравствуйте. Пишу программу автоматического обзвона абонентов АТС по модему. Вопрос: как программно отследить момент снятия телефонной трубки и "проиграть" звуковой файл? Заранее спасибо [Ответить]
99/ Здравствуйте. Создается регистратор переговоров. Подскажите, пожалуйста, каким образом записать звук в файл, чтобы в дальнейшем можно было открыть его и прослушать? Заранее спасибо. [Ответить]
100/ Здравствуйте. Меня интересует протокол ZModem или подобный. Спасибо [Ответить]
107/ Как в Visual Basic можно создать свой элемент панели управления (*.cpl)? [Ответить]
Полученные ответы

54/Как сделать турнирную таблицу (Как в футболе). Самое главное - это сортировка. Заранее спасибо! [Ответить]

Отвечает: Bourn None
'программа сортирует массив из неупорядоченных чисел
'и выводит его на форму и в файл.
'сортировка производиться методом пузырьков.
Dim m() As Byte'массив для сортировки
Dim i, j, k, l As Byte
Dim a As Integer'количество шагов для сортировки

Private Sub Command1_Click()'сортировка по
невозрастанию
cot = 100'количество элементов массива для сортировки
ReDim m(1 To cot)
Dim asa As String
Open "1.txt" For Output As #1
For x = 1 To cot'массив генериться случайно
m(x) = Rnd(1) * 50
Print m(x);
Next x
Cls
Print "неупорядоченный массив";
For x = 1 To cot
Print m(x);
Next x
a = 0
For i = 2 To cot
For j = cot To i Step -1
a = a + 1
If m(j - 1) < m(j) Then
k = m(j - 1)
m(j - 1) = m(j)
m(j) = k
End If
Print "упорядоченный массив";
For x = 1 To cot
Print m(x);
asa = asa + Str(m(x))
Next x
Print #1, asa + "кол-во итераций" + Str(a)
asa = ""
Print "кол-во итераций" + Str(a)
Next j
Next i
Close
End Sub

Private Sub Command2_Click()'сортировка по возрастанию
cot = 100
ReDim m(1 To cot)
Dim asa As String
Open "1.txt" For Output As #1
For x = 1 To cot
m(x) = Rnd(1) * 50
Print m(x);
Next x
Cls
Print "неупорядоченный массив";
For x = 1 To cot
Print m(x);
Next x
a = 0
For i = 2 To cot
For j = cot To i Step -1
a = a + 1
If m(j) < m(j - 1) Then
k = m(j)
m(j) = m(j - 1)
m(j - 1) = k
End If
Print "упорядоченный массив";
For x = 1 To cot
Print m(x);
asa = asa + Str(m(x))
Next x
Print #1, asa + "кол-во итераций" + Str(a)
asa = ""
Print "кол-во итераций" + Str(a)
Next j
Next i
Close
End Sub

Оценка за ответ: 5
57/Здравствуйте. Уважаемы программисты, я не программирую на VB. Недавно появилась задачка, которую я предполагаю как можно решить, но не знаю как реализовать. Исходные данные. Есть сетевой принтер с возможностью двухсторонней печати. Пользователи работают с MS Word. На печать посылаются задания из n листов. При этом, листы с 1 по n-2 должны быть напечатаны с одной стороны. Лист n-1 является последним листом документа, а лист n оборотной стороной листа n-1. Предполагаемое решение. По нажатию кнопки "Печать1" из переменной "Количество листов в документе" извлекается значение n и если n<<2 выводится на экран сообщение "Печать с оборотом не возможна" и производится выход из программы, если n>>2 вызывается на исполнение функция печати, которой в параметрах передается: 1. Печатать листы с 1 по n-2; 2. Печатать без оборота. Вызывается на исполнение функция печати, которой в параметрах передается: 1. Печатать листы n-1, n; 2. Печатать с оборотом. При этом желательно сделать так, чтобы между вызовами функций печати в очередь печати не проскочило какое-нибудь задание. Естественно, все это оформить в виде макроса. Прошу Вас помочь мне. [Ответить]

Отвечает: Елизаров Игорь А
Итереееесно...

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

А для обычных принтеров в ворде уже давным-давно есть опция - печатать четные страницы или печатать нечетные.
печатаешь сначала все нечетные, потом переворачиваешь пачку и печатаешь все четные.
Но это хорошо делать только на ЛОКАЛЬНОМ принтере, иначе кто-нибудь влезет, напечатает хоть один листик и всю пачку можно выкидывать.

Оценка за ответ: 2
71/Например есть соединение с Интернетом и локальной сетью - как можно средствами VB6 узнать кол-во принятых и отправленных байт? Меня интересует конкретный пример, но можно хоть что-нибудь - если это вообще возможно. Заранее благодарю. [Ответить]

Отвечает: Инфа
На сто процентов точно сказать не могу, но это связано с компонентом Winsock.
Свойство называется, кажется, BytesReceived. Где-то в сети видел программу "Elf chat". В нем соединялись два компьютера по IP-адресу
с помощью Winsock'а. Где-то в коде юзается свойство BytesReceived. Правда считает оно количество байт, посланых в каждом сообщении.
Немного доработав код, получишь подсчет общей суммы. :)
Надеюсь, поможет.

Оценка за ответ: 3

Отвечает: Игорь
Для разных операционных систем функции получения отправленных и принятых
байт разные. Невозможно ответить на Ваш вопрос конкретно, не зная Вашу
операционную систему, да и займет это слишком много места на рассылке.
Поэтому, если Автор опубликует мое вложение (файл справки Windows - 102 КБ),
то в нем
Вы сможете найти ответ на поставленный Вами вопрос (см. пункт "Dial-Up
Statistics"). Оно также будет полезно всем, кто занимается программированием
Dial-Up Networking.
Скачать прикрепленный файл >>>
Оценка за ответ: 3

Отвечает: Игорь
На сколько мне известно, то при установке соединения с сетью, модем
записывает данные в реестре, в том числе и количество отправленных и
полученных байт (HKEY_DYN_DATA\PerfStats\StatData). Для получения этих
данных можно просто прочитать данные из реестра.
Создайте новый проект, добавьте в него два элемента Label и Timer. Оставьте
имена элементов по умолчанию (Label1, label2 и Timer1 соответственно). В
свойстве Caption элемента Label1 введите "Количество отправленных байт: 0
Бт", а Label2 - "Количество полученных байт: 0 Бт". Значение Interval
таймера установите на 1000.

Добавьте в код формы следующий код:

Option Explicit

Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias
"RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal
lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
' Note that if you declare the lpData parameter as String, you must pass it
By Value.
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias
"RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal
ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCloseKey Lib "advapi32" (ByVal hKey As Long) As
Long
Private Const HKEY_DYN_DATA = &H80000006
Private Const KEY_QUERY_VALUE = &H1

Public Function ReadLong(ByVal lRootKey As Long, strPath As String,
strValueName As String, lDefault As Long) As Long
On Error Resume Next
'read a long from the registry

Dim hKey As Long, lResult As Long, lData As Long
lResult = RegOpenKeyEx(lRootKey, strPath, 0, KEY_QUERY_VALUE, hKey)
If lResult = 0 Then
lResult = RegQueryValueEx(hKey, strValueName, 0&, 4, lData,
LenB(lData))
If lResult = 0 Then
ReadLong = lData
Else
ReadLong = lDefault
End If
Call RegCloseKey(hKey)
End If
End Function

Private Sub Timer1_Timer()
Label1.Caption = "Количество отправленных байт: " & ReadLong(HKEY_DYN_DATA,
"PerfStats\StatData", "Dial-Up Adapter\BytesXmit", 0) & " Бт"
Label2.Caption = "Количество полученных байт: " & ReadLong(HKEY_DYN_DATA,
"PerfStats\StatData", "Dial-Up Adapter\BytesRecvd", 0) & " Бт"
End Sub

Запустите программу на выполнение. При установке соединения с сетью
заголовки элементов Label1 и Label2 будут отображать количество отправленных
и полученных байт соответственно.
Этот вариант не идеален, но ничего другого я пока не знаю. Если кто-то
напишет, буду рад.
Скачать прикрепленный файл >>>
Оценка за ответ: 5
94/Писал я себе прогу одну на Visiual Basic`е 6.0 ,в которой используются немецкие символы, и столкнулся с одной проблемой. Дело в том что мне надо в Labe1.Caption было например слово "?ndern ",но вместо буквы "?"("а" с двумя точками вверху) у меня прописывается обычная "а".Помогите!!!...Если можно то пришлите ответ на мыло. [Ответить]

Отвечает: Андрей
Вам необходим какой-нибудь шрифт, который поддерживает немецкие буквы. Когда такой шрифт у вас будет, зарегистрируйте его в системе с помощью API-функции AddFontResource("путь к файлу шрифта"). Затем программно установите шрифт Label1 в тот, что только что зарегистрировали. При завершении программы удалите шрифт из системы с помощью функции RemoveFontResource("тот же самый путь"). Имхо самый простой вариант, нужно просто найти шрифт.

Оценка за ответ: 4
95/Добрый день! Как узнать программно(есть ли стандартные функции или нестандартные): -уровень заряда батарее в ноутбуке; -температуру жесткого диска; -температуру процессора; -скорости вентиляторов. Заранее благодарен! [Ответить]

Отвечает: Андрей
Вряд ли вам удастся получить такую информацию. Всё это можно найти в BIOS'е. Единственный выход - дизассемблировать BIOS и отловить, откуда там появляются эти значения. Увы, это достаточно сложно.

Оценка за ответ: 3

Отвечает: Stormbringer
Дан Эпплман приводит описание такой функции для состояния питания компа:

GetSystemPowerStatus
Объявление в VB:
Declare Function GetSystemPowerStatus& Lib "Kernel32" (lpSystemPowerStatus
as SYSTEM_POWER_STATUS)
Описание:
Функция получает информацию о состоянии питания компьютера.
Возвращаемое значение: True - в случае успеха, 0 при неудаче.

SYSTEM_POWER_STATUS
Объявление в VB
Type SYSTEM_POWER_STATUS ' 12 байт

ACLineStatus As Byte
BatteryFlag As Byte
BatteryLifePercent As Byte
Reserved1 As Byte
BatteryLifeTime As Long
BatteryFullLifeTime As Long

End Type

Описание

Структура описывает статус питания в системе .

ACLineStatus Byte - питание от сети:
0: не используется.
1: используется.
255: состояние неизвестно.

BatteryFlag Byte - заряд аккумулятора :

1 : высокий.
2: низкий.
4: критический.
8: идет зарядка.
128: аккумулятор отсутствует.
255: состояние неизвестно.

BatteryLifePercent Byte
процент заряда аккумулятора от 0
до 100, 255, если состояние неизвестно.

Reserved Byte
зарезервировано , должно быть равно нулю .

BatteryLifeTime
остаточная продолжительность работы от аккумулятора (в секундах),
&HFFFFFFFF, если состояние аккумулятора неизвестно.

BatteryFullLifeTime
продолжительность работы от аккумулятора при полном заряде (в
секундах ), &HFFFFFFFF, если величина неизвестна. Оценка выводится на
основании
полей BatteryLifeTime и BatteryLifePercent.

Оценка за ответ: 5
96/Как в элементе PictureBox, или в другом, вывести текст вертикально или под произвольным углом? [Ответить]

Отвечает: Stormbringer
см. прицепленный файл
Скачать прикрепленный файл >>>
Оценка за ответ: 5

Отвечает: Вячеслав
Привет
Прикрепляю исходник с примером
Вячеслав
Скачать прикрепленный файл >>>
Оценка за ответ: 5

Отвечает: Андрей
PictureBox используется для вывода картинок, а не текста, поэтому нарисуйте нужную фразу, поверните картинку на 90 градусов с помощью Paint и загрузите её в PictureBox. Чтобы вывести текст под углом, нужно создать специальный шрифт с помощью CreateFontIndirect:

Private Sub CanvasSetAngle(C as TCanvas, A as Single)
dim LogRec as TLOGFONT

GetObject(C.Font.Handle,SizeOf(LogRec),Addr(LogRec))
LogRec.lfEscapement = Trunc(A*10)
C.Font.Handle = CreateFontIndirect(LogRec)
End Sub

Ставим нужной канве нужный угол поворота и рисуем на ней текст.

Оценка за ответ: 4
97/Здравствуйте! Подскажите пожалуйста, как в VB Access программно можно запросить имя компьютера и сетевое имя компьютера, на котором размещена данная база? С уважением, Игорь. [Ответить]

Отвечает: Shmeliov Sergey
Если нужно имя компьютера, на котором выполняется программа, то используем Win32 API.
Создаем новый модуль с таким содержимым:
Option Compare Database
Option Explicit

Private Declare Function GetComputerName Lib "kernel32.dll" Alias "GetComputerNameA" _
(ByVal Buffer As String, ByRef bufSize As Long) As Boolean
Function MyGetCompName() As String
Dim bok As Boolean, cn As String * 512
bok = GetComputerName(cn, Len(cn))
MyGetCompName = Left(cn, InStr(cn, Chr(0)) - 1)
End Function

Sub test()
' Тестируем нашу функцию
MsgBox "Имя компьютера: " & MyGetCompName, , "Тест"
End Sub


Оценка за ответ: 4
101/Здравствуйте! Мне посоветовали перейти с VB.NET на VB 6.0, а о этой версии Бейсика я мало чего знаю, так что извините за множество ламерских вопросов:
Как записать переменную в файл(ну и извлечь конечно)?
Как повернуть элемент Picture1 на x градусов?
Есть ли в VB 6.0 коллекции и структуры, и если есть как с ними работать?
По-моему я где-то читал, что с помощью оператора PLAY можно проиграть любую ноту. Так ли это?
Как скопировать, переместить, удалить, переименовать файл?
Как в VB 6.0 нарисовать таблицу и записать данные, типа такой
Имя Рост Возраст
Лёха 160 12
Аня 130 9
Как переменной x придать значение расположения курсора по оси x (это надо сделать при щечке мыши)?
Как сделать чтобы при нажатии стрелочки вниз на клавиатуре выполнялась команда: y = y - 50
Как закрыть форму? Как открыть форму? Как закрыть всю программу?
Была идея, ещё когда программировал на VB.NET создать программу которая соединяла два компьютера, и когда оба компа соединены с инетом можно было посредством этой программы обмениваться SMS. Подскажите если можете.
И последний: Когда в VB.NET написал хоть строчку кода в папке проекта создаётся exe файл, запустив который запускается программа, однако в VB 6.0 я такого не заметил. Заранее спасибо -- С уважением, Леха
[Ответить]

Отвечает: Игорь
Ранее, отвечая на Ваш вопрос по поводу работы с файлами, я ответил и про
удаление файлов, а потом подумал, что, возможно Вам захочется удалять файлы
не сразу с диска, а помещая их в корзину, т.к. оператор удаления файлов, о
котором я писал, этого не делает. Поэтому привожу пример удаления файлов в
корзину. Для этого используйте следующий код:

Option Explicit

Private Declare Function SHFileOperation Lib _
"shell32.dll" (ByRef lpFileOp As _
SHFILEOPSTRUCT) As Long

Private Const ERROR_SUCCESS = 0&
Private Const FO_COPY = &H2
Private Const FO_DELETE = &H3
Private Const FO_MOVE = &H1
Private Const FO_RENAME = &H4
Private Const FOF_ALLOWUNDO = &H40
Private Const FOF_CONFIRMMOUSE = &H2
Private Const FOF_FILESONLY = &H80
Private Const FOF_MULTIDESTFILES = &H1
Private Const FOF_NOCONFIRMATION = &H10
Private Const FOF_NOCONFIRMMKDIR = &H200
Private Const FOF_RENAMEONCOLLISION = &H8
Private Const FOF_SILENT = &H4
Private Const FOF_SIMPLEPROGRESS = &H100
Private Const FOF_WANTMAPPINGHANDLE = &H20

Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String ' можно использовать только
' FOF_SIMPLEPROGRESS
End Type

Public Sub Recycle(ByVal FileName As String)
' вызов Recycle
Dim CFileStruct As SHFILEOPSTRUCT

With CFileStruct
.hwnd = Me.hwnd
.fFlags = FOF_ALLOWUNDO
.pFrom = FileName
.wFunc = FO_DELETE
End With

If SHFileOperation(CFileStruct) <> ERROR_SUCCESS Then
' произошла ошибка
End If

End Sub

'Чтобы протестировать процедуру, создайте кнопку Command1 в форме вашего
проекта, а также создайте какой-нибудь файл и удалите его с помощью такого
кода:

Private Sub Command1_Click()
Recycle "C:\TEST.tmp"
'здесь <C:\Test.tmp> - полный путь к удаляемому файлу
End Sub

Оценка за ответ: 5

Отвечает: Игорь
КАК ПЕРЕМЕННОЙ X ПРИДАТЬ ЗНАЧЕНИЕ РАСПОЛОЖЕНИЯ КУРСОРА ПО ОСИ X (ЭТО НАДО
СДЕЛАТЬ ПРИ ЩЕЧКЕ МЫШИ)?

Создайте новый проект. Добавьте в него 3 элемента Label. Оставьте имена по
умолчанию. В заголовке первого введите "Позиция курсора:", второго и
третьего - "Значение переменной MyX:" и "Значение переменной MyY:"
соответственно.
Добавьте в код формы следующий код:

Option Explicit

Dim MyX As Integer, MyY As Integer
Dim a As POINTAPI, pp(255) As Byte

Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As
Long

Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long)
As Integer
Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte)
As Long
Private Type POINTAPI
X As Long
Y As Long
End Type

Private Sub Form_Click()
GetCursorPos a
Label2.Caption = "Значение переменной MyX: " & a.X
Label3.Caption = "Значение переменной MyY: " & a.Y

End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single,
Y As Single)
GetCursorPos a
Label1.Caption = "Позиция курсора: (" + CStr(a.X) + "; " + CStr(a.Y) + ")"
End Sub

При движении мыши по форме в заголовке Label1 будет отображаться позиция
курсора мыши. При нажатии мышью по форме в заголовке Label2 и Label3 будут
отображаться расположение курсора по оси Х и Y соответственно. Пример
прилагается. Если я Вас правильно понял, то вроде бы всё!

Оценка за ответ: 5

Отвечает: Игорь
КАК ЗАПИСАТЬ ПЕРЕМЕННУЮ В ФАЙЛ (НУ И ИЗВЛЕЧЬ КОНЕЧНО)?

Прежде чем ответить на этот вопрос, хотелось бы узнать, в какой именно файл
Вы хотели бы записывать свои переменные. Файлы могут быть разные, например,
последовательного и произвольного доступа. Будем предполагать, что для Вас
это ПОКА не имеет никакого значения и я попытаюсь объяснить на примере
INI-файлов, т.к. этот тип файлов более всего подходит для хранения
переменных (во всяком случае, так считаю я и, думаю, что со мной многие
согласятся). Если Вы решили овладеть этим приемом, то Вам необходимо
полностью освоить работу с этим типом файлов, что я Вам и предлагаю сделать,
скачав пример, который я прицепил к своему ответу (конечно же, если Автор не
откажется его опубликовать). А пока отвечу на поставленные вопросы.

Создайте новый проект. Добавьте в него элемент TextBox, Label и две Command
Button. Оставьте все имена элементов по умолчанию - Text1, Label1, Command1
и Command2. В свойстве Caption первой кнопки введите <Записать данные>, а
второй - <Читать данные>. Добавьте в код формы следующий код:

Option Explicit

'Читает целый параметр из любого файла .INI
Private Declare Function GetPrivateProfileInt Lib "kernel32" Alias
"GetPrivateProfileIntA" (ByVal lpApplicationName As String, ByVal lpKeyName
As String, ByVal nDefault As Long, ByVal lpFileName As String) As Long
'Читает секцию из любого файла .INI
Private Declare Function GetPrivateProfileSection Lib "kernel32" Alias
"GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal
lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String)
As Long
'Читает строку из любого файла .INI
Private Declare Function GetPrivateProfileString Lib "kernel32" Alias
"GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal
lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As
String, ByVal nSize As Long, ByVal lpFileName As String) As Long
'Записывает секцию в любой файл .INI
Private Declare Function WritePrivateProfileSection Lib "kernel32" Alias
"WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As
String, ByVal lpFileName As String) As Long
'Записывает строку в любой файл .INI
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias
"WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal
lpKeyName As String, ByVal lpString As Any, ByVal lpFileName As String) As
Long

Private Function IniStringPrivate(SekName As String, KeyName As String,
IniFileName As String) As String
'Читает строковый параметр из любого файла .INI
'-------------------------------------------------
'SekName - имя секции (регистр не учитывается)
'KeyName - имя ключа (регистр не учитывается)
'"" - возвращаемое функцией значение, если ключ не найден
'IniFileName - имя файла .ini (если путь к файлу не указан,файл ищется в
папке Windows)

Dim sTemp As String * 256 'строковый буфер(под значение ключа)
Dim nTemp As Integer 'в неё запишется количество символов в строке ключа

nTemp = GetPrivateProfileString(SekName, KeyName, "", sTemp, 255,
IniFileName)
IniStringPrivate = Left$(sTemp, nTemp)
'ограничение - параметр не может быть больше 255 символов
End Function

Private Function IniWriteStrPrivate(SekName As String, KeyName As String,
Param As String, IniFileName As String) As Long
'Записывает строковый параметр в любой файл .INI
'-------------------------------------------------
'SekName - имя секции (регистр не учитывается)
'KeyName - имя ключа (регистр не учитывается)
'Param - значение,записываемое в ключ (не пустая строка)
'IniFileName - имя файла .ini (если путь к файлу не указан,файл ищется в
папке Windows)

Dim nTemp As Long
'Чтобы не удалить ключ, проверяем не пустой ли Param
If Param <> "" Then
nTemp = WritePrivateProfileString(SekName, KeyName, Param, IniFileName)
IniWriteStrPrivate = 1
Else
IniWriteStrPrivate = 0
End If
End Function

Private Sub Command1_Click()
Dim lTemp As Long
lTemp = IniWriteStrPrivate("Test", "MyOption", Text1.Text, App.Path &
"\TEST.ini")
If lTemp = 0 Then
MsgBox "Введите значение в поле ввода", vbExclamation + 0, Me.Caption
Text1.SetFocus
End If
End Sub

Private Sub Command2_Click()
Label1.Caption = "Параметр записи: " & vbNewLine & IniStringPrivate("Test",
"MyOption", App.Path & "\TEST.ini")

End Sub

При нажатии на кнопку <Записать данные> (Command1) будет произведена запись
текстового поля в ini-файл, который автоматически будет создан, если
такового не имеется в директории программы (локализацию ini-файла можно
поменять). При нажатии на кнопку <Читать данные> (Command2), в заголовке
Label1 будет отображено значение, которое Вы ранее записали.

В ini-файлах можно хранить огромное количество информации, которую даже
можно сортировать по типу (секциям). Ini-файлы также можно открывать и
изменять с помощью обычного блокнота. Немножечко тренировки и у Вас все
будет отлично получаться.
Совет: Не знаю, какую именно информацию Вы собираетесь хранить, но,
возможно, Вам необходимо узнать о хранении информации не в файлах, а в
реестре Windows? Спрашивайте, ответим.
Скачать прикрепленный файл >>>
Оценка за ответ: 5

Отвечает: Игорь
КАК СДЕЛАТЬ ЧТОБЫ ПРИ НАЖАТИИ СТРЕЛОЧКИ ВНИЗ НА КЛАВИАТУРЕ ВЫПОЛНЯЛАСЬ
КОМАНДА: Y = Y - 50

Создайте новый проект. В код формы вставьте следующий код:

Option Explicit
Dim y As Integer

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case 40 'т.е. стрелочка вниз
y = y - 50
Me.Caption = "Значение Y = " & y
Case 38 'т.е. стрелочка вверх
y = y + 50
Me.Caption = "Значение Y = " & y
End Select
End Sub

Private Sub Form_Load()
y = 0
Me.Caption = "Значение Y = " & y
End Sub

При нажатии стрелочки вниз и вверх на клавиатуре заголовок формы будет
отображать значение (вниз Y - 50 и вверх - Y + 50). Всё!

Оценка за ответ: 5

Отвечает: Игорь
КАК ЗАКРЫТЬ ФОРМУ? КАК ОТКРЫТЬ ФОРМУ? КАК ЗАКРЫТЬ ВСЮ ПРОГРАММУ?

А) ЗАКРЫТИЕ ФОРМЫ:
Unload FormName, где FormName - имя закрываемой формы, например, Unload
Form1
Если необходимо закрыть активную форму, можно написать Unload Me.

Иногда форму не обязательно закрывать, достаточно просто ее спрятать. Это
осуществляется с помощью оператора Hide - Hide FormName. При этом форма не
будет отображаться на экране, но будет загружена. Чтобы ее отобразить
необходимо будет снова воспользоваться оператором Show.

Хоть Вы и не спрашиваете, считаю необходимым поделиться еще одним советом:
ОТВЕТ НЕ В ТЕМУ: КАК ОПРЕДЕЛИТЬ ЗАГРУЖЕНА ЛИ ФОРМА
Если форма не отображается на экране, это еще не означает, что она
выгружена - она просто может быть спрятана. Следующая функция поможет Вам
определить загружена ли форма:

Function FormLoadedByName(FormName As String) As Boolean
Dim i As Integer, fnamelc As String
fnamelc = LCase$(FormName)
FormLoadedByName = False
For i = 0 To Forms.Count - 1
If LCase$(Forms(i).Name) = fnamelc Then
FormLoadedByName = True
Exit Function
End If
Next
End Function

Теперь, используя функцию FormLoadedByName(FormName) будет выдаваться
значение True если форма загружена или в противном случае False.

Б) ОТКРЫТИЕ ФОРМЫ:
Открытие формы осуществляется с помощью оператора Show - FormName.Show
([Modal], [OwnerForm]), где:

FormName - имя открываемой формы;

Параметры Modal и OwnerForm являются не обязательными:

Modal - указывает на необходимость модальности формы. Если форма открыта,
как модальная, то доступ к другим формам приложения будет закрыт пока форма
не будет закрыта. Модальность назначается с помощью константы vbModal
(модальное) и vbNormal (обычное) открытие формы.

OwnerForm - указывает форму, которая будет находится на уровень ниже
открываемой. Параметр активен только в случае обычного (vbNormal) формы.

В) ЗАКРЫТИЕ ВСЕЙ ПРОГРАММЫ:

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

По всей видимости, если Вы задаете вопросы данного рода, то Вы являетесь
новичком VB6, следовательно, вышеописанное Вам может быть не совсем
понятным. Чтобы не занимать место на форуме прикрепляю маленький пример
использования данных операторов.
Скачать прикрепленный файл >>>
Оценка за ответ: 5

Отвечает: Игорь
КАК СКОПИРОВАТЬ, ПЕРЕМЕСТИТЬ, УДАЛИТЬ, ПЕРЕИМЕНОВАТЬ ФАЙЛ?

В Visual Basic 6 применяется метод работы с файлами, который заключается в
использовании объектно-ориентированного подхода. В систему файловых объектов
FSO (File System Objects) входит набор классов объектов с большим
количеством методов.
Для того чтобы можно было пользоваться объектами FSO, необходимо подключить
к проекту библиотеку Microsoft Scripting Runtime в окне подключения ссылок
References (Ссылки), открываемом при выполнении команды References меню
Project (Проект). В этой библиотеке находятся все классы системы FSO.
Просмотреть методы и свойства классов можно с помощью окна Object Browser
(Браузер объектов), которое вызывается командой Object Browser меню View
(Вид). В этом окне все классы FSO находятся в библиотеке Scripting, которую
можно найти по этому имени в верхнем раскрывающемся списке.

После того, как Вы подключили к своему проекту библиотеку Microsoft
Scripting Runtime, необходимо создать объект системы FSO. Создать объект
системы FSO можно объявлением переменной типа FSO:

Dim NewFSO As NewFileSystemObject

Для создания объекта можно также использовать следующий оператор:

Set NewFSO = CreateObject("Scripting.FileSystemObject")
В данном случае Scripting.FileSystemObject - это требуемый объект с
указанием библиотеки.

После этого можно работать со свойствами и методами объекта NewFSO и
приступить к написанию действий о которых Вы спрашивали.

А) КОПИРОВАНИЕ ФАЙЛОВ:

Dim NewFSO As New FileSystemObject
NewFSO.CopyFile (Source As String, Destination As String, [OverWriteFiles As
Boolean = True]), где:
Source - строковая переменная; путь к файлу, который Вы хотите копировать,
например, "C:\Windows\Temp\PhotoTexture.bmp"
Destination - строковая переменная; путь, куда Вы хотите скопировать
указанный файл, например, "C:\Temp\PhotoTexture.bmp"
OverWriteFiles - может принимать значение True или False, т.е. возможность
перезаписывать существующий файл в папке назначения, если таковой уже
существует. По умолчанию значение установлено на True.

Пример:
Dim NewFSO As New FileSystemObject
NewFSO.CopyFile "C:\Windows\Temp\PhotoTexture.bmp",
"C:\Temp\PhotoTexture.bmp", True

Б) ПЕРЕМЕЩЕНИЕ ФАЙЛОВ:

Dim NewFSO As New FileSystemObject
NewFSO.MoveFile (Source As String, Destination As String), где:
Source - строковая переменная; путь к файлу, который Вы хотите переместить,
например, "C:\Windows\Temp\PhotoTexture.bmp"
Destination - строковая переменная; путь, куда Вы хотите переместить
указанный файл, например, "C:\Temp\PhotoTexture.bmp"

Пример:
Dim NewFSO As New FileSystemObject
NewFSO.MoveFile "C:\Windows\Temp\PhotoTexture.bmp",
"C:\Temp\PhotoTexture.bmp"

В) УДАЛЕНИЕ ФАЙЛОВ:

Dim NewFSO As New FileSystemObject
NewFSO.DeleteFile (FileSpec As String, [Force As Boolean = False])), где:
FileSpec - строковая переменная; путь к файлу, который Вы хотите удалить.
Force - логическая переменная, значение True указывает на удаление файлов,
помеченных как <только для чтения>, в противном случае (False - по
умолчанию) файл не будет удален.

Пример:
Dim NewFSO As New FileSystemObject
NewFSO.DeleteFile "C:\Windows\Temp\PhotoTexture.bmp",
False

Г) ПЕРЕИМЕНОВАНИЕ ФАЙЛОВ:
Dim NewFSO As New FileSystemObject
Dim File
Set File = NewFSO.GetFile(sNameFile)
File.Name = sNewFileName, где:
sNameFile - строковая переменная; полный путь и имя файла, который Вы хотите
удалить.
sNewFileName - строковая переменная, полный путь и новое имя для файла.

Пример:
Dim NewFSO As New FileSystemObject
Dim File
Set File =
NewFSO.GetFile("C:\Windows\Temp\PhotoTexture.bmp")
File.Name = "C:\Windows\Temp\NEW_PhotoTexture.bmp"

Для наглядности прикрепляю пример использования данных функций.
Скачать прикрепленный файл >>>
Оценка за ответ: 5

Отвечает: Stormbringer
Про таблицу и координаты курсора см. аттач

Записать переменную в файл можно двумя путями, код зависит от того какой тип
файлов ты хочешь использовать (последовательный или произвольный)

Код для последовательного(Запись):
Dim VarToFile as long
VarToFile = 1243
Dim fNum&, FilePath$
FilePath = "C:\test.txt"
fNum = Freefile
Open FilePath For Output as #fNum
Print #fNum, VarToFile
Close
Код для последовательного(Чтение):

Dim VarFromFile as long
Dim sTemp$
Dim fNum&, FilePath$
FilePath = "C:\test.txt"
fNum = Freefile
Open FilePath For Input as #fNum
Line Input #fNum, sTemp
Close

VarFromFile = Clng(sTemp)

'====================

Немного теории:
Если ты записываешь в файл несколько переменных(а скорее всего так и есть)
то тебе придется писать файл и читать его с определенным синтаксисом. Тут
есть много вариантов:
1. Ты записываешь переменные с символами разделителями.
2. Ты записываешь переменные по одной на каждой строке файла.
3. Ты используешь произвольный доступ к файлу.
Есть еще несколько вариантов но для начала тебе хватит и этих!

Операторы для варианта #1:

Открытие для чтения:

Open "Путь к файлу" For Input as #'Cвободный уникальный номер файла
полученный функцией FreeFile'

Открытие для записи:

Open "Путь к файлу" For Output as #'Cвободный уникальный номер файла
полученный функцией FreeFile'

Запись:

Write Переменная1, Переменная2, Переменная3, . . . ,ПеременнаяN

Чтение:

Input #'Номер открытого функцией Open файла', Переменная1, Переменная2,
Переменная3, . . . , ПеременнаяN

Закрытие:
Close #'Номер открытого функцией Open файла'
или
Close 'Для закрытия всех файлов открытых приложением.
'=====================

Операторы для варианта #2:

Открытие для чтения:

Open "Путь к файлу" For Input as #'Cвободный уникальный номер файла
полученный функцией FreeFile'

Открытие для записи:

Open "Путь к файлу" For Output as #'Cвободный уникальный номер файла
полученный функцией FreeFile'

Запись:

Print #'Номер открытого функцией Open файла', Переменная
'При каждом употреблении этот оператор переходит на новую строку(в файле)

Чтение:
Line Input #'Номер открытого функцией Open файла', 'Переменная типа string'
'При каждом употреблении этот оператор переходит на новую строку(в файле)

Закрытие:
Close #'Номер открытого функцией Open файла'
или
Close 'Для закрытия всех файлов открытых приложением.

Операторы для варианта #3:

В файл произвольного доступа записываются переменные определенного
пользователем типа. Они не должны содержать в себе переменные изменяемой
длины, и объектные переменные.
Пример объявления пользовательской переменной:

Private Type MyType
s as string * 30
l as long
d as date
a as Byte
b as integer
..........
End Type

Обращение к частям таких переменных происходит через точку, например
MyType.s
вернет вам значение записанное как
MyType.s = "sdgffdgdfgdfgdfgfdg"
'но в случае если переменная короче 30 символов(только для типа String)
недостающие символы заполнятся пробелами(Используй функцию Trim для обрезки
пробелов), а в случае если длина переменной типа стринг превышает 30 строка
урежется до 30' можно указать другую границу см. выше.

Это как бы введение, теперь запись этой лобуды в файл:

Будем использовать пользовательскую переменую типа PointAPI, вы можете
определить тип и использовать переменную этого типа вместо PointAPI.
Private Type PointAPI
x as Long
y as Long
End Type



Открытие для чтения:

Open "Путь к файлу" For Random as #'Cвободный уникальный номер файла
полученный функцией FreeFile' Len = Len('Переменная типа PointAPI')

Открытие для записи:

Open "Путь к файлу" For Random as #'Cвободный уникальный номер файла
полученный функцией FreeFile' Len = Len('Переменная типа PointAPI')

Запись:

Put #'Номер открытого функцией Open файла', 'Необязательный параметр номер
записи(по умолчанию текущая запись)', 'Переменная типа PointAPI'

Чтение:

Get #'Номер открытого функцией Open файла', 'Необязательный параметр номер
записи(по умолчанию текущая запись)', 'Переменная типа PointAPI'


Закрытие:
Close #'Номер открытого функцией Open файла'
или
Close 'Для закрытия всех файлов открытых приложением.
'=====================

Вопрос о структурах:
В VB есть и структуры данных и коллекции
Со структурами данных работа происходит следующим образом:
Объявление пользовательской структуры

[Public|Private] Type UserTypeName
first as string
second as long
third as byte
fourth as date
. . .
End Type
внутри пользовательских структур лучше использовать только стандартные типы
данных(string, variant, long, byte, date, boolean, Integer).

Общаться с выше приведенной структурой следует также как и со
свойствами(UserTypeName.first)
У коллекций в VB 4 стандартных метода
Add
Remove
Count




Операции с файлами:
Копирование:
FileCopy "имя существующего файла", "имя нового файла" 'не понимает символы
*? и т.п.
Удаление:
Kill "имя файла"
Переименование
Name "старое имя", "новое имя"
Создание папки:
MkDir "путь"
Удаление пустой папки:
RmDir "путь"
Замена текущего каталога:
ChDir "путь"
Замена текущего диска:
ChDrive "C:\"

Таблицы:
Зачем тебе именно рисовать таблицы? Наверно тебе лучше подойдет вариант
использовать контрол, например MSFlexGrid.
MSFlexGrid использовать нужно так:
подключение контрола к проекту:
Меню --> проект --> компоненты --> вкладка управления--> поставь галочку на
Microsoft FlexGrid Control 6.0
Далее см. Вложение.

Закрытие формы
unload 'FormName'

Загрузка формы
Load 'FormName'
Показ формы(загружает форму автоматически)
'FormName'.Show

Про Exe:
в VB6 exe файл не создается автоматически, тебе нужно создавать его с
помощью команды
Файл --> Создать хххх.exe

Закрытие программы:
Программа закрывается когда закрываются все ее формы
используй для этого следующии код:

Dim f As Form
For Each f In Forms

Unload f
Next
Скачать прикрепленный файл >>>
Оценка за ответ: 5
101/Здравствуйте! Имеется три переменные типа String, называются A, B, C Как добавить каждую из них в элемент RichTextBox1(в смысле с помощью какого кода), при том, чтоб каждая из них писалась с новой строки, и чтобы переменная A была выделена красным цветом, B написана курсивом, а переменная C мигала? Как послать сообщение программе, чтобы она закрылась, к примеру диспетчеру задач? Заранее спасибо! -- С уважением, Леха [Ответить]

Отвечает: HouseBugs
Отвечу на первый вопрос - создай форму, подключи Microsoft Rich Texbox, размести
его на форме с именем RichText и еще 3 текстовых поля с именами Text1, Text2, Text3
соответствено. Добавляем также кнопку в процедуре Click которой прописываем следующий код:

RichText.Text = Text1.Text & vbCrLf & Text2.Text & vbCrLf & Text3.Text & vbCrLf
RichText.SelLength = Len(Text1.Text)
RichText.SelColor = vbRed
RichText.SelStart = InStr(RichText.SelLength, RichText.Text, Text2.Text) - 1
RichText.SelLength = Len(Text2.Text)
RichText.SelColor = vbBlack
RichText.SelItalic = 1
RichText.SelStart = InStr(RichText.SelLength, RichText.Text, Text3.Text) - 1
RichText.SelLength = Len(Text3.Text)
RichText.SelColor = vbBlue
RichText.SelStrikeThru = 1

Оценка за ответ: 5
103/Здравствуйте! У меня такая проблема. В базе данных Access форма использует в качестве данных присоединённую таблицу Excel. На самой таблице стоит защита от изменения под паролем. Когда я хочу внести данные или изменить их через форму, выдаётся сообщение что таблица не может быть изменена, что совершенно справедливо. ВОПРОС: можно ли на программном уровне временно отключить защиту Excel-евского файла, зная пароль, для внесения изменений, а затем установить защиту, например, запрограммировав кнопку на форме? ЕЩЁ ВОПРОС: при создании новой записи в форме (когда доступ разрешен) все нормально сохраняется. Но в таблице Excel эта запись располагается почему-то намного ниже всего остального списка и мне вручную приходится переносить эту строку под весь список записей. Почему такое происходит? Буду рад, если кто-нибудь поможет разобраться. С уважением, Игорь. [Ответить]

Отвечает: AGavrilov
Для отключения защиты и обратной постановки на нее используются 2
метода:
Protect Method - защита и Unprotect Method - снятие защиты
(во встроенной в Excel справке по Microsoft Visual Basic более подробно
расписаны эти методы).
Для снятия защиты с листа (например) в коде нужно вставить следующую
строчку:
( вместо ?123? нужно вставить соответственно тот пароль, которым у Вас
защищен лист)
ActiveSheet.Unprotect (123)
Для защиты листа в коде нужно вставить следующую строчку:
ActiveSheet.Protect Password:=123, DrawingObjects:=True, Contents:=True,
Scenarios:=True


По поводу формы: не очень понял, какая форма используется, своя или
встроенная в Excel (Данные ? Форма). Если своя, то возможно просто
неправильно определяется диапазон данных, в который вносятся
добавления/изменения. Можно его определить с помощью CurrentRegion,
например:
Dim intMaxRows As Integer
'в этом примере подразумевается, что данные (список) начинаются с
ячейки "A1"
intMaxRows = Sheets(1).Range("A1").CurrentRegion.Rows.Count

intMaxRows ? это номер последней строки в списке, соответственно чтобы
внести значение в следующую ячейку увеличиваешь его на единицу:
cells(intMaxRows +1,1)=?Hello world!?


Оценка за ответ: 5
104/Как в программе организовать рэндомный (случайным образом) выбор числа в пределах, например, от 1 до 10?? Заранее благодарен. [Ответить]

Отвечает: AGavrilov
Random
a=Rnd*10

Оценка за ответ: 3

Отвечает: Перекладов Владимир
Это очень просто.
Если надо сгенерировать любое число, то
X=Rnd
Если целое, то
X=Int(Rnd)
А если, допустим до 10, то
X=Int(Rnd*10)
Но с каждым эапуском программы, функция Int будет генерировать
одинаковые числа. Поэтом в начале кода (а лучше перед оператором Int)
написать RANDOMIZE.

Оценка за ответ: 5

Отвечает: OverKill
Для этих целей существует встроенная функция RND.

Оценка за ответ: 3

Отвечает: Вячеслав
Пиши следующий код:

Randomize
s=innt(rnd(1)*9+1)
Print s

Оценка за ответ: 4

Отвечает: Игорь
Можно попробовать так:

Создайте новый проект. Добавьте в него новую командную кнопку, оставьте ее
имя по умолчанию (Command1). Добавьте следующий код:

Private Sub Command1_Click()
Me.Caption = Int((10 * Rnd) + 1)
End Sub

При нажатии на кнопку, на заголовке формы будет отображаться случайно
выбранное число от 1 до 10.


Оценка за ответ: 5

Отвечает: Stormbringer
Элементарно
'minNum - минимальный предел
'maxNum - максимальный предел
Randomize
Dim N as long
dim a as long
a = Rnd()
N = a * (maxNum - minNum) + a * minNum 'Формула для любого диапазона
'=====================
'твой диапазон:
Dim N as long, a as Long
a = Rnd()
N = a * 9 + a
'Если нужны целые числа разремь следующую строку
'N = Round(N, 0)

Оценка за ответ: 5

Отвечает: Елизаров Игорь А
Функция RND возвращает случайное число от 0 до 1.
Чтобы получить случайное число от 1 до 10 надо это значение умножить на 9 (то есть от 0 до 9 ) и прибавить 1.
если интересуют только целые числа, надо использовать дополнительно функцию INT

таким образом, для получения случайного целого числа от 1 до 10 надо использовать команду

a = int(rnd()*9 +1)

Оценка за ответ: 5

Отвечает: Alex Tolmasov
Это задача, которую проходят в школах в курсе Бейсик. Она достаточно
проста.
В Visual basic, как и в обычном Basic есть оператор Rnd, который
генерирует случайное число в диапазоне от 0 до 1. Наша задача -- этот
диапазон изменить. Что ж, попробуем.

Пусть наше искомое случайное будет записываться в переменную RandomNumber,
верхняя граница будет храниться в переменной upperbound, а нижняя -- в
переменной lowerbound. Тогда все решение задачи сводится к простой формуле:

RandomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

Эта формула наделает псевдослучайных целых в заданном диапазоне. Если
границы не изменяются (допустим, от 0 до 10), то для ускорения выполнения
программы можно модифицировать эту формулу, заменив переменные upperbound
и lowerbound,и вычислить формулу:

RandomNumber = Int(11 * Rnd)

Почему не 10? Потому что если написать Int(10 * Rnd), то результатом
вычислений 10 никогда не станет по простой причине -- Int отбрасывает
дробную часть, а Rnd никогда не генерирует 1.

Эту формулу можно дорабатывать и дальше -- например, чтобы она
генерировала десятичную дробь с заданным количеством знаков в заданном
диапазоне... Но позвольте мне оставить это для ваших пытливых умов.

Оценка за ответ: 5

Отвечает: AGavrilov
С помощью функции Rnd()

Dim MinNum
Dim MaxNum
Dim Num

Randomize
MaxNum = 10
MinNum = 1
Num = Int((MaxNum - MinNum + 1) * Rnd() + MinNum)
MsgBox Num

Оценка за ответ: 5

Отвечает: Bourn None
использовать
1: x=RND(1)*10
if x>10 or x<1 then goto 1
поэксперементировав с множителями можно добиться
нужного результата

Оценка за ответ: 5

Отвечает: Bullet [PCLO]

В модуль или в форму ложишь эту функцию

Function nGenRndDig() As Integer
Randomize
nGenRndDig = Int((Rnd * 10) + 1)
End Function

Используешь как обычно:
MsgBox nGenRndDig

Вернет число в пределах от 1 до 10 включительно.


Оценка за ответ: 5

Отвечает: Константин
int(rnd()*10)+1 - возвращает случайное число от 1 до 10

Оценка за ответ: 4
105/Как получить день недели системной даты. Но(!) не числовое, а текстовое значение. Например "Понедельник" или "Вторник". Заранее благодарен. [Ответить]

Отвечает: Bullet [PCLO]
Функции, которая напрямую выдает наименование дня недели, в
басике вроде бы нету. Попробуй использовать эту функцию:

Function sDayOfWeek(ByVal sDate As Date) As String
Dim nWeekDay As Integer

nWeekDay = Weekday(sDate)
Select Case nWeekDay
Case vbSunday '1
sDayOfWeek = "Воскресенье"
Case vbMonday '2
sDayOfWeek = "Понедельник"
Case vbTuesday '3
sDayOfWeek = "Вторник"
Case vbWednesday '4
sDayOfWeek = "Среда"
Case vbThursday '5
sDayOfWeek = "Четверг"
Case vbFriday '6
sDayOfWeek = "Пятница"
Case vbSaturday '7
sDayOfWeek = "Суббота"
Case Else
sDayOfWeek = "Ошибка"
End Select
End Function

И потом в программе используй так:
MsgBox sDayOfWeek(#2/12/1999#)

По идее так.

Оценка за ответ: 5

Отвечает: Андрей
Если вопрос в связи между номером дня недели и его текстовым названием, то проще всего завести массив в 7 элементов (от 1 до 7) и прописать в него названия всех дней недели. Затем получить номер дня недели и вывести соответствующий элемент массива.

Оценка за ответ: 4

Отвечает: HouseBugs
Я пользуюсь вот таким кодом:
Text1 = Format(Date, "dddd")

бери, дарю.

Оценка за ответ: 4

Отвечает: Игорь
Сам не знал, только что попробовал и получилось:

Добавьте в форму одну командную кнопку. Оставьте имя по умолчанию
(Command1). вставьте следующий код в форму:

Private Sub Command1_Click()
Me.Caption = WeekdayName(Weekday(Date, vbMonday), False,
vbUseSystemDayOfWeek)
End Sub

...или, если нужно писать с заглавной буквы, то:
Private Sub Command1_Click()
Me.Caption = StrConv((WeekdayName(Weekday(Date, vbMonday), False,
vbUseSystemDayOfWeek)), vbProperCase)
End Sub

При нажатии на кнопку заголовок формы будет отображать день недели словами
(например, "Понедельник" или "Четверг"). Если значение False заменить на
True, то названия будут сокращенные, например, "Пн", "Чт". Вроде бы все.

Оценка за ответ: 5

Отвечает: Stormbringer
Dim dt As Date, DayName$, DayNum As Byte
dt = Now
DayNum = Weekday(dt, vbMonday)
DayName = WeekdayName(DayNum, False, vbMonday)
MsgBox DayName

Оценка за ответ: 5

Отвечает: Alex Tolmasov
О, это очень просто.

'Сначала надо получить дату, например, в переменной MyDate:
mydate = Date

'Затем отформатируем ее (дату) оператором Format:
mystring = Format(mydate, "dddd")

'И выведем
Label1.Caption = mystring

Формат dddd выдаст в итоге название дня целиком, формат ddd выдаст
сокращенное до двух букв название, dd -- две цифры даты (01, 02 и так
далее), а просто d будет действовать так же, как и dd, только для первых
дней месяца будет выдаваться одна цифра (1, 2, ... 10, 11 и т. д.).

Подробнейшую информацию по этому поводу можно получить в справке по ВБ.

Оценка за ответ: 5

Отвечает: AGavrilov
Нужно воспользоваться функцией Weekday. Она возвращает целое число, представляющее день недели
Синтаксис: Weekday (date, [firstdayofweek])
где: date - выражение, представляющее дату
firstdayofweek - указывает первый день недели
Например:
Dim intDayNum As Integer
Dim strDayName As String

' здесь Date возвращает текущую системную дату
intDayNum = Weekday(Date, vbMonday)
'а затем с помощью функции выбора Choose выбираем наименование дня недели в зависимости от его номера
strDayName = Choose(intDayNum, "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота", "Воскресенье")
MsgBox strDayName

Оценка за ответ: 5

Отвечает: александр
узнать день очень просто.
киньте на форму метку. и кликните по форме.
Dim xday
Private Sub Form_Load()
xday = WeekDay(Date, vbMonday)
If xday = 7 Then
Label1.Caption = "Воскресенье"
End If
If xday = 1 Then
Label1.Caption = "Понедельник"
End If
If xday = 2 Then
Label1.Caption = "Вторник"
End If
If xday = 3 Then
Label1.Caption = "Среда"
End If
If xday = 4 Then
Label1.Caption = "Четверг"
End If
If xday = 5 Then
Label1.Caption = "Пятница"
End If
If xday = 6 Then
Label1.Caption = "Суббота"
End If
End Sub

Оценка за ответ: 5

Отвечает: Константин
Используй функцию WeekdayName()
полный синтаксис:
WeekdayName(weekday, abbreviate, firstdayofweek)

где
weekday - номер дня недели (Long)
abbreviate - True, если нужно вернуть аббревиатуру дня недели. По
умолчанию - False
firstdayofweek - номер первого дня недели. По умолчанию используется
системная настройка

Оценка за ответ: 5

Отвечает: Перекладов Владимир
Попробуй вместо
LoadPicture("С:\Windows\1stboot.bmp")
написать
LoadPicture "С:\Windows\1stboot.bmp".
Должно работать.

Оценка за ответ: 5
108/Привет всем. Есть фаил с записанными значениями (файл конфигурации (config.sys)) как из него вытянуть те параметры которые надо. То есть надо вытянуть не одну переменную, а несколько. [Ответить]

Отвечает: Андрей
Используйте INI-файлы. Любое значение можно получить, просто указав название параметра. Например:
[Config]
Autorun=0
Saved=1
Text=Hello!

Оценка за ответ: 4
108/Привет. Как сделать чтоб при нажатии на ячейку таблицы DBGrid значение которое находится в ячейке присваивалось переменной? Спасибо. [Ответить]

Отвечает: Филатов Евгений
При обработке событий DBGrid1_DblClick() и DBGrid1_Click() нельзя
определить, в каком месте таблицы произошло нажатие кнопки мыши,
поэтому необходимо в свойствах DBGrid в закладке Layout добавить
свойство Button=True (галочка) для одного или нескольких (будет
удобнее) полей и в таблице нажимать на кнопку в поле.
Затем в форме должно быть:

Private Sub DBGrid1_ButtonClick(ByVal ColIndex As Integer)
'ColIndex - номер нажатого поля, нумерация с 0 слева направо
'Для примера
With Form4.Data1.Recordset
For i = 0 To .Fields.Count - 1
If .Fields(i).Name = "Sel" Then
.Edit
!sel = Not !sel
.Update
End If
Next
End With
End Sub

Оценка за ответ: 5
108/В одной из предыдущих рассылок был задан вопрос: "Помогите пожалуйста. Нужно написать на VB прогу которая отправляла бы на интернет страницу (php) данные. Т.е. программа отправки SMS должна передавать само сообщение, номер и оператор на определенную страницу. Заранее благодарен.".
Был дан только один ответ: "Просто передавайте так:
ww.site.ru/sms.php?operator=beeline&num=9039999999&text=Hello". Я думаю, что для человека, не знающего программирования, или только начинающего его учить, этот ответ не совсем понятный. Поэтому если можно, то объясните, как с помощью Visual Basic можно передавать данные на php.
[Ответить]

Отвечает: Андрей
Наверное, загрузить в WebBrowser страницу с данным адресом...

Оценка за ответ: 3

Отвечает: Елизаров Игорь А
Ответ-то указан в общем-то правильный..
Дело в том, что для того чтобы передать данные сайту, надо немножко знать о том, как этот сайт данные принимает.

www.site.ru/sms.php?operator=beeline&num=9039999999&text=Hello".

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

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

С уважением, Игорь


Оценка за ответ: 3

<Задать свой вопрос!>

Обучение для новичков

Раздел в отпуске.

Компоненты, контролы, исходники

M означает, что данный архив содержит только модуль.

Примеры и модули
Ссылка
Описание
Ссылка
Описание
about.zip Стандартное окно About в VB (4.2KB) OpenCD.zip Управление CD (M) (1KB)
anigif.zip Анимация в VB (5KB) progressbar.zip Progress Bar в трее (4KB)
appprioritet.zip Устанавливаем приоритет в приложении (1.8KB) randomform.zip Разные формы (M) (2KB)
biosinfo.zip Просматривает ифрормацию о БИОСе (5.5KB) RandomForms.zip Разные формы (1KB)
cd-rom.zip Работа с CD-ROM (1.6KB) Reestr.zip Работа с реестром (2.5KB)
commondialog.zip Диалог открытия файла без контрола (1.9KB) registry.zip Регистрация в реестре (9.5KB)
coolvbmenu.zip Клевое меню в VB (14KB) resource.zip Просмоторщик ресурсов проги (46.6KB)
disableendtasks.zip Запрет нажатия Ctrl+Alt+Del (1.8KB) RU_EN.zip Переключение языка программно (M) (1KB)
File_size.zip Определяет размер файла (M) (1KB) sharp.zip Пример часиков (2.1KB)
fso.zip Работа с FSO (File System Object) (101KB) ShutDown.zip Шатдаун компьютера (M) (1KB)
HDD_info.zip Информация о диске (M) (1KB) sort.zip Сортировка массива за 0.2 секунды! (M) (1KB)
hddserial.zip Серийный номер диска (24KB) Standart.zip Стандартные диалоги и окна (M) (1KB)
Hibernate.zip Выключение и перезагрузка ПК (M) (1KB) systrayicon.zip Иконка в трее (21KB)
lines2000.zip Пример игры Lines (74KB) transparent.zip Прозрачность окна (M) (1KB)
manifest.zip ХР стиль в аппликухе (2.5KB) Tray_icon2.zip Икнока в трее 2 (M) (1KB)
mdlMain.zip ХР стиль в приложении (M) (1KB) Tray_icon.zip Иконка в трее (M) (1KB)
winwordorfo.zip Проверка орфографии с помощью Word'а (1.9KB)    

Компоненты:

Ссылка
Описание
Ссылка
Описание
Кнопка с текстовым полем Двухцветный прогресс бар
Электронные часы Бегущая строка
Компонент редактирования даты Иконка в трее
Кнопка в стиле XP, Office, и др. TextBox вмещающий более 65КБ текста
Прогресс Бар в классическом стиле Вертикальный лейбл
Кнопка Плейер
Компонент для создания гиперссылок Программное создание иконки NEW!!!

Статья

Есть вопросы относительно статьи, задавайте!

Игорь прислал вот такую стаью. Спасибо за статью, Игорь!!!

Как заставить работать Package & Deployment Wizard в Visual Basic 6.0

Вы создали Ваш очередной работающий проект в системе VB6. Вы его
протестировали с пристрастием и произвели трансляцию проекта в исполняемый
*.exe файл. Но считать получившийся файл законченным Windows - приложением
еще рано! Да, он прекрасно работает на Вашем компьютере и так же здорово
работает на машине Вашего друга, у которого вы переписали VB6 (или он у
Вас?), но вот на машине Вашей наименее продвинутой в программировании
подружки *.exe файл не запускается. То ему .dll подавай, то .ocx, обидно,
тем более что и программа составлялась для нее, чтоб восхищалась, а
получается наоборот. Ситуация распространенная, но не безвыходная. Ведь у
нас теперь есть Package & Deployment Wizard, который поставляется с новой
версией пакета Microsoft Visual Basic 6.0 , предназначенный для создания
инсталляционных пакетов на основе проекта Visual Basic.

Итак, запускаем: Пуск > Программы > Microsoft Visual Basic 6.0 > Microsoft
Visual Basic 6.0 Tools > Package & Deployment Wizard. Или файл Pdcmdln.exe
из папки \VB98\Wizards\PDWizard\. Далее смело жмите кнопку Browse: и
выбирайте из стандартного диалога выбора файла Ваш проект, который должен
иметь расширение vbp. При этом выбранный проект должен быть хотя бы раз
скомпилирован в .exe файл, и этот файл должен находиться в том же месте, где
и сам проект. Затем, жмите кнопку Package, и на остальные запросы можно
смело жать Next, можно корректировать работу мастера в соответствии с Вашими
потребностями и его возможностями, что и будет Вам предложено на понятном
английском языке. Когда кнопка Next станет недоступна, придется нажать на
кнопку Finish, мастер недолго поработает, предложит отчитаться Вам о
проделанной работе, и если он больше не нужен, то его можно закрыть.

Пришло время посмотреть на плоды его работы. Открываем папку \VB98\Package\
, видим там еще одну папку \Support\ - вот они где, многочисленные dll, ocx,
которых так не хватает Вашей подружке! Можете смело ей их отправить на
компьютер, если знаете, что где должно лежать. А если не знаете? Тогда
пойдем другим путем.

Мы создали (при помощи Package & Deployment Wizard) инсталляционный пакет.
При чем все файлы программы упакованы в виде - один или несколько (в
зависимости от того, был указан предельный размер файла или нет) .cab-файлов
плюс файл setup.lst и собственно файла setup.exe, который по идее Microsoft
должен после запуска сам установить на компьютер пользователя Вашу
программу. И установит, если Вы при запуске Package & Deployment Wizard
использовали настройки разделителей даты/времени оригинальные американские,
т.е. '/' - для даты, ':' - для времени. Данные настройки задаются в Control
Panel/Regional Settings (Панель управления/Язык и стандарты).

А если при попытке запуска пользователем setup.exe из созданного Вами
дистрибутива, выдается ошибка примерно такого содержания: "Invalid line in
setup information file!", тогда вы нормальный Российский пользователь, у
которого, как известно, разделителем даты по умолчанию является точка ('.').
При создании дистрибутива Package & Deployment Wizard генерирует текстовый
файл setup.lst и сохраняет в нем информацию о дате и времени последней
модификации распространяемых файлов. Дата и время сохраняются с учетом
текущих системных разделителей. Программа установки setup.exe, запускаемая
пользователем, выполняет разбор setup.lst и при этом ожидает, что дата
сохранена в американском формате. Если формат даты не совпадает с ожидаемым,
то возникает ошибка "Invalid line in setup information file!" и процесс
установки Ваших файлов завершается неудачно (бедная Ваша подружка).

Есть несколько способов исправить положение. Один из них описан в файле
readmevb.htm, на примере с немецкой версией, но совет применим и к России.
Суть его такова - задайте в вышеуказанных настройках разделители
даты/времени оригинальные американские т.е. '/' - для даты, ':' - для
времени, запустите Package & Deployment Wizard,и после создания дистрибутива
верните настройки в исходное положение. Совет хорош для редкого
использования, и не для настоящего программиста VB6.

Следующее решение проблемы - файл setup.lst исправить ручками. Т.е. в
текстовом редакторе типа Notepad заменить наши (.) на ихние (/) во всех
датах. Совет хорош для уже созданных и даже отправленных на машины
пользователей инсталляционных пакетов, что бы не переделывать всю работу
заново, а исправить всего один файл.

И самый радикальный метод это переписать setup1.exe - именно этот файл и
использует setup.lst.
Исходные тексты setup1.exe поставляются вместе с Visual Basic и находятся в
папке \VB98\Wizards\PDWizard\Setup1\
Сделайте следующее:

- Запустите Microsoft Visual Basic 6.0
- Откройте проект Setup1.vbp (в папке \VB98\Wizards\PDWizard\Setup1\ )
- Откройте для редактирования модуль basSetup1 (файл setup1.bas)
- Внесите изменения в функцию ParseDateTime()

Вот как она выглядит:

Function ParseDateTime(ByVal strDateTime As String) As Date
Dim Var As Variant
Var = strDateTime
If 0 = VariantChangeTypeEx(VarPtr(Var), VarPtr(Var), &H409, 0, vbDate)
Then
ParseDateTime = Var Else 'Raise same error as CDate
Err.Raise 13
End If
End Function

Используемую здесь API функцию VariantChangeTypeEx() надо заменить на
функциюCDate, которая используется для приведения строки в тип Date.
Перепишите функцию ParseDateTime() в виде:

Function ParseDateTime(ByVal strDateTime As String) As Date
ParseDateTime=CDate(strDateTime)
End Function

Получилось короче и эффективнее. Теперь заново скомпилируйте проект
Setup1.vbp и получившийся Setup1.exe перепишите в папку
\Wizards\PDWizard\,заменив старый файл. Все! Можете смело использовать
Package & Deployment Wizard для создания дистрибутива на Вашем
руссифицированном компьютере.


Дружественные сайты
http://www.delphi.int.ru - Программирование на DELPHI: Вопросы и Ответы читателей; Статьи по программированию на Delphi, других языках программирования, графике (OpenGL/DirectX); Компоненты, Пакеты, Plug-in'ы, Модули для Delphi; Исходники программ, игр; Документация и ссылки на документацию по программированию; Рассылка, в которой каждый программист найдёт что-то полезное!

http://infomania2004.webhost.ru. Этот сайт создан для того, чтобы вы могли получить интересующую вас информацию с минимальными затратами сил и времени. Если вы не нашли здесь нужной информации, оставьте заявку...">

Все о Динамо - www.DinamoMania.ru На этом сайте вы найдете все новости и интервью ВСЕХ видов спорта Динамо. Также на сайте есть таблицы всех видов спорта. Видео и Фото материалы. И все это на одном сайте - www.DinamoMania.ru Это первый и единственный сайт, который освещает все виды одного клуба.
Юмор

- Извините, сейчас около вас стадо баранов не пробегало?
- А ты что, отстал?

***

Семейная ссора:
- Ты первая начала!!!
- Да, потому, что ты первый кончил...

:))

Наши партнеры

Рассылки Subscribe.Ru
Visual Basic для новичков и профессионалов
Программирование на Delphi

Хотите стать нашим партнером? Пишите сюда.


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.vbforbeginprof
Отписаться
Вспомнить пароль

В избранное