Даже не знаю с чего начать
ОК:)
Ну как дела с задачкой?:P
Ну как дела с задачкой?:P
Привет, наконец-то я выделил время и дописал задачку №3.
Через брак времени я не описал обработчик ошибок, не установил максимальные и минимальные размеры елементов
и формы и не предусмотрел записи инишнике информации о изменение растояний между елементами, но это
как сам понимаеш не качество а количество ведь принцип тот же. Я думаю что и код не совсем оптимален но
тем не менее програма рабочая!!! Как приятно когда достигаеш поставленую цель. Пост получился не маленький
но я бы хотел чтоб ты взглянул!
Private dblHorizontally As Double 'Êîýôèöèåíò ðàñòîÿíèÿ ïî ãîðèçîíòàëè
Private dblVerticale As Double 'Êîýôèöèåíò ðàñòîÿíèÿ ïî âåðòèêàëè
Private dblHorizontallyControl_1 As Double, dblHorizontallyControl_2 As Double 'Êîýôèöèåíò ðàçìåðà Width åëåìåíòîâ
Private dblVerticaleControl_1 As Double, dblVerticaleControl_2 As Double 'Êîýôèöèåíò ðàçìåðà Higth åëåìåíòîâ
Public PathINI As String
Private form_Width As Single, form_Height As Single
Private Button_Width As Single, Button_Height As Single 'Çíà÷åíèÿ ðàçìåðîâ åëåìåíòîâ è ôîðìè ïîñëå ðåñàéçà
Private Combo_Width As Single, Combo_Height As Single
Private list_Width As Single, List_Height As Single
Private Text_Width As Single, Text_Height As Single
Option Explicit
Private Sub Form_Load() 'Èíèöèàëèçàöèÿ
PathINI = App.Path & "\Resize.ini"
If Dir$(PathINI) = "" Then
frmResize.Height = 6000: frmResize.Width = 9000
cmdNumber(1).Height = 500: cmdNumber(1).Width = 1500
cmdNumber(2).Height = 500: cmdNumber(2).Width = 1500
cmdNumber(3).Height = 500: cmdNumber(3).Width = 1500
txtText.Height = 500: txtText.Width = 2000
cobCombo.Width = 2000
lstList.Height = 450: lstList.Width = 2000
'Ïðèâÿçêà ðàñòîÿíèé ìåæäó åëåìåíòàìè ê ðàçìåðàì ôîðìû
cmdNumber(1).Left = 1560: cmdNumber(1).Top = 960
cmdNumber(2).Left = 1560: cmdNumber(2).Top = 2280
cmdNumber(3).Left = 1560: cmdNumber(3).Top = 3600
txtText.Left = 4383: txtText.Top = 960
cobCombo.Left = 4383: cobCombo.Top = 2280
lstList.Left = 4383: lstList.Top = 3600
Else 'Ñ÷èòûâàíèå ðàçìåðîâ åëåìåíòîâ ñ ini-ôàéëà
frmResize.Width = sReadINI(PathINI, "Form.Size", "Width")
frmResize.Height = sReadINI(PathINI, "Form.Size", "Height")
cmdNumber(1).Width = sReadINI(PathINI, "Control.Size", "Button.Width")
cmdNumber(1).Height = sReadINI(PathINI, "Control.Size", "Button.Height")
cmdNumber(2).Width = sReadINI(PathINI, "Control.Size", "Button.Width")
cmdNumber(2).Height = sReadINI(PathINI, "Control.Size", "Button.Height")
cmdNumber(3).Width = sReadINI(PathINI, "Control.Size", "Button.Width")
cmdNumber(3).Height = sReadINI(PathINI, "Control.Size", "Button.Height")
txtText.Width = sReadINI(PathINI, "Control.Size", "Text.Width")
txtText.Height = sReadINI(PathINI, "Control.Size", "Text.Height")
lstList.Width = sReadINI(PathINI, "Control.Size", "List.Width")
lstList.Height = sReadINI(PathINI, "Control.Size", "List.Height")
cobCombo.Width = sReadINI(PathINI, "Control.Size", "Combo.Width")
End If
dblHorizontallyControl_1 = cmdNumber(1).Width / frmResize.Width
dblHorizontallyControl_2 = txtText.Width / frmResize.Width
dblVerticaleControl_1 = txtText.Height / frmResize.Height
dblVerticaleControl_2 = cobCombo.Height / frmResize.Height
dblHorizontally = (txtText.Left - cmdNumber(1).Left) / frmResize.Width
dblVerticale = (cmdNumber(2).Top - cmdNumber(1).Top) / frmResize.Height
End Sub
Private Sub Form_Resize()
Const minHorizontally As Long = 2200 'Ìèíèìàëüíûå ðàñòîÿíèÿ ìåæäó åëåìåíòàìè ïî ãîðèçîíòàëå
Const minVerticale As Long = 1000 'Ìèíèìàëüíûå ðàñòîÿíèÿ ìåæäó åëåìåíòàìè ïî âåðòèêàëå
'Ðèñàéç ïî ãîðèçîíòàëå
txtText.Left = cmdNumber(1).Left + frmResize.Width * dblHorizontally
If txtText.Left - cmdNumber(1).Left < minHorizontally Then _
txtText.Left = cmdNumber(1).Left + minHorizontally
If txtText.Left - cmdNumber(1).Left = minHorizontally Then
cmdNumber(1).Width = dblHorizontallyControl_1 * frmResize.Width
txtText.Width = dblHorizontallyControl_2 * frmResize.Width
End If
cobCombo.Left = cmdNumber(2).Left + frmResize.Width * dblHorizontally
If cobCombo.Left - cmdNumber(2).Left < minHorizontally Then _
cobCombo.Left = cmdNumber(2) + minHorizontally
If cobCombo.Left - cmdNumber(2).Left = minHorizontally Then
cmdNumber(2).Width = dblHorizontallyControl_1 * frmResize.Width
cobCombo.Width = dblHorizontallyControl_2 * frmResize.Width
End If
lstList.Left = cmdNumber(3).Left + frmResize.Width * dblHorizontally
If lstList.Left - cmdNumber(3).Left < minHorizontally Then _
lstList.Left = cmdNumber(3).Left + minHorizontally
If lstList.Left - cmdNumber(3).Left = minHorizontally Then
cmdNumber(3).Width = dblHorizontallyControl_1 * frmResize.Width
lstList.Width = dblHorizontallyControl_2 * frmResize.Width
End If
'Ðèñàéç ïî âåðòèêàëå
cmdNumber(2).Top = cmdNumber(1).Top + frmResize.Height * dblVerticale
If cmdNumber(2).Top - cmdNumber(1).Top < minVerticale Then
cmdNumber(2).Top = cmdNumber(1).Top + minVerticale
End If
cmdNumber(3).Top = cmdNumber(2).Top + frmResize.Height * dblVerticale
If cmdNumber(3).Top - cmdNumber(2).Top < minVerticale Then _
cmdNumber(3).Top = cmdNumber(2).Top + minVerticale
If cmdNumber(2).Top - cmdNumber(1).Top = minVerticale Then
cmdNumber(1).Height = dblVerticaleControl_1 * frmResize.Height
cmdNumber(2).Height = dblVerticaleControl_1 * frmResize.Height
cmdNumber(3).Height = dblVerticaleControl_1 * frmResize.Height
End If
cobCombo.Top = txtText.Top + frmResize.Height * dblVerticale
If cobCombo.Top - txtText.Top < minVerticale Then
cobCombo.Top = txtText.Top + minVerticale
End If
lstList.Top = cobCombo.Top + frmResize.Height * dblVerticale
If lstList.Top - cobCombo.Top < minVerticale Then _
lstList.Top = cobCombo.Top + minVerticale
If cobCombo.Top - txtText.Top = minVerticale Then
txtText.Height = dblVerticaleControl_1 * frmResize.Height
lstList.Height = dblVerticaleControl_1 * frmResize.Height
End If
form_Width = CSng(frmResize.Width): form_Height = CSng(frmResize.Height)
Button_Width = CSng(cmdNumber(3).Width): Button_Height = CSng(cmdNumber(3).Height)
Combo_Width = CSng(cobCombo.Width)
list_Width = CSng(lstList.Width): List_Height = CSng(lstList.Height)
Text_Width = CSng(txtText.Width): Text_Height = CSng(txtText.Height)
End Sub
Private Sub Form_Terminate()
Dim intResult As Byte
intResult = MsgBox("Сохранить последнее изьенение?", _
vbOKCancel + vbApplicationModal + vbExclamation, "Âíèìàíèå!")
If intResult = 1 Then
Call WriteINI(PathINI, "Form.Size", "Width", form_Width)
Call WriteINI(PathINI, "Form.Size", "Height", form_Height)
Call WriteINI(PathINI, "Control.Size", "Button.Width", Button_Width)
Call WriteINI(PathINI, "Control.Size", "Button.Height", Button_Height)
Call WriteINI(PathINI, "Control.Size", "Combo.Width", Combo_Width)
Call WriteINI(PathINI, "Control.Size", "Text.Height", Text_Height)
Call WriteINI(PathINI, "Control.Size", "Text.Width", Text_Width)
Call WriteINI(PathINI, "Control.Size", "List.Height", List_Height)
Call WriteINI(PathINI, "Control.Size", "List.Width", list_Width)
End If
End Sub
Ну как дела с задачкой?:P
Модуль обработки ini-файла
'API объявления
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long
Option Explicit
Public Function sReadINI(strINIFile As String, strAppName As String, strKeyName As String) As String
Dim strTemp As String * 256
strTemp = Space$(256)
Call GetPrivateProfileString(strAppName, strKeyName, vbNullString, strTemp, 255, strINIFile)
sReadINI = Trim(strTemp)
End Function
Public Sub WriteINI(strINIFile As String, strAppName As String, strKeyName As String, ByVal strValue As String)
Dim fso As New FileSystemObject
If fso.FileExists(frmResize.PathINI) = False Then fso.CreateTextFile (frmResize.PathINI)
Call WritePrivateProfileString(strAppName, strKeyName, strValue, strINIFile)
End Sub
Если есть замечания или еще что-нибуть буду очен благодарен, если же нет то можна ехать дальше!!!
P.S.
1)Чем отличается Chr(), Space(), Left(), Rigth(), Dir() и т.д. от Chr$(), Space$(), Left$(), Rigth$(), Dir$(), я так понимаю что ни чем???
2) Не понимаю до конца предназначение параметра “lpDefault, lpReturnedString, nSize” в API функции GetPrivateProfileString, ты можеш мне внятно объяснить?
3) Зачем ты в своем коде для ReadINI присваиваеш значение “пусто” (vbNullString)
4) Что за тип даных “Any”
Модуль обработки ini-файла
'API объявления
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpDefault As String, _
ByVal lpReturnedString As String, _
ByVal nSize As Long, _
ByVal lpFileName As String) As Long
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long
Option Explicit
Public Function sReadINI(strINIFile As String, strAppName As String, strKeyName As String) As String
Dim strTemp As String * 256
strTemp = Space$(256)
Call GetPrivateProfileString(strAppName, strKeyName, vbNullString, strTemp, 255, strINIFile)
sReadINI = Trim(strTemp)
End Function
Public Sub WriteINI(strINIFile As String, strAppName As String, strKeyName As String, ByVal strValue As String)
Dim fso As New FileSystemObject
If fso.FileExists(frmResize.PathINI) = False Then fso.CreateTextFile (frmResize.PathINI)
Call WritePrivateProfileString(strAppName, strKeyName, strValue, strINIFile)
End Sub
Если есть замечания или еще что-нибуть буду очен благодарен, если же нет то можна ехать дальше!!!
P.S.
1)Чем отличается Chr(), Space(), Left(), Rigth(), Dir() и т.д. от Chr$(), Space$(), Left$(), Rigth$(), Dir$(), я так понимаю что ни чем???
2) Не понимаю до конца предназначение параметра “lpDefault, lpReturnedString, nSize” в API функции GetPrivateProfileString, ты можеш мне внятно объяснить?
3) Зачем ты в своем коде для ReadINI присваиваеш значение “пусто” (vbNullString)
4) Что за тип даных “Any”
Значит так.
В принципе, хорошо, только я бы сделал так:
Переменные, в которых ты хранишь положения контролов, я бы объявлял локально прямо в процедуре ресайза.
Ключи бы обзывал, привязываяст к контрола, тоесть, например, для контрола I, это имя ключа выглядело так:
ИмяКонтрола & Str$(i) & Width
Тоесть, при чтении из ниншника, ты бы просто передавал бы ключь, соответствующий паре Контрол - параметр и все. Например:
sReadINI(PathINI, "Control.Size", Button.Name & Str$(i) & "Width")
Тоесть, ты бы имел уникальные записи в инишнике для любого контрола, что универсальнеее и не привязывает тебя к количеству контролов на форме.
Писал бы я так. Например
Dim Ctrl as Control 'МАХ Не отвечаю за верность синтаксиа, но примерно так
For Ech Ctrl Im Me
WriteINI(PathINI, "Control.Size", Ctrl.Name & Str$(Ctrl.Index) & Ctrl.Width, Ctrl.Width)
Next
Может, синтаксис тут не верный, но идею, думаю, ты понял.
Теперь остальное:
Str$(0) = "0", Str(0) = VbNullString. К тому же считается, что $ - функции работают быстрее. Думаю, тут всё понятно.
lpDefault - то, что будет возвращаться, если запись не найдена (значение по умолчанию),
lpReturnedString - В какую переменную писать возвращаемое значение,
nSize - размер буфера, который нужно выделить для передачи значения из иннишника
Отсюда, думаю, понятно, зачем VbNullString присваивается (чтобы у меня на выходе было пустое значение, если ничего в ниншние не найдено)
Any - аналог Variant. Дело в том, что идёт обращение к функции, подобной функции C, а там немного другие типы и синтаксис.
Извиняюсь, что так мало написал - просто очень сейчас загружен и немного некогда...
Задачку подкину завтра. Пока попробуй переделать в соответствии с замечаниями.
Значит так.
В принципе, хорошо, только я бы сделал так:
Переменные, в которых ты хранишь положения контролов, я бы объявлял локально прямо в процедуре ресайза.
Ключи бы обзывал, привязываяст к контрола, тоесть, например, для контрола I, это имя ключа выглядело так:
ИмяКонтрола & Str$(i) & Width
Тоесть, при чтении из ниншника, ты бы просто передавал бы ключь, соответствующий паре Контрол - параметр и все. Например:
sReadINI(PathINI, "Control.Size", Button.Name & Str$(i) & "Width")
Тоесть, ты бы имел уникальные записи в инишнике для любого контрола, что универсальнеее и не привязывает тебя к количеству контролов на форме.
Писал бы я так. Например
Dim Ctrl as Control 'МАХ Не отвечаю за верность синтаксиа, но примерно так
For Ech Ctrl Im Me
WriteINI(PathINI, "Control.Size", Ctrl.Name & Str$(Ctrl.Index) & Ctrl.Width, Ctrl.Width)
Next
Может, синтаксис тут не верный, но идею, думаю, ты понял.
Теперь остальное:
Str$(0) = "0", Str(0) = VbNullString. К тому же считается, что $ - функции работают быстрее. Думаю, тут всё понятно.
lpDefault - то, что будет возвращаться, если запись не найдена (значение по умолчанию),
lpReturnedString - В какую переменную писать возвращаемое значение,
nSize - размер буфера, который нужно выделить для передачи значения из иннишника
Отсюда, думаю, понятно, зачем VbNullString присваивается (чтобы у меня на выходе было пустое значение, если ничего в ниншние не найдено)
Any - аналог Variant. Дело в том, что идёт обращение к функции, подобной функции C, а там немного другие типы и синтаксис.
Извиняюсь, что так мало написал - просто очень сейчас загружен и немного некогда...
Задачку подкину завтра. Пока попробуй переделать в соответствии с замечаниями.
Привет! Спасибо за критику, но я так понимаю, что твое замечание справедливо для масива елементов, я правильно понял?
Что касается работи с инишником, то еще раз спасибо за объяснение значения переменных теперь все понятно.
По поводу функции $ не совсем въехал, ты говориш, что Str$(0)="0", Str(0)=vbNullString значит Str$() - возвращает значение??? Тогда объясни какая разница в остальных ф-ях: Chr(), Space(), Left(), Rigth(), Dir() и т.д. от Chr$(), Space$(), Left$(), Rigth$(), Dir$() или дело только в скорости роботі???
Привет! Спасибо за критику, но я так понимаю, что твое замечание справедливо для масива елементов, я правильно понял?
Что касается работи с инишником, то еще раз спасибо за объяснение значения переменных теперь все понятно.
По поводу функции $ не совсем въехал, ты говориш, что Str$(0)="0", Str(0)=vbNullString значит Str$() - возвращает значение??? Тогда объясни какая разница в остальных ф-ях: Chr(), Space(), Left(), Rigth(), Dir() и т.д. от Chr$(), Space$(), Left$(), Rigth$(), Dir$() или дело только в скорости роботі???
Да, именно так.
И вот что я ещё вчера подумал.
В стоей проге ты можешь привязывать через коэфициенты размеры и положение всех объектов к какому-либо одному элементу, например, параметрам размеров формы. И только размеры этого элемента сохранять, а остальное вычислять "на лету" - у меня изначально была такая идея, но вчера я в запарке был (как, впрочем, и сегодня буду), ну и забыл эту мысль описать.
Да, именно так.
И вот что я ещё вчера подумал.
В стоей проге ты можешь привязывать через коэфициенты размеры и положение всех объектов к какому-либо одному элементу, например, параметрам размеров формы. И только размеры этого элемента сохранять, а остальное вычислять "на лету" - у меня изначально была такая идея, но вчера я в запарке был (как, впрочем, и сегодня буду), ну и забыл эту мысль описать.
НАРОД, давайте большой код во вложенных файлах писать???
НАРОД, давайте большой код во вложенных файлах писать???
:) :D ;)
Вполне согласен.
Есть такая вещь, наверное знаешь, как транслитератор.
И есть такая вещь, как забывание переключить раскладку...
Вобщем так, тут есть пример программы транслитератора в одной из тем - я уже скидывал, но ты, думаю, напишешь вполне его сам. Поэтому, пока не закончишь, не подглядывай.;)
Сделай прогу, которая будет:
1. Иметь 2 текстовых поля. В одно можно будет вносить текст пользователя, а во втором будет отображаться результат обработки текста.
2. 5 кнопок:
- транслитерировать с алглийского на русский;
- транслитерировать с русского на английский;
- исправить текст, при переключении раскладки на латынь, но наборе русских букв (тоесть, исправить случай, когда не переключил раскладку, но начал набирать текст на другом языке - знаешь, так часто бывает);
- аналогично, но только набор русскими буквами по-англиски;
- выход.
3. 1 Чекбокс в виде западающей кнопки. В случае, если он нажат, то действие, которое выбрано кнопками, будет выполняться "на лету". Например. Если чекбокс отжат, то ты набирвешь, или копируешь в текстбокс текст, а потом нажимаешь, например, кнопку транслитерации и во втором текстбоксе появляется транслит. Если же нажат чекбокс, то нажимаешь енопку транслитерировать, начинаешь набирать в первом текстбоксе текст и сразу же во втором появляется транслит.
4. Метку, в которой будет выводиться описание режима работы. тоесть, например, для второго случая там будет написано:
"Транслитерация с русского на латынь.
Режим моментальной транслитерации"
ну или типа того - чтобы ты мог видеть, в каком режиме прога работает. Лучше даже, чтобы меточка ещё и цвет меняла в зависимости от режима работы.
При этом прога должна запоминать свои размеры при закрытии свои размеры. Ну как в предыдущей задаче.
Описание транслита Бика можно посмотреть здесь:
http://zhurnal.lib.ru/g/gospitalx_d_p/translit_bika.shtml
НО. Там хоть и есть код, кое-гдк есть ошибка!
Потестируй его хорошенько. Если не найдёшь ошибки, то качни мой исходник на
http://forum.codenet.ru/showthread.php?threadid=15810&pagenumber=3 и сравни модуль Language.
Удачи!
Задачка, думаю, для тебя не очень сложная, но интересная должна быть, и, главное, полезная в быту.;)
Исправление забывания переключения раскладки попробуй реализовать не путём сопоставления букв, а заменой кодов. Не знаю, получится ли, но, думаю, если что, зависимость между кодами символов найти можно. Но если нельзя - делай путём сопоставления букв...
P.S. Готовые исходники заархивируй и выложи сюда в виде вложения к сообщению - так легче будет их разбирать.
Новая задачка.
Есть такая вещь, наверное знаешь, как транслитератор.
И есть такая вещь, как забывание переключить раскладку...
Вобщем так, тут есть пример программы транслитератора в одной из тем - я уже скидывал, но ты, думаю, напишешь вполне его сам. Поэтому, пока не закончишь, не подглядывай.;)
Сделай прогу, которая будет:
1. Иметь 2 текстовых поля. В одно можно будет вносить текст пользователя, а во втором будет отображаться результат обработки текста.
2. 5 кнопок:
- транслитерировать с алглийского на русский;
- транслитерировать с русского на английский;
- исправить текст, при переключении раскладки на латынь, но наборе русских букв (тоесть, исправить случай, когда не переключил раскладку, но начал набирать текст на другом языке - знаешь, так часто бывает);
- аналогично, но только набор русскими буквами по-англиски;
- выход.
3. 1 Чекбокс в виде западающей кнопки. В случае, если он нажат, то действие, которое выбрано кнопками, будет выполняться "на лету". Например. Если чекбокс отжат, то ты набирвешь, или копируешь в текстбокс текст, а потом нажимаешь, например, кнопку транслитерации и во втором текстбоксе появляется транслит. Если же нажат чекбокс, то нажимаешь енопку транслитерировать, начинаешь набирать в первом текстбоксе текст и сразу же во втором появляется транслит.
4. Метку, в которой будет выводиться описание режима работы. тоесть, например, для второго случая там будет написано:
"Транслитерация с русского на латынь.
Режим моментальной транслитерации"
ну или типа того - чтобы ты мог видеть, в каком режиме прога работает. Лучше даже, чтобы меточка ещё и цвет меняла в зависимости от режима работы.
При этом прога должна запоминать свои размеры при закрытии свои размеры. Ну как в предыдущей задаче.
Описание транслита Бика можно посмотреть здесь:
http://zhurnal.lib.ru/g/gospitalx_d_p/translit_bika.shtml
НО. Там хоть и есть код, кое-гдк есть ошибка!
Потестируй его хорошенько. Если не найдёшь ошибки, то качни мой исходник на
http://forum.codenet.ru/showthread.php?threadid=15810&pagenumber=3 и сравни модуль Language.
Удачи!
Задачка, думаю, для тебя не очень сложная, но интересная должна быть, и, главное, полезная в быту.;)
Исправление забывания переключения раскладки попробуй реализовать не путём сопоставления букв, а заменой кодов. Не знаю, получится ли, но, думаю, если что, зависимость между кодами символов найти можно. Но если нельзя - делай путём сопоставления букв...
P.S. Готовые исходники заархивируй и выложи сюда в виде вложения к сообщению - так легче будет их разбирать.
Привет! Да задачка интересная и думаю что объемная. На это нужно время, буду работать с максимальной скоростю, у меня тоже сейчас напряг со временем через роботу. Обищаю в ичходники не смотреть а сделать все своиьи силами! А что касаэтся моего вопроса про "$", напиши что нибуть!
Жду!
P.S. Спасибо за задачку!!!
Привет! Да задачка интересная и думаю что объемная. На это нужно время, буду работать с максимальной скоростю, у меня тоже сейчас напряг со временем через роботу. Обищаю в ичходники не смотреть а сделать все своиьи силами! А что касаэтся моего вопроса про "$", напиши что нибуть!
Жду!
P.S. Спасибо за задачку!!!
Так, честно говоря, после твоего вопроса я расскопал гору литературы, перерыл MSDN... Но, увы, единственное, чем простые и $ - функции отличаются, это форматами на выходе (поэкспериментируй с 0 и датами), да скоростью выполнения.
Может быить, какие-то из функций оставлены для обратной совместимости с предыдущими версиями VB, но об этом, увы, я ничего не нашёл...P(
Так, честно говоря, после твоего вопроса я расскопал гору литературы, перерыл MSDN... Но, увы, единственное, чем простые и $ - функции отличаются, это форматами на выходе (поэкспериментируй с 0 и датами), да скоростью выполнения.
Может быить, какие-то из функций оставлены для обратной совместимости с предыдущими версиями VB, но об этом, увы, я ничего не нашёл...P(
Привет! Такой вопрос, как можно и можно ли вообще объявить масив в котором будет весь список елементов, например:
Dim arrA(1 To 5) as Integer - это обычное объявление, а я хочу
Dim arrA(1,2,3,4,5) as Integer
Запятая здесь условный знак, потому что когда это сделать то програма воспринимает как
Dim arrA(0 To 1,0 To 2,0 o 3, и т.д.) as Integer
Я это хочу реализовать в транслитераторе!
Привет! Такой вопрос, как можно и можно ли вообще объявить масив в котором будет весь список елементов, например:
Dim arrA(1 To 5) as Integer - это обычное объявление, а я хочу
Dim arrA(1,2,3,4,5) as Integer
Запятая здесь условный знак, потому что когда это сделать то програма воспринимает как
Dim arrA(0 To 1,0 To 2,0 o 3, и т.д.) as Integer
Я это хочу реализовать в транслитераторе!
Ну массив можно объявить только:
dim Arr(размерность массива) as тип
Например
DIM ARR(3) AS Long
или
DIM ARR() AS Long - объявление массива без размерности, а потом:
ReDim ARR(нужная размерность),
Но можно и так:
Dim Arr as Тип
Arr = Array(данные для массива через запятую)
Ну массив можно объявить только:
dim Arr(размерность массива) as тип
Например
DIM ARR(3) AS Long
или
DIM ARR() AS Long - объявление массива без размерности, а потом:
ReDim ARR(нужная размерность),
Но можно и так:
Dim Arr as Тип
Arr = Array(данные для массива через запятую)
Спасибо за подсказку, попробою, я немного задерживаюсь с написанием последней задачки, просто со временем обвал, но ты не подумай что я сдался!!!
Спасибо за подсказку, попробою, я немного задерживаюсь с написанием последней задачки, просто со временем обвал, но ты не подумай что я сдался!!!
ОК. Я жду...;) Блин, была для тебя задачка какая-то, но забыл... Ну ничего, как решишь текущую, так вспомню, или новую придумаю...
ОК. Я жду...;) Блин, была для тебя задачка какая-то, но забыл... Ну ничего, как решишь текущую, так вспомню, или новую придумаю...
Привет! Давно я не был в NETе, задачка почти готова я тебе на днях сброшу. У меня такая проблема, мой VB6 не имеет MSDN бибилиотеки, а без справки сам знаеш не очень удобно работать. Диск с MSDN я найти не могу, может поможеш найти?
Можно ли скачать справку где-то в NET, или если можеш то сбрось мне?
Привет! Давно я не был в NETе, задачка почти готова я тебе на днях сброшу. У меня такая проблема, мой VB6 не имеет MSDN бибилиотеки, а без справки сам знаеш не очень удобно работать. Диск с MSDN я найти не могу, может поможеш найти?
Можно ли скачать справку где-то в NET, или если можеш то сбрось мне?
Привет! Давно я не был в NETе, задачка почти готова я тебе на днях сброшу. У меня такая проблема, мой VB6 не имеет MSDN бибилиотеки, а без справки сам знаеш не очень удобно работать. Диск с MSDN я найти не могу, может поможеш найти?
Можно ли скачать справку где-то в NET, или если можеш то сбрось мне?
Да, целиком msdn сброить по "мылу", пожалуй, очень затруднительно. Погляди адрес, который указал уважаемый xelos - там тот же MSDN, только самый свежий, так сказать...
Да, целиком msdn сброить по "мылу", пожалуй, очень затруднительно. Погляди адрес, который указал уважаемый xelos - там тот же MSDN, только самый свежий, так сказать...
Я был на том сайте, бродил там, а так толком и не понял где MSDN для VB6. Если не затруднит то можна более подробною опись где ОН!!!
Что касается програми, замену символов с помощю кодов реализовать не получается, буду делать с помощю подстановки букв!
Я был на том сайте, бродил там, а так толком и не понял где MSDN для VB6. Если не затруднит то можна более подробною опись где ОН!!!
Что касается програми, замену символов с помощю кодов реализовать не получается, буду делать с помощю подстановки букв!
Правку символов можно реалиовывать и при помощи подмены. Согласен. Я поэтому в условии задачи и указал, что, если не получится, делай подстановку.
А вот по поводу MSDN, так он на сайте почти такой же, как и на CD. Поэтому, думаю, тебе просто нужно с навигацией разобраться. Это тяжело объяснить - это нужно показывать... Блин, даже и не знаю. как объяснить... Вобщем, тебе нужно разобраться с навигацией. Она такая же, как в справке того же Офиса. Только из предложеных вариантов тебе нужно выбирать между C, VB и прочиим... Вобщем, показывать надо это... Попробуй ещё с ним повозиться...
Правку символов можно реалиовывать и при помощи подмены. Согласен. Я поэтому в условии задачи и указал, что, если не получится, делай подстановку.
А вот по поводу MSDN, так он на сайте почти такой же, как и на CD. Поэтому, думаю, тебе просто нужно с навигацией разобраться. Это тяжело объяснить - это нужно показывать... Блин, даже и не знаю. как объяснить... Вобщем, тебе нужно разобраться с навигацией. Она такая же, как в справке того же Офиса. Только из предложеных вариантов тебе нужно выбирать между C, VB и прочиим... Вобщем, показывать надо это... Попробуй ещё с ним повозиться...
Привет! Сегодня я не с пустыми руками! Намучелся я с этой програмой, четыре раза все переделавал но в конце концов получилось. Заархивированые исходники я отсылаю в присоедененных файлах, попробуль перекомпилируй у себя! Прога работает коректно, ошибок не возникает. Думаю можно подумать о новой задачке, если есть то присылай.
Правку символов можно реалиовывать и при помощи подмены. Согласен. Я поэтому в условии задачи и указал, что, если не получится, делай подстановку.
А вот по поводу MSDN, так он на сайте почти такой же, как и на CD. Поэтому, думаю, тебе просто нужно с навигацией разобраться. Это тяжело объяснить - это нужно показывать... Блин, даже и не знаю. как объяснить... Вобщем, тебе нужно разобраться с навигацией. Она такая же, как в справке того же Офиса. Только из предложеных вариантов тебе нужно выбирать между C, VB и прочиим... Вобщем, показывать надо это... Попробуй ещё с ним повозиться...
Привет! Сегодня я не с пустыми руками! Намучелся я с этой програмой, четыре раза все переделавал но в конце концов получилось. Заархивированые исходники я отсылаю в присоедененных файлах, попробуль перекомпилируй у себя! Прога работает коректно, ошибок не возникает. Думаю можно подумать о новой задачке, если есть то присылай. С MSDN попоробую разобратся. Вопрос не по теме: как на этом сайте вставить свою фотографию?
Привет! Сегодня я не с пустыми руками! Намучелся я с этой програмой, четыре раза все переделавал но в конце концов получилось. Заархивированые исходники я отсылаю в присоедененных файлах, попробуль перекомпилируй у себя! Прога работает коректно, ошибок не возникает. Думаю можно подумать о новой задачке, если есть то присылай. С MSDN попоробую разобратся. Вопрос не по теме: как на этом сайте вставить свою фотографию?
Моледец,прога понравился,так держать!!!
Моледец,прога понравился,так держать!!!
Привет! Если есть что-нибуть новое в смысле задача то бросай. Жду с нетерпением!
P.S. Кстати хотел тебя спросить почему ты не переходиш на VB.NET? Я от себе поставил среду - мощная махина!!! Но пока не буду профи в VB6 выше подниматся не буду.
Привет! Если есть что-нибуть новое в смысле задача то бросай. Жду с нетерпением!
P.S. Кстати хотел тебя спросить почему ты не переходиш на VB.NET? Я от себе поставил среду - мощная махина!!! Но пока не буду профи в VB6 выше подниматся не буду.
Ты наверное спутал меня с кем то:) Я начинаюший
Правку символов можно реалиовывать и при помощи подмены. Согласен. Я поэтому в условии задачи и указал, что, если не получится, делай подстановку.
А вот по поводу MSDN, так он на сайте почти такой же, как и на CD. Поэтому, думаю, тебе просто нужно с навигацией разобраться. Это тяжело объяснить - это нужно показывать... Блин, даже и не знаю. как объяснить... Вобщем, тебе нужно разобраться с навигацией. Она такая же, как в справке того же Офиса. Только из предложеных вариантов тебе нужно выбирать между C, VB и прочиим... Вобщем, показывать надо это... Попробуй ещё с ним повозиться...
Привет! Ти куда пропал? У тебя со временем напряги? Если так то я понимаю, у меня это в порядке вещей, я там сбросил заархивированые исходники чуть раньше по последней здачке, если сможеш то посмотри, ну а я бы хотел двигатся дальше, если есть новые задания пиши! Жду ответа!!!
Моледец,прога понравился,так держать!!!
Я тебя действительно спутал, но ничего страшного, будем знакомы! Ты давно пишеш на VB6?
Если будут койкакие вопросы обращайся, чем смогу тем помогу, я и сам относительно новичок, но опыт написания приложений уже есть.
Я тебя действительно спутал, но ничего страшного, будем знакомы! Ты давно пишеш на VB6?
Если будут койкакие вопросы обращайся, чем смогу тем помогу, я и сам относительно новичок, но опыт написания приложений уже есть.
Спасибо за предложение,Я обезательно им воспользуюсь.:}
Почитал тут про вашу задачку на счет ресайза и вот что могу предложить попробовать еще (если это было сделано - извиняюсь, коды не смотрел). Так вот, в ВБ, в отличии по от, например, продуктов Borland, нельзя выставить минимальные размеры формы явно. При этом, если делать элементы, которые уменьшаются при уменьшении формы, то в определенный момент, когда размер элемента становится 0 или меньше выпадает ошибка. Так вот могу предложить подумать, как это можно обойти. Вариант, когда размеры элементов расчитываются исходя из коэффициентов не очень пойдет.
Смысл сводится к тому, чтобы ограничить минимальный размер формы. Тут вообще возможно несколько вариантов. Сразу оговорюсь, что если обрабатывать onResize и в нем выставлять мин. значение - получается полная ерунда. Можно это сделать по другому...
Задачка, на мой взгляд, действительно интересная.
Народ! Всех приветствую.
Почитал тут про вашу задачку на счет ресайза и вот что могу предложить попробовать еще (если это было сделано - извиняюсь, коды не смотрел). Так вот, в ВБ, в отличии по от, например, продуктов Borland, нельзя выставить минимальные размеры формы явно. При этом, если делать элементы, которые уменьшаются при уменьшении формы, то в определенный момент, когда размер элемента становится 0 или меньше выпадает ошибка. Так вот могу предложить подумать, как это можно обойти. Вариант, когда размеры элементов расчитываются исходя из коэффициентов не очень пойдет.
Смысл сводится к тому, чтобы ограничить минимальный размер формы. Тут вообще возможно несколько вариантов. Сразу оговорюсь, что если обрабатывать onResize и в нем выставлять мин. значение - получается полная ерунда. Можно это сделать по другому...
Задачка, на мой взгляд, действительно интересная.
Привет! Я автор єтой проги, раньше мною была написана процедура по ресайзу формы, и я поступил так как ты советуеш не поступать тоесть определил минимальные значения елементов и растояний между ними. В момент выполнения соби=ытия Resize происходило вычисление размеров елементов и растояний и сравнение с минимально-допустимыми значениями, при этом стояло условие, если меньше минимального то присвоить минимальное значение. Другими словами я это реализовал так и у меня все получилось, почему ты говориш что это полная ерунда?
Правку символов можно реалиовывать и при помощи подмены. Согласен. Я поэтому в условии задачи и указал, что, если не получится, делай подстановку.
А вот по поводу MSDN, так он на сайте почти такой же, как и на CD. Поэтому, думаю, тебе просто нужно с навигацией разобраться. Это тяжело объяснить - это нужно показывать... Блин, даже и не знаю. как объяснить... Вобщем, тебе нужно разобраться с навигацией. Она такая же, как в справке того же Офиса. Только из предложеных вариантов тебе нужно выбирать между C, VB и прочиим... Вобщем, показывать надо это... Попробуй ещё с ним повозиться...
Привет, ты куда пропал? Если у тебя со временем трудно то напиши! А то я начинаю думать что меня игнорируеш.
Основная причина - короче говоря, если вот так вот программно "возвращать" размеры формы к какому - то значению, то все конечно работает, только наблюдается один глюк, если кнопку мыши не отпускать. Конечно можно и на эжто наплевать, но реально - даже в таком случае можно получить ту самую ошибку, если очень постараться, да и выглядит не очень хорошо все это...
Прошу прощенья, что долго не отвечал. У меня сейчас завал дел, а со 2 числа я в отпуске. Давайте поэтому остальные уроки перенесём на вторую половину июля. ОК?
Прошу прощенья, что долго не отвечал. У меня сейчас завал дел, а со 2 числа я в отпуске. Давайте поэтому остальные уроки перенесём на вторую половину июля. ОК?
ОК! Я там несколько раньше сбросил решение последей задачки поэтому если будет время посмотри (она во вложеных файлах). Желаю хорошо отдохнуть, до встречи!!!
В приведенном коде есть один очень мешающий недостаток:
1. В функциях Resize_frmTransliterate (и др.) стоят явные ссылки на контролы формы. Т.о. теряется универсальность кода и мы уже можем использовать эту функцию для других форм без переделки самого кода, а как бы хотелось, раз написав функцию по resize'у и положив ее в модуль потом спокойно использовать этот модуль во всех своих проектах долгие, долгие годы :)
Тем более что все это возможно сделать немного модернизировав сам алгорим функций.
Не знаю, заинтересует ли тебя эта задачка и нужна ли тебе подсказка, мое дело как говорится, предложить ;)
Позвольте я тоже выскажу свое мнение по поводу представленного кода, а именно рац. предложения.
В приведенном коде есть один очень мешающий недостаток:
1. В функциях Resize_frmTransliterate (и др.) стоят явные ссылки на контролы формы. Т.о. теряется универсальность кода и мы уже можем использовать эту функцию для других форм без переделки самого кода, а как бы хотелось, раз написав функцию по resize'у и положив ее в модуль потом спокойно использовать этот модуль во всех своих проектах долгие, долгие годы :)
Тем более что все это возможно сделать немного модернизировав сам алгорим функций.
Не знаю, заинтересует ли тебя эта задачка и нужна ли тебе подсказка, мое дело как говорится, предложить ;)
ОК, Сергей, перехвати, пожалуста, у меня хотя бы на время эту тему. А то сейчас я защищался, тут ещё отпуск близится и надо все проекты передавать перед отпуском, а со 2 числа меня вообще не будет, а так не хочется делать долгий перерыв в задачках! Перехвати тему, если не трудно! ОК?
Теперь, к чему я веду.
На задачках, которые реально пригодятся как "просто для себя", так и в плане использования в проектах в будущем, я пытаюсь показать разные интересные приёмы программирования так, чтобы уважаемый Andi_SPAWN сам их решал - так лучше всего, на мой взгляд, запоминается,и привести это всё к написанию универсального калькулятора, который будет считать гору всякой всячины. Это как бы конец первого этапа.
Потом вторым этапом хочу начать разбор работы с БД... Это очень пригодится ещё... Но, в принципе, 2 этап будет ещё не скоро, я успею вернуться...
Подхватишь на 3-4 недельки тему, ок?
Если ты напишешь хорошую функцию, но которая будет привязана к твоему проекту как цепной пес, то радости от нее не будет даже тебе, когда ты захочешь применить ее в каком-нибудь другом проекте, не говоря уже о других людях.
На своем трехлетнем опыте постоянного писательства мелких прог, макросов и т.д. я уже убедился и всегда теперь пишу код максимально независимый и универсальный, потому что знаю, потратив в два раз больше времени на придании функции универсальности я потом окуплю многими сэкономленными часами, просто подключив готовый модуль к проекту. Главное, что месяцы Вашей работы не пропадут зря после окончания проекта, а будут копиться, копиться и копиться, значительно сокращая Ваши дальнейшие трудозатраты и уменьшая кол-во совершенных ошибок.
Что касается конкретно данного примера, то эталоном конечно может служить разработка .... Гетца, но она хоть и достаточно универсальна, все таки привязана к Access, а вот реализовать эту идею под VB пока вроде никто не сделал, а было бы всем счастье... так что я преследую еще и корыстные цели, с другой стороны я думаю Andi_SPAWN было бы приятно решить эту задачку самостоятельно (я то уже видел эталон и мне остается только техн. все перелапатить, без всякого творческого порыва :( ) и достичь заветного идела собственными силами.
Моя позиция попроще: стараться чтобы код красивым и функциональным был, ну и главное конечно - универсальным.
Если ты напишешь хорошую функцию, но которая будет привязана к твоему проекту как цепной пес, то радости от нее не будет даже тебе, когда ты захочешь применить ее в каком-нибудь другом проекте, не говоря уже о других людях.
На своем трехлетнем опыте постоянного писательства мелких прог, макросов и т.д. я уже убедился и всегда теперь пишу код максимально независимый и универсальный, потому что знаю, потратив в два раз больше времени на придании функции универсальности я потом окуплю многими сэкономленными часами, просто подключив готовый модуль к проекту. Главное, что месяцы Вашей работы не пропадут зря после окончания проекта, а будут копиться, копиться и копиться, значительно сокращая Ваши дальнейшие трудозатраты и уменьшая кол-во совершенных ошибок.
Что касается конкретно данного примера, то эталоном конечно может служить разработка .... Гетца, но она хоть и достаточно универсальна, все таки привязана к Access, а вот реализовать эту идею под VB пока вроде никто не сделал, а было бы всем счастье... так что я преследую еще и корыстные цели, с другой стороны я думаю Andi_SPAWN было бы приятно решить эту задачку самостоятельно (я то уже видел эталон и мне остается только техн. все перелапатить, без всякого творческого порыва :( ) и достичь заветного идела собственными силами.
Привет! Я так понимаю что задачка состоит в том чтобы сделать функцию ресайза унпверсальной?
Привет! Я так понимаю что задачка состоит в том чтобы сделать функцию ресайза унпверсальной?
Да, чтобы можно было функции указывать любую форму, т.е. достаточно было передать ссылку на форму.