Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / В ТекстБоксе все буквы ЗАГЛАВНЫЕ / 21 сообщений из 21, страница 1 из 1
28.11.2007, 18:24
    #34972941
part_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
Подскажите как сделать так, чтоб в textbox1 всё что пишется - то сразу большими буквами.
Уговорить компьютер пока не удаётся, он у меня гордый :))
...
Рейтинг: 0 / 0
28.11.2007, 18:43
    #34972994
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
В модуле:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
Option Explicit

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" _
    (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const GWL_STYLE = (- 16 )

Private Const ES_UPPERCASE = &H8&
Private Const ES_LOWERCASE = &H10
Private Const ES_NUMBER = &H2000

Public Enum eTextCase
    tcUpper = - 1 
    tcLower =  0 
End Enum

Public Sub SetCase(ByRef pTextbox As TextBox, ByVal pCase As eTextCase)

    Dim dwStyle As Long
    
    With pTextbox
        dwStyle = GetWindowLong(.hwnd, GWL_STYLE)
        dwStyle = IIf(pCase, dwStyle Or ES_UPPERCASE, dwStyle Or ES_LOWERCASE)
        SetWindowLong .hwnd, GWL_STYLE, dwStyle
    End With
    
End Sub

End Sub

В форме:

Код: plaintext
    SetCase textbox1, tcUpper

Успехов
...
Рейтинг: 0 / 0
29.11.2007, 08:33
    #34973675
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
Код: plaintext
1.
2.
3.
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
  Text1.Text = UCase(Text1.Text)
End Sub
...
Рейтинг: 0 / 0
29.11.2007, 11:20
    #34974131
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
Народ Вы хоть пробывали свои примеры на практике???
Вот как нужно.

Код: plaintext
1.
2.
3.
4.
5.
6.
Option Explicit

Private Sub Text1_KeyPress(KeyAscii As Integer)

KeyAscii = Asc(UCase(Chr(KeyAscii)))

End Sub

-----------
Андрей.
...
Рейтинг: 0 / 0
29.11.2007, 11:48
    #34974253
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
Чем не нравится пример VladConn?
Надо всегда стремиться настроить поведение объектов заранее вместо написания алгоритмов исправляющих поведение "на лету" потом.
...
Рейтинг: 0 / 0
29.11.2007, 12:12
    #34974368
part_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
Действительно код от Belkina реальный и не требует огромного напряга мозгов.
...
Рейтинг: 0 / 0
29.11.2007, 12:37
    #34974509
Belkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
WorobjoffЧем не нравится пример VladConn?
Надо всегда стремиться настроить поведение объектов заранее вместо написания алгоритмов исправляющих поведение "на лету" потом.
Просто, на мой взгляд, избыток кода, когда можно в одну строку.
А пример AndreyMp не рабочий. Мое высказывание относилось вообще-то к нему.
Я все виду к тому, что нужно хоть немного проверять перед публикацией. А так только добрые намерения.
...
Рейтинг: 0 / 0
29.11.2007, 13:24
    #34974751
AndreyMp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
авторА пример AndreyMp не рабочий. Мое высказывание относилось вообще-то к нему.Ну вобщем то это не пример был, а просто идея использовать UCase. Буквы то переводятся, печатаются только в первой позиции, но это уже другой вопрос. :)
авторНадо всегда стремиться настроить поведение объектов заранее вместо написания алгоритмов исправляющих поведение "на лету" потом.Вот с этим полностью согласен, а запостил лишь потому, чтоб у автора были варианты.
...
Рейтинг: 0 / 0
29.11.2007, 13:42
    #34974820
Worobjoff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
Обработчики событий загрязняют код. Если у вас десяток-другой контролов на форме - не проблема. Но в сложном приложении, когда их десятки, и на каждый повешено помногу обработчиков с различным функциональным назначением, то поверьте мне, в таком коде разобраться очень сложно.
Настройка контролов заранее... слышали о понятиях "императивный" и "декларативный" стиль программирования?
...
Рейтинг: 0 / 0
29.11.2007, 20:25
    #34976452
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
BelkinНарод Вы хоть пробывали свои примеры на практике???
Вот как нужно.

Код: plaintext
1.
2.
3.
4.
5.
6.
Option Explicit

Private Sub Text1_KeyPress(KeyAscii As Integer)

KeyAscii = Asc(UCase(Chr(KeyAscii)))

End Sub

-----------
Андрей.

