Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Даже не знаю с чего начать

2.0K
28 февраля 2004 года
Andi_SPAWN
69 / / 28.02.2004
Я новичок, теорию подчитал практики очень мало, среди всех моих знакомых не скем посоветоватся кто может помочь стать на ноги? Даже не знаю с чего начать!
Страницы:
2.0K
01 июля 2004 года
Andi_SPAWN
69 / / 28.02.2004
Цитата:
Originally posted by SergeySV


Да, чтобы можно было функции указывать любую форму, т.е. достаточно было передать ссылку на форму.



ОК! Надо попоробовать, я согласен с твоей концепцией написания програм, все исходники должны бить универсальными!

2.0K
06 июля 2004 года
Andi_SPAWN
69 / / 28.02.2004
Цитата:
Originally posted by SergeySV


Да, чтобы можно было функции указывать любую форму, т.е. достаточно было передать ссылку на форму.




Что-то у меня не получается, намекни в каком направление двигатся?

258
06 июля 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Andi_SPAWN



Что-то у меня не получается, намекни в каком направление двигатся?



Наконец то восстановили инет на работе и я смог вылезти на форум :)

Для начала можно ничего особенно в твоих функциях не менять, кроме обращений к контролам на форме.
Список явных обращений заменяем на цикл по коллекции Me.Controls

2.0K
11 июля 2004 года
Andi_SPAWN
69 / / 28.02.2004
Цитата:
Originally posted by SergeySV


Наконец то восстановили инет на работе и я смог вылезти на форум :)

Для начала можно ничего особенно в твоих функциях не менять, кроме обращений к контролам на форме.
Список явных обращений заменяем на цикл по коллекции Me.Controls




Я себе именно так и представлял но у меня что-то не получается это реализовать, было бы хорошо пример посмотреть! Если не трудно то покажи.

258
12 июля 2004 года
SergeySV
1.5K / / 19.03.2003
Если взять твой код за основу то примерно так:
Код:
Dim arCtl() As tpSizeCtl

' тип для хранения коэффицентов контрола
Type tpSizeCtl
  xDist As Double ' расстояние между контролом и формой:
  yDist As Double ' по X и Y
  xSize As Double ' размеры контрола:
  ySize As Double ' по X и Y
End Type

Public Sub Initialisation_Resize2(fForm As Form)
Dim i As Long
 
 
  If Dir$(PathINI) = "" Then
        'Вычисление коэффициентов элементов управления формы
       
        ' очищаем массив
        ReDim arCtl(0)
       
        For i = 0 To fForm.Controls.Count - 1
          ReDim Preserve arCtl(i)
          arCtl(i).xDist = fForm.Controls(i).Left / fForm.Width
          arCtl(i).yDist = fForm.Controls(i).Top / fForm.Height
          arCtl(i).xSize = fForm.Controls(i).Width / fForm.Width
          arCtl(i).ySize = fForm.Controls(i).Height / fForm.Height
        Next i
  Else
       'Чтение коэфициентов размеров элементов формы
       ......
  End If
End Sub

Public Sub Save_Resize()
    'Запись размеров елементов формы
    For i = 0 To fForm.Controls.Count - 1
          Call WriteINI(fForm.Controls(i).Name, "Width", fForm.Controls(i).Width)
          Call WriteINI(fForm.Controls(i).Name, "Height", fForm.Controls(i).Height)
          Call WriteINI(fForm.Controls(i).Name, "Left", fForm.Controls(i).Left)
          Call WriteINI(fForm.Controls(i).Name, "Top", fForm.Controls(i).Top)
    Next i
       
End Sub
2.0K
20 июля 2004 года
Andi_SPAWN
69 / / 28.02.2004
Цитата:
Originally posted by SergeySV
Если взять твой код за основу то примерно так:
Код:
Dim arCtl() As tpSizeCtl

' тип для хранения коэффицентов контрола
Type tpSizeCtl
  xDist As Double ' расстояние между контролом и формой:
  yDist As Double ' по X и Y
  xSize As Double ' размеры контрола:
  ySize As Double ' по X и Y
