Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Napisanie funkcii dlya leybelov, ustal ot oshibki 
:(
    Опции темы
Pavel_NL
Дата 26.5.2005, 11:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











zdraste vsem, pomogite 4ajniku

istoriya v kratse:
est' 6 raznyh leybelov, s sovsem raznymi imenami (pereimenovyvat' nel'zya =(...), ja ho4u 4toby kogda proizoshel form_load (zagruzka moego okoshe4ka progi), v samom na4ale to bish', 6 etix leybelov stanovilis' pustimi i nedostumnimi dlya ispolzovaniya.
pisat' 6 raz odno i tozhe no s raznimi imenami ne ho4u, no zahotel napisat funkciyu sled. vida:
Function begin_labels_clear (label_naam As Label)

With label_naam
.Enabled = False
.Caption = ""
End With

End Function


pomestil v samom verhu koda, potom nizhe u menya tam idet form_load:
.........
begin_labels_clear (lblEen)
.........

Leybel s takim imenem sushestvuyet, stopudova smile
a pri popitke prosmotra progi, on mne na form_load, i etot vizov funkcii materitsa i oret Type missmatch...

kto skazhet, 4to ya delayu ne tak? smile
  Вверх
Guest
Дата 26.5.2005, 11:33 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











smile pozhaluysta... =(

izvinite za flud
  Вверх
cardinal
Дата 26.5.2005, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Модератор: Пользуйся транслитом!
Код

Option Explicit

Private Function begin_labels_clear(label_naam As Label)
    With label_naam
        .Enabled = False
        .Caption = ""
    End With
End Function

Private Sub Command1_Click()
Call begin_labels_clear(Label1)
End Sub



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
~FoX~
Дата 27.5.2005, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 10
Всего: 68



cardinal
А почему функцией? Онаже не возвращает ничего......

Тогда уж так:
Код

Option Explicit

Private Function begin_labels_clear(label_naam As Label) As Integer
On Error GoTo ErrorHandler
    With label_naam
        .Enabled = False
        .Caption = ""
    End With
Exit Function
ErrorHandler:
  begin_labels_clear = Err.Number
  Resume Next
End Function

Private Sub Command1_Click()
Dim a As Integer
  a = begin_labels_clear(Label1)
End Sub



--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
cardinal
Дата 27.5.2005, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата
А почему функцией?

Ну он так хотел. smile



--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Naghual
Дата 27.5.2005, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Я мне кажется ему необходимо обращятся к объекту по его имени:
Код
Private Function Begin_Labels_Clear(LabelName As String)
    Dim Ctrl As Object
    
    For Each Ctrl In Me.Controls
        If TypeName(Ctrl) = "Label" Then
            If Ctrl.Name = LabelName Then
                Ctrl.Enabled = False
                Ctrl.Caption = ""
            End If
        End If
    Next
End Function



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Black_Star
Дата 27.5.2005, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 9.9.2003
Где: Minsk

Репутация: 4
Всего: 4



Гы. И каждый раз идет перебор по всем элементам...
Автор и сам решил проблему, но почему-то есть ошибка (как обычно без кода не поймешь).
А обращАтЬся ему надо не по имени (иначе имя было бы в кавычках).
PM ICQ   Вверх
cardinal
Дата 27.5.2005, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Просто как всегда надо так
Код

Call begin_labels_clear (lblEen)

или так
Код

begin_labels_clear lblEen

писать...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Pavel_NL
Дата 28.5.2005, 13:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











хм... спасибо. я только не совсем все понял. чайник же. например, что вот это такое

Код

Private Function Begin_Labels_Clear(LabelName As String)' 
    Dim Ctrl As Object 'это будут ярлыки, так?
    
    For Each Ctrl In Me.Controls 'для каждого значения в Где?! я просто такое не использовал ни разу... :)
        If TypeName(Ctrl) = "Label" Then 'вот здесь тоже сомневаюсь, правильно ли понимаю...
            If Ctrl.Name = LabelName Then 'и дальше тож
                Ctrl.Enabled = False 
                Ctrl.Caption = "" 
            End If 
        End If  
    Next
End Function


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

кстати, я от своего старого учителя слыхал, что использование меток и ГоуТу считается плохим стилем программирования... Правда? smile
  Вверх
Naghual
Дата 28.5.2005, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Приведенная мной функция ищет на форме объект типа Label по его имени.
Давай попробуем пробежатся по моему коду.

Dim Ctrl As Object - Объявляем переменную Ctrl как Объект любого типа.

For Each Ctrl In Me.Controls - Конструкция For Each ... In ... работает по тому же принципу что и обычный цикл For...Next но с одним МАЛЕНЬКИМ нюансом. Последовательным перебором переменной Ctrl присваивается каждый объект из коллекции. В данном случае Me.Controls это коллекция всех элементов управления на форме.

If TypeName(Ctrl) = "Label" Then - Если тип объекта Ctrl называется "Label" тогда...

If Ctrl.Name = LabelName Then - Если этот лейбл имеет заданное имя тогда ...
Добавлено @ 15:22
З.Ы.
Цитата
использование меток и ГоуТу считается плохим стилем программирования

Истинно говорю, правда.

И Pavel_NL зарегистрируйся
Добавлено @ 15:25
Black_Star абсолютно правильное замечание.
Тело в цикле нужно изменить вот так:
Код

...
            If Ctrl.Name = LabelName Then
                Ctrl.Enabled = False    
                Ctrl.Caption = ""
                Exit For   'Объект был найден, дальнейший перебор не нужен. Выходим из цикла
            End If 
...



--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
PavelNL
Дата 29.5.2005, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.5.2005

Репутация: нет
Всего: нет



Naghual, спасибо большое за пояснение кода. зарегился кстати.
как только смогу все, что планировал реализовать в коде, с ващей помощью, отпишусь.

топик прошу не удалчть
PM MAIL   Вверх
PavelNL
Дата 30.5.2005, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.5.2005

Репутация: нет
Всего: нет



Проблему с ошибкой наконец-то решил. smile Надо было всего навсего правильно вызвать функцию. Спасибо всем, кто помог. Узнал много нового. Топик все еше прошу не удалять, т.к. помошь наверняка понадобиться снова.
PM MAIL   Вверх
PavelNL
Дата 5.6.2005, 04:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.5.2005

Репутация: нет
Всего: нет



У меня снова вопрос smile
Я в своем фрэйме сделал строку меню. Хочу "Выход" Кнопочку сделать, чтобы все закрывалось.
Прописал Stop, но сам помню, что это не то, что мне надо, даже если бы и работало. Но даже и это не работает почему-то.
В интернете поискал что-то вроде функции Exit, не нашел. Руки кривые наверное smile

Еще хочу узнать, как переносить строки кода. Я хочу например вот следующего вида МэссэджБокс использовать:
Код

MsgBox "Hallo! U probeert een Yahtzee-wannabe spel te spelen. Wat is nou de bedoeling van het spel? Simpel. U heeft 5 dobbelstenen. Als u op 'Start' klikt, dan gooit u de dobbelstenen. Als u een dobbelsteen vast wilt houden, dan moet u op de witte oppervlakte rond het beeld van een dobbelsteen om drukken. Heeft u op een verkeerde plek gedrukt? Het kan ook terug vrij laten, door een klik op eenzelfde plek. Door drie drie poggingen met behulp van 'Start' maakt u een Spelbeurt. In het geheel zijn er maar 6 spelbeurten. Als u een niuewe spel wilt beginnen moet u naar menu 'Spel' gaan, daarna op 'Nieuw Spel' klikken. In dezelfde menu kunt u ook van het spel uit gaan (Exit)", , "Help!"

И все это написал в одну строчку, ужасно неудобно. Как пересонить строки кода на новый абзац?

ну и самый наверное ламмерский вопрос. как мне exe-шник мой получить-то? =) я нажимаю Ctrl+F5 но где мой экзэшник я так и не понимаю...

заранее спасибо

Это сообщение отредактировал(а) PavelNL - 5.6.2005, 04:33
PM MAIL   Вверх
Gannibal
Дата 5.6.2005, 04:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 742
Регистрация: 15.4.2003
Где: 010101

Репутация: 18
Всего: 17



Цитата(PavelNL @ 5.6.2005, 03:11)
Я в своем фрэйме сделал строку меню. Хочу "Выход" Кнопочку сделать, чтобы все закрывалось.


ну если правельно понял тогда тебе надо писать

Код

Privat Sub Command1_Click()
End ' закрывает всю програму :)
End Sub



Цитата(PavelNL @ 5.6.2005, 03:11)
Еще хочу узнать, как переносить строки кода. Я хочу например вот следующего вида МэссэджБокс использовать:


вот типа такого и будет если я правельно тебя понял smile

Код

MsgBox "Hallo! U probeert een Yahtzee-wannabe spel" _
& "te spelen. Wat is nou de bedoeling van het spel? Simpel." _
& "U heeft 5 dobbelstenen. Als u op 'Start' klikt, dan gooit u de dobbelstenen." _
& "Als u een dobbelsteen vast wilt houden, dan moet u op de witte" _
& "oppervlakte rond het beeld van een dobbelsteen om drukken." _
& "Heeft u op een verkeerde plek gedrukt? Het kan ook terug vrij laten," _
& "door een klik op eenzelfde plek. Door drie drie poggingen met " _
& "behulp van 'Start' maakt u een Spelbeurt. In het geheel zijn " _
& "er maar 6 spelbeurten. Als u een niuewe spel wilt beginnen " _
& "moet u naar menu 'Spel' gaan, daarna op 'Nieuw Spel' klikken." _
& "In dezelfde menu kunt u ook van het spel uit gaan (Exit)", , "Help!"



Цитата(PavelNL @ 5.6.2005, 03:11)
ну и самый наверное ламмерский вопрос. как мне exe-шник мой получить-то? =) я нажимаю Ctrl+F5 но где мой экзэшник я так и не понимаю...


Экзешник лежит там где и проект ;) лежит...


--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
cardinal
Дата 5.6.2005, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Если не ошибаюсь, то в какой-то книге было написано, что вместо
Цитата(M @ 5.6.2005, 02:47)
Privat Sub Command1_Click()
End ' закрывает всю програму smile
End Sub

лучше писать
Код

Privat Sub Command1_Click()
Unload Me
End Sub

Так как типа End это полный абзац, а Unload Me нормальная выгрузка проги... smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0626 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.