Я свой код использовал. Ваш код, к сожалению, не будет работать на Copy/Paste и при программном введении данных в Text Box. Он слишком наивен и при этом исполняется столько раз, сколько нажатий на буквенные клавиши. Мой - лишь раз.

Успехов
...
Рейтинг: 0 / 0
30.11.2007, 15:09
    #34978409
part_ok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
VladConn
Я свой код использовал. Ваш код, к сожалению, не будет работать на Copy/Paste и при программном введении данных в Text Box. Он слишком наивен и при этом исполняется столько раз, сколько нажатий на буквенные клавиши. Мой - лишь раз.

Успехов

Не усложняйте. Вопрос подразумевал при вводе ручками с клавы все буквы заглавные.
А за Ваш код спасибо, пригодится.
...
Рейтинг: 0 / 0
30.11.2007, 15:19
    #34978451
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
С чего вы взяли, что ручками?

И даже, если и так, посчитайте-ка, сколько раз будет исполняться код в Key_Press. Это просто неэффективно, вчерашний день.

Пожалуйста.
...
Рейтинг: 0 / 0
30.11.2007, 15:44
    #34978565
VladConn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
Я имел ввиду, с чего вы взяли, что из вашего вопроса видно, что ручками. Вы не забывайте, что порой людям лень что-то печатать и они просто копируют, если есть такая возможность. Очень часто, также, содержимое Textbox обновляется в результате работы программы, например при загрузке данных в поля, их обновлении, вычислении и т.д. Я не усложнял, а предложил действительно "реальный" код, как вы говорите, а не любительскую заплатку, которая порвется при первой же возможности и будет поедать ресурсы при каждом прикосновении к клавиатуре.
И мой код, будучи инкапсулирован в свой класс, не будет загромождать код самого интерфейса.

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

Если вам важнее чувствовать себя комфортно с кодом вашей программы, чем ее красота и эффективность, то тогда да - UCase, Asc, Chr (три !!! функции при каждом тычке в клаву), боязнь, вдруг введут данные в ее обход и т.д. Если обратное, то тогда что-то другое, новое. Это вопрос личного комфорта и личной ответственности. Так что смотрите, что важнее.

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

Успехов.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
13.04.2010, 09:48
    #36575553
svetoch_zorga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
а как сделать автозагружаемый макрос, чтобы в столбце "В" все буквы печатались в верхнем регистре?
...
Рейтинг: 0 / 0
13.04.2010, 11:02
    #36575770
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
svetoch_zorgaа как сделать автозагружаемый макрос, чтобы в столбце "В" все буквы печатались в верхнем регистре?обрабатывать событие изменения ячейки листа. на требуемый лист (не в модуль) запихнуть следующий код:
Код: plaintext
1.
2.
3.
4.
5.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column =  2  Then
        Target.Value = UCase(Target.Value)
    End If
End Sub
...
Рейтинг: 0 / 0
13.04.2010, 13:36
    #36576363
svetoch_zorga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
PlanB
Код: plaintext
1.
2.
3.
4.
5.
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column =  2  Then
        Target.Value = UCase(Target.Value)
    End If
End Sub


Красавчик!!!

жму руку и благодарю!!!
...
Рейтинг: 0 / 0
13.04.2010, 13:41
    #36576377
svetoch_zorga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
Код: plaintext
1.
        Target.Value = UCase(Target.Value)

только при удалении текста в колонке В пишет:

Код: plaintext
1.
2.
Run-time error'-2147417848(80010108)':
Method Value of object Range filed
...
Рейтинг: 0 / 0
13.04.2010, 13:45
    #36576386
svetoch_zorga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
... все ок! и так сойдет...
...
Рейтинг: 0 / 0
13.04.2010, 13:46
    #36576388
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
ОффтопикДопрограммировался. Увидев ник PlanB - первая мысль: бинарный вариант функции Plan
...
Рейтинг: 0 / 0
13.04.2010, 13:52
    #36576403
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
svetoch_zorga,

потому что надо писать вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo errH:
    If Target.Column =  2  And Not IsArray(Target.Value) Then
        Application.EnableEvents = False
        Target.Value = UCase(Target.Value)
        Application.EnableEvents = True
    End If
Exit Sub
errH:
    Application.EnableEvents = True
End Sub
Модератор: и не лезть в чужий топики, а открывать свои.
...
Рейтинг: 0 / 0
13.04.2010, 14:07
    #36576453
svetoch_zorga
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В ТекстБоксе все буквы ЗАГЛАВНЫЕ
сорри, благодарю :)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / В ТекстБоксе все буквы ЗАГЛАВНЫЕ / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]