End Type

Public Sub Initialisation_Resize2(fForm As Form)
Dim i As Long
 
 
  If Dir$(PathINI) = "" Then
        'Вычисление коэффициентов элементов управления формы
       
        ' очищаем массив
        ReDim arCtl(0)
       
        For i = 0 To fForm.Controls.Count - 1
          ReDim Preserve arCtl(i)
          arCtl(i).xDist = fForm.Controls(i).Left / fForm.Width
          arCtl(i).yDist = fForm.Controls(i).Top / fForm.Height
          arCtl(i).xSize = fForm.Controls(i).Width / fForm.Width
          arCtl(i).ySize = fForm.Controls(i).Height / fForm.Height
        Next i
  Else
       'Чтение коэфициентов размеров элементов формы
       ......
  End If
End Sub

Public Sub Save_Resize()
    'Запись размеров елементов формы
    For i = 0 To fForm.Controls.Count - 1
          Call WriteINI(fForm.Controls(i).Name, "Width", fForm.Controls(i).Width)
          Call WriteINI(fForm.Controls(i).Name, "Height", fForm.Controls(i).Height)
          Call WriteINI(fForm.Controls(i).Name, "Left", fForm.Controls(i).Left)
          Call WriteINI(fForm.Controls(i).Name, "Top", fForm.Controls(i).Top)
    Next i
       
End Sub





Да после твоей проги я понял сколько мне еще нужно учится! Мне нужно разобратся во всем этом, но со временем сейчас напряг, как только освобожусь от роботы ты сразу увидеш результат!!! Спасибо

258
20 июля 2004 года
SergeySV
1.5K / / 19.03.2003
Ок.
2.0K
25 июля 2004 года
Andi_SPAWN
69 / / 28.02.2004
Цитата:
Originally posted by SergeySV
Ок.




Лови результат! Я переделал модуль modResize в своей програме учитывая твои рекомендации. Ты знаеш я шокирован насколько все спростилось, сам модуль стал в раза три меньше ну что требовалось сделать УНИВЕРСАЛЬНЫМ!(хотя возможно не оптимальным) он в вложеных файлах. Если есть еще кой какие задачки то бросай!Спасибо!

2.0K
25 июля 2004 года
Andi_SPAWN
69 / / 28.02.2004
Цитата:
Originally posted by mhaturov

ОК, Сергей, перехвати, пожалуста, у меня хотя бы на время эту тему. А то сейчас я защищался, тут ещё отпуск близится и надо все проекты передавать перед отпуском, а со 2 числа меня вообще не будет, а так не хочется делать долгий перерыв в задачках! Перехвати тему, если не трудно! ОК?
Теперь, к чему я веду.
На задачках, которые реально пригодятся как "просто для себя", так и в плане использования в проектах в будущем, я пытаюсь показать разные интересные приёмы программирования так, чтобы уважаемый Andi_SPAWN сам их решал - так лучше всего, на мой взгляд, запоминается,и привести это всё к написанию универсального калькулятора, который будет считать гору всякой всячины. Это как бы конец первого этапа.



Как только появишся сразу дай знать!
Потом вторым этапом хочу начать разбор работы с БД... Это очень пригодится ещё... Но, в принципе, 2 этап будет ещё не скоро, я успею вернуться...
Подхватишь на 3-4 недельки тему, ок?

2.0K
25 июля 2004 года
Andi_SPAWN
69 / / 28.02.2004
Цитата:
Originally posted by mhaturov

ОК, Сергей, перехвати, пожалуста, у меня хотя бы на время эту тему. А то сейчас я защищался, тут ещё отпуск близится и надо все проекты передавать перед отпуском, а со 2 числа меня вообще не будет, а так не хочется делать долгий перерыв в задачках! Перехвати тему, если не трудно! ОК?
Теперь, к чему я веду.
На задачках, которые реально пригодятся как "просто для себя", так и в плане использования в проектах в будущем, я пытаюсь показать разные интересные приёмы программирования так, чтобы уважаемый Andi_SPAWN сам их решал - так лучше всего, на мой взгляд, запоминается,и привести это всё к написанию универсального калькулятора, который будет считать гору всякой всячины. Это как бы конец первого этапа.
Потом вторым этапом хочу начать разбор работы с БД... Это очень пригодится ещё... Но, в принципе, 2 этап будет ещё не скоро, я успею вернуться...
Подхватишь на 3-4 недельки тему, ок?






