Ципихович Эндрю
Помогающий
Offline
|
|
« : 02-05-2011 07:26 » |
|
Фокус при инициализации формы Здравствуйте 1. форму с именем ... запускаю в модальном режиме, в документе Ворд, форма не обычная, файл прикрепляю. Как фокус, курсор иметь в текст боксе
2. если открыл форму в модальном режиме, можно сделать её немодальной и наоборот, если да то как??? Спасибо
|
|
|
Записан
|
|
|
|
HandKot
Молодой специалист
Offline
|
|
« Ответ #1 : 03-05-2011 05:06 » |
|
1. форму с именем ... запускаю в модальном режиме, в документе Ворд у Вас уже стоит установка фокуса на текстбокс и он там находится 2. если открыл форму в модальном режиме, можно сделать её немодальной и наоборот, если да то как??? ИМХО никак, только закрыв форму и открыв заново
|
|
|
Записан
|
I Have Nine Lives You Have One Only THINK!
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #2 : 03-05-2011 12:30 » |
|
у Вас уже стоит установка фокуса на текстбокс и он там находится ОК тогда запустил форму, на клавишах клавиатуры, жму клавиши ЦЭ, куда он должны попадать, я имею ввиду буквы ЦЭ?? Ответ в текстбокс, так?? но это не происходит, как добиться чтобы это происходило??
|
|
|
Записан
|
|
|
|
HandKot
Молодой специалист
Offline
|
|
« Ответ #3 : 04-05-2011 04:41 » |
|
Посмотрев более внимательно, получаем: 1. - это не открытие модапльного окна, а обычного. Чтобы не путаться используйте константы vbModal и vbNormal2. В методе UserForm_Initialize нежелательно устанавливать параметры объектов, т.к они на этот момент могут еще быть не загружены. В данном методе лучше (желательно) ограничиться установкой свойств самого окна и/или добавлением элементов по необходимости 3. Учитывая пункт 2, Вам надо использовать метод UserForm_ActivatePrivate Sub UserForm_Activate() Me.TextBox1.SetFocus End Sub ЗЫЖ Вам еще повезло, что метод UserForm_Initialize не генерил ошибку, хотя, если бы она была, вопроса не было бы
|
|
|
Записан
|
I Have Nine Lives You Have One Only THINK!
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #4 : 04-05-2011 14:40 » |
|
всё сделал как сказали, пошло, странно с UserForm_Activate я пробовал не шло, проехали Ваш 2 пункт не понял, сейчас там у меня: 4 строки Dim lngFrmHndl As Long, lngStyle As Long lngFrmHndl = FindWindow(vbNullString, Me.Caption) lngStyle = GetWindowLong(lngFrmHndl, GWL_STYLE) Or WS_SYSMENU Or WS_MINIMIZEBOX Or WS_MAXIMIZEBOX SetWindowLong lngFrmHndl, GWL_STYLE, lngStyle что там надо убрать или добавить??? И чтобы счастье было полным подскажите как избавиться с средней кнопкой, из тех трёх которые в углу формы, как сделать недоступной я знаю и вот после сворачивания формы в угол к кнопке пуск и потом разворачивания её как сделать чтобы курсор был там в Текст боксе, всегда был там, ведь на этой форме он мне в другом месте не нужен Спасибо
|
|
|
Записан
|
|
|
|
HandKot
Молодой специалист
Offline
|
|
« Ответ #5 : 05-05-2011 07:43 » |
|
что там надо убрать или добавить??? надо убрать т.е максимум оставить только то. что работает с самим окном: устанавливает св-ва, размеры, положение, стиль как избавиться с средней кнопкой, из тех трёх которые в углу формы точно не помню, но, вроде, с помощью API это можно сделать после сворачивания формы в угол к кнопке пуск и потом разворачивания её как сделать чтобы курсор был там в Текст боксе, всегда был там поэкспериментируйте со свойствами, может что и получится
|
|
|
Записан
|
I Have Nine Lives You Have One Only THINK!
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #6 : 05-05-2011 12:57 » |
|
1 это: Me.TextBox1.SetFocus я как говорил убрал 2 >точно не помню, но, вроде, с помощью API это можно сделать подскажите как сколько не пробовал или 0 или 1 или 3 кноки ну 2 никак 3 Заменил Лабел на РичТекстБокс, он более мне нравится в отношении с ТекстБоксом написал процедуру активации и фокус при появлении формы находится в РичТекстБоксе ОК!!! после нажатия любой клавиши в обработчике пишу, чтобы фокус был в РичТекстБоксе и курсор встаёт в крайнее левое положение в РичТекстБоксе а как указать, чтобы он вставал следом за последним введённым знаком??? Добавлено через 3 часа, 5 минут и 20 секунд:и ещё после сорачивания и затем разворачивания формы фокус теряется, как его заиметь, что писать понятно, как процедуру назвать??? Спасибо Добавлено через 21 час, 21 минуту и 56 секунд:ещё хотел спросить Строка Private Sub UserForm_Resize() - понятно, когда пользователь нажал Свернуть или Свернуть в окно, можно как-то разграничить какую именно кнопку нажал? И если он нажал Развернуть как высчитать, чтобы форма развернулась до такого размера, до максимального размера, чтобы не было места на форме которое не задействовано, ну то есть если форма была маленькая она разворачивается, сама прислоляется к левому верхнему углу монитора, а справа от неё и снизу появляются прямоугольники, как бы не мешают, но если есть возможность почему бы не устранить То есть чтобы она развернулась при этом маштабировалась на сколько это возможно
|
|
« Последнее редактирование: 06-05-2011 13:25 от Ципихович Эндрю »
|
Записан
|
|
|
|
baldr
|
|
« Ответ #7 : 06-05-2011 13:52 » |
|
Ципихович Эндрю, ЕЩЕ раз советую начать изучение VBA с ОСНОВ. А вообще - очень рекомендую изучение ООП и базовых понятий. Читая твои сбивчивые посты каждый раз у меня складывается впечатление, что у тебя восприятие программирования примерно на уровне "МАГИЯ! А назову-ка функцию 'click_button' и посмотрю что изменится!". Так нельзя. Ты представляешь что такое объект и что такое событие?
|
|
|
Записан
|
Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #8 : 06-05-2011 14:43 » |
|
Ты представляешь что такое объект и что такое событие Да представляю, отчётливо представляю если речь об этом Private Sub UserForm_Resize то внутрь процедуры вешаю MsgBox нажимаю на одну из двух кнопок и вижу сообщение. Мне кажется так нельзя А Вам так не кажется?
|
|
|
Записан
|
|
|
|
baldr
|
|
« Ответ #9 : 06-05-2011 15:05 » |
|
Ципихович Эндрю, почему вам "кажется" что так "нельзя"? Если вы так делаете,то кто ж тут запретит? Я повторю еще раз фразу, которую уже говорил вам несколько месяцев назад - вы хотите выполнить операции инструментом, который НЕ ПРЕДНАЗНАЧЕН для таких операций. Если вы хотите изменить полностью внешний вид окна - используйте WinAPI на низком уровне, но не трогайте VBA, который создавался для вполне конкретных задач! Бог мой... только сейчас увидел..... Private Sub CommandButton0y_Click()
If Len(Trim(Label1.Caption)) = 3 Then MsgBox$ "Введите не более трех цифр и нажмите кнопку или ", vbOKOnly, "Ошибка" Else Label1.Caption = Trim(Label1) & "0"
End Sub
Private Sub CommandButton1y_Click()
If Len(Trim(Label1.Caption)) = 3 Then MsgBox$ "Введите не более трех цифр и нажмите кнопку или ", vbOKOnly, "Ошибка" Else Label1.Caption = Trim(Label1) & "1"
End Sub
Private Sub CommandButton2y_Click()
If Len(Trim(Label1.Caption)) = 3 Then MsgBox$ "Введите не более трех цифр и нажмите кнопку или ", vbOKOnly, "Ошибка" Else Label1.Caption = Trim(Label1) & "2"
End Sub
Private Sub CommandButton3y_Click()
If Len(Trim(Label1.Caption)) = 3 Then MsgBox$ "Введите не более трех цифр и нажмите кнопку или ", vbOKOnly, "Ошибка" Else Label1.Caption = Trim(Label1) & "3"
End Sub
Private Sub CommandButton4y_Click()
If Len(Trim(Label1.Caption)) = 3 Then MsgBox$ "Введите не более трех цифр и нажмите кнопку или ", vbOKOnly, "Ошибка" Else Label1.Caption = Trim(Label1) & "4"
End Sub
Private Sub CommandButton5y_Click()
If Len(Trim(Label1.Caption)) = 3 Then MsgBox$ "Введите не более трех цифр и нажмите кнопку или ", vbOKOnly, "Ошибка" Else Label1.Caption = Trim(Label1) & "5"
End Sub
Private Sub CommandButton6y_Click()
If Len(Trim(Label1.Caption)) = 3 Then MsgBox$ "Введите не более трех цифр и нажмите кнопку или ", vbOKOnly, "Ошибка" Else Label1.Caption = Trim(Label1) & "6"
End Sub
Private Sub CommandButton7y_Click()
If Len(Trim(Label1.Caption)) = 3 Then MsgBox$ "Введите не более трех цифр и нажмите кнопку или ", vbOKOnly, "Ошибка" Else Label1.Caption = Trim(Label1) & "7"
End Sub
Private Sub CommandButton8y_Click()
If Len(Trim(Label1.Caption)) = 3 Then MsgBox$ "Введите не более трех цифр и нажмите кнопку или ", vbOKOnly, "Ошибка" Else Label1.Caption = Trim(Label1) & "8"
End Sub
Private Sub CommandButton9y_Click()
If Len(Trim(Label1.Caption)) = 3 Then MsgBox$ "Введите не более трех цифр и нажмите кнопку или ", vbOKOnly, "Ошибка" Else Label1.Caption = Trim(Label1) & "9"
End Sub Уважаемый.. Я повторю пожелание - УЧИТЕ языки программирования. Вы НЕ УМЕЕТЕ писать программы, но сразу хотите "сделать хорошо". Почитайте про массивы и про циклы, начните все-таки с базовых понятий.
|
|
« Последнее редактирование: 06-05-2011 15:14 от Джон »
|
Записан
|
Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #10 : 06-05-2011 16:06 » |
|
я с Вами согласен, что приведённый Вами отрезок моего кода кожно сделать лучше, ну затратите не 0,5 сек а 0,3 сек или 0,001 сек в данном конкретном примере и что??? А вот то что не работает это да, проблема
|
|
|
Записан
|
|
|
|
Sla
|
|
« Ответ #11 : 06-05-2011 18:15 » |
|
Ципихович Эндрю, так пробелема в том, что язык программирования - язык общения между человеком и машиной. Попробуйте прочитать, то что Вы пишите сами, и поставьте себя на место машины. И как только... Вы поймете друг друга - Вам откроются неведомые горизонты ПРОГРАММИРОВАНИЯ.
|
|
|
Записан
|
Мы все учились понемногу... Чему-нибудь и как-нибудь.
|
|
|
Ципихович Эндрю
Помогающий
Offline
|
|
« Ответ #12 : 07-05-2011 03:48 » |
|
есть ссылки на реальные примеры этого плана???
|
|
|
Записан
|
|
|
|
baldr
|
|
« Ответ #13 : 10-05-2011 09:54 » |
|
Ципихович Эндрю, сначала давайте уточним - вы хотите научиться правильно писать программы? Для чего? Профессионально или пока для себя? Я бы рекомендовал начать с языков типа Паскаль или C++. Конечно, Visual Basic кажется простым, но в нем очень много "слишком" упрощенных вещей, которые могут запутать или помешать понять многие вещи. Не бросайтесь писать сразу сложные примеры. Начните с самого простого по элементарному самоучителю.
|
|
|
Записан
|
Приличный компьютер всегда будет стоить дороже 1000 долларов, потому что 500 долларов - это не вполне прилично
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #14 : 10-05-2011 17:13 » |
|
baldr, я думаю, ему надо "чтобы работало", а как - это не важно. У него нет мотивации улучшать свой процесс разработки, у него есть мотивация на результат. Он очень конкретный, даже слишком.
Я уже молчу давно, не в силах это читать и комментировать. К тому же он и не слушает, он понимает только конкретные куски кода, которые можно вставить у себя, и чтобы заработало. Остальное за пределами его интересов.
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
|