Как только появишся то сразу дай знать!

258
25 июля 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Andi_SPAWN

Как только появишся то сразу дай знать!



Я с утра на работе гляну, ща уже поздновато, токо ночью дошел до дома :)

258
26 июля 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by SergeySV


Я с утра на работе гляну, ща уже поздновато, токо ночью дошел до дома :)



Блин, набрал целый трактат, а комп. в перезагрузку ушел...
придется заново набирать

258
26 июля 2004 года
SergeySV
1.5K / / 19.03.2003
Некоторая оптимизация по коду. Я там поспешил и оставил одну, не очень хорошую строчку:
 
Код:
For i = 0 To fForm.Controls.Count - 1
          ReDim Preserve arCtl(i)

приведет к тому, что внутри цикла у нас постоянно переопределяться массив с данными. Происходить это будет следующим образом: сначала веделится пустой кусок памяти нужного большего размера, потому туда будут скопированы данные из старого массива и наконец старый массив будет удален, а память из под него освобождена. Понятно, что в цикле с увеличением самого массива вся эта операция по ReDim Preserve.... будет требовать все больше и больше времени (наверное по экспоненте) и при большом кол-ве элементов массива очень сильно может затормозить программу. Так писать можно только, если:
1. Неизвестно заранее макс. кол-во элементов массива.
2. Массив будет маленьким.
Если массив будет большим, то тогда быстрее будет вхолостую пробежать массив для определения верхн. границы массива, потом объявить массив нужной размерности и начать основной цикл по заполнению массива уже известной величины.

Т.о. образом лучше переделать код так:
 
Код:
' очистка массива
Erase arCtl

' иниц. массива
ReDim Preserve arCtl(fForm.Controls.Count)

For i = 0 To fForm.Controls.Count - 1
    arCtl(i)......
    ..........
2.0K
26 июля 2004 года
Andi_SPAWN
69 / / 28.02.2004
Цитата:
Originally posted by SergeySV
Некоторая оптимизация по коду. Я там поспешил и оставил одну, не очень хорошую строчку:
 
Код:
For i = 0 To fForm.Controls.Count - 1
          ReDim Preserve arCtl(i)

приведет к тому, что внутри цикла у нас постоянно переопределяться массив с данными. Происходить это будет следующим образом: сначала веделится пустой кусок памяти нужного большего размера, потому туда будут скопированы данные из старого массива и наконец старый массив будет удален, а память из под него освобождена. Понятно, что в цикле с увеличением самого массива вся эта операция по ReDim Preserve.... будет требовать все больше и больше времени (наверное по экспоненте) и при большом кол-ве элементов массива очень сильно может затормозить программу. Так писать можно только, если:
1. Неизвестно заранее макс. кол-во элементов массива.
2. Массив будет маленьким.
Если массив будет большим, то тогда быстрее будет вхолостую пробежать массив для определения верхн. границы массива, потом объявить массив нужной размерности и начать основной цикл по заполнению массива уже известной величины.

Т.о. образом лучше переделать код так:
 
Код:
' очистка массива
Erase arCtl

' иниц. массива
ReDim Preserve arCtl(fForm.Controls.Count)

For i = 0 To fForm.Controls.Count - 1
    arCtl(i)......
    ..........




Приветствую! Да ты прав но для такого количества елементов как уменя это не ощутимо, да и вобще я даже не могу себе представить сколько должно быть елементов на форме щобы ощутимо замедлить выполнение проги (если тачка хорошая)? :???:
У меня к тебе такие вопросы:
1. В коллекции Control индекс елементов совпадает с их индексом проставленым в "свойствах"?
2. Я тут прочитал про подклучение *.dll к проекту и там упоминается об их регестрации, как это сделать? С помощю чего?
3. Усли есть какая-нибуть задачка то напиши!!!

2.0K
22 августа 2004 года
Andi_SPAWN
69 / / 28.02.2004
Цитата:
Originally posted by mhaturov

ОК, Сергей, перехвати, пожалуста, у меня хотя бы на время эту тему. А то сейчас я защищался, тут ещё отпуск близится и надо все проекты передавать перед отпуском, а со 2 числа меня вообще не будет, а так не хочется делать долгий перерыв в задачках! Перехвати тему, если не трудно! ОК?
Теперь, к чему я веду.
На задачках, которые реально пригодятся как "просто для себя", так и в плане использования в проектах в будущем, я пытаюсь показать разные интересные приёмы программирования так, чтобы уважаемый Andi_SPAWN сам их решал - так лучше всего, на мой взгляд, запоминается,и привести это всё к написанию универсального калькулятора, который будет считать гору всякой всячины. Это как бы конец первого этапа.
Потом вторым этапом хочу начать разбор работы с БД... Это очень пригодится ещё... Но, в принципе, 2 этап будет ещё не скоро, я успею вернуться...
Подхватишь на 3-4 недельки тему, ок?




Привет рад тебя снова видеть на форуме, как отдохнул?
Я с нетерпением жду на продолжение ниших занятий, как у тебя со времене?
Напомню, что последняя задачка была по написанию проги "Транслитерация", которая могла бы ресайзится и сохранять изминения в инишник. По ходу дела Sergey SV, предложил сделать процедуру ресайза универсальной (так как моя была жостко привязана к моэй форме) с чем я успешно справился, все это есть в ранее вложеных файлах. Это кратко все, если есть что новое то бросай!!!

266
23 августа 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by Andi_SPAWN



Привет рад тебя снова видеть на форуме, как отдохнул?
Я с нетерпением жду на продолжение ниших занятий, как у тебя со времене?
Напомню, что последняя задачка была по написанию проги "Транслитерация", которая могла бы ресайзится и сохранять изминения в инишник. По ходу дела Sergey SV, предложил сделать процедуру ресайза универсальной (так как моя была жостко привязана к моэй форме) с чем я успешно справился, все это есть в ранее вложеных файлах. Это кратко все, если есть что новое то бросай!!!


SORRY, сегодня пока подкинуть ничего не смогу - я сегодня бегу жену встречать. Где-то пару дней погляжу, что тут без меня произошло, а потом продолжим. ОК?

258
23 августа 2004 года
SergeySV
1.5K / / 19.03.2003
Цитата:
Originally posted by Andi_SPAWN



Приветствую! Да ты прав но для такого количества елементов как уменя это не ощутимо, да и вобще я даже не могу себе представить сколько должно быть елементов на форме щобы ощутимо замедлить выполнение проги (если тачка хорошая)? :???:
У меня к тебе такие вопросы:
1. В коллекции Control индекс елементов совпадает с их индексом проставленым в "свойствах"?
2. Я тут прочитал про подклучение *.dll к проекту и там упоминается об их регестрации, как это сделать? С помощю чего?
3. Усли есть какая-нибуть задачка то напиши!!!



Я тут тоже уезжал в отпуск так что не успел ответить на выпросы:

1. За номер в коллекции Controls контрола отвечает свойство Index, но токо в диспетчере свойств значение этого свойства не видно помойму, токо во время выполнения кода.

2. Подключение и регистрация Dll это два разных действия. Регистрировать Dll приходится когда она приходит на комп впервые. Ты конечно можешь просто скопировать файл Dll куда-нибудь в директорию, но токо Windows не будет знать об этой Dll ничего.
Dll это прежде всего библиотека, которая подкючается динамически. Причем динамическое подключение возложено на саму Windows. Т.е. программа говорит, хочу функцию Fun1 из библиотеки myDll.dll, тут Windows сразу озадачивается и начинает искать файл myDll.dll, чтобы его загрузить в память. Понятно дело, чтобы windows смогла его найти, ентот файл необходимо зарегистрировать (ну не будут же винды по всему диску его разыскивать). Эта регистрация подразумевает под собой заведение в реестре в спец. ветке новой ссылки на файл myDll.dll, так что теперь винда будет всегда знать где искать dll которую просят запущенные программы. Проблемы бывают только когда сам файл dll в тихую удаляют, а регистрацию (ключ в реестре) оставляют, тогда винда жестоко обламывается с загрузкой dll :)
Для регистрации dll в виндах есть спец. консл. утилита
regsvr32.exe

Вот так регистрим файл (кстати ocx, тоже надо регистрить):
regsvr32.exe Kalendar.ocx

А вот так снимаем регистрацию:
regsvr32.exe /u Kalendar.ocx

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

2.0K
23 августа 2004 года
Andi_SPAWN
69 / / 28.02.2004
Цитата:
Originally posted by mhaturov

SORRY, сегодня пока подкинуть ничего не смогу - я сегодня бегу жену встречать. Где-то пару дней погляжу, что тут без меня произошло, а потом продолжим. ОК?




Без проблем старик! 8)

3.2K
06 марта 2005 года
MasterKlass
47 / / 06.03.2005
старая тема.. но всё же...
если кто видел эту прогу про тринслитерацию...

я не понял.. как там работает режим моментальный???
вроде включаю его. если на англ. пишу то норм... все переделывает.
но стоит только на русский перейти, то уже не работает.
и наоборот...
там рандом какой -то =) или я просто спать хочу сильно =)

потом мне кажется, что нагляднее будет, когда вводишь англ текст, то кнопку Русский в Английский лучше сделать "серой". и наоборот....

+ прога виснет! если ввести англ. текст и нажать "исправить текст на английский"..
соответственно наоборот тоже виснет...
почему, не знаю... ибо код не смотрел пока.

(как работать с апи функциями в ВБ??? Подскажите плз! =) где найти список апи функций?)
2.0K
07 марта 2005 года
Andi_SPAWN
69 / / 28.02.2004
Цитата:
Originally posted by MasterKlass
старая тема.. но всё же...
если кто видел эту прогу про тринслитерацию...

я не понял.. как там работает режим моментальный???
вроде включаю его. если на англ. пишу то норм... все переделывает.
но стоит только на русский перейти, то уже не работает.
и наоборот...
там рандом какой -то =) или я просто спать хочу сильно =)

потом мне кажется, что нагляднее будет, когда вводишь англ текст, то кнопку Русский в Английский лучше сделать "серой". и наоборот....

+ прога виснет! если ввести англ. текст и нажать "исправить текст на английский"..
соответственно наоборот тоже виснет...
почему, не знаю... ибо код не смотрел пока.

(как работать с апи функциями в ВБ??? Подскажите плз! =) где найти список апи функций?)




Значит что касается "моментального режима":
если он у тебя не включон то после набора текста нужно постоянно нажимать кнопки "Русский в Английский" или "Английский в Русский" в зависимости от того какими буквами введен текст. Когда включить моментальный режим то такая потребность отпадает, но предварительно проге нужно указать режим транслитерации (текущей режим написан вверху), допустим включен "моментальный режим" + "Английский в Русский", тогда програма будет транслитерировать англ. букви в рус., если же при этом режиме ввести русские буквы то ничего не произойдет!
Что касается кнопок то согласен что нужно было сделать их серыми в зависимости от язика ввода, а виснит програма потому, що я не продумал ее дейстие в таких ситуациях как ты ей создавал в результета чего она входит в бесконечный цикл да и вобще прога далека от совершенства и была написана на колене из-за отсутсвия времени да и цели написания стояли совершенно другии.

Что же касается API-функций то могу подсказать вот что:
- список этих ф-й должен быть у тебя на машине. Запусти ...Common\Tools\Winapi\Apiload.exe там ты увидеш не только список но и синтаксис написания ф-й. Но этого мало потому что там нет описания ф-й, для этого я тебе порекомендую однин адресок http://www.vb.kiev.ua/ там есть даже примеры!

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог