2015-04-08 2 views
0

Как сделать первую букву в верхнем регистре при нажатии вкладки или пробела в vb 6.0?Верхний корпус в текстовом поле VB 6

Мой код выглядит следующим образом

txtFirstName.Text = UCase$(txtFirstName.Text) 

но не меняется после закладки или пространства

+0

Что такое знак '' '' '? –

+2

@Nadeem_MK это синтаксис старой школы VB6. У VB6 не было родного средства для изменения только первой буквы. Также мы не знаем, где находится код и как (или даже если) он вызывается. – Plutonix

+1

@Plutonix Это не совсем о синтаксисе старой школы. Строковые функции в VB6 существуют в парах - один принимает и возвращает 'Variant', другой принимает и возвращает' String'. Сильно типизированные заканчиваются '$'. Оба они полезны в разных контекстах, поэтому, если у вас есть строковая переменная, лучше использовать 'UCase $', чем 'UCase'. – GSerg

ответ

-1
StrConv Function 


Returns a Variant (String) converted as specified. 

Syntax 

StrConv(string, conversion, LCID) 

The StrConv function syntax has these named arguments: 

Part Description 
string Required. String expression to be converted. 
conversion Required. Integer. The sum of values specifying the type of conversion to perform. 
LCID Optional. The LocaleID, if different than the system LocaleID. (The system LocaleID is the default.) 


Settings 

The conversion argument settings are: 

Constant Value Description 
vbUpperCase 1 Converts the string to uppercase characters. 
vbLowerCase 2 Converts the string to lowercase characters. 
vbProperCase 3 Converts the first letter of every word in string to uppercase. 

AND THERE IS MORE ... 

К GSERGE

$ ничего не значит, когда применяется к имени функции в отличие от имени переменной. VBA использует $ AND B как суффикс для обозначения аналогичной функциональности.

VB6 IS VBA человек, который сказал возможно в VB6, но не в VBA. VB6 - программа VBA в качестве языка программирования. VB6 сам по себе - это некоторые объекты приложения и только пакет форм - нет языка программирования. Лучше всего думать о VB6 как о хосте VBA, таком как Office.

Если вы хотите, чтобы соответствующий случай видел этот код WORDBASIC Ver 6, (какое слово 2003 годно преобразовано в vba).

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer 
Public Sub MAIN() 
Select Case WordBasic.Int(GetModifer) 
     Case 0 
       WordBasic.ChangeCase 
     Case 1 
       WordBasic.ChangeCase 4 
     Case 2 
       WordBasic.ChangeCase 2 
     Case 3 
       ProperCase 
     Case Else 
       WordBasic.ChangeCase 
End Select 
End Sub 

Private Sub ProperCase() 
Dim F 
Dim z 
Dim a$ 
Dim P 
F = 1 
WordBasic.ChangeCase 2 
WordBasic.EditBookmark Name:="SerenityChangeCase", SortBy:=0, Add:=1 
z = WordBasic.GetSelEndPos() 
WordBasic.CharLeft 1 
     While WordBasic.GetSelEndPos() < z And Not WordBasic.AtEndOfDocument() 
       WordBasic.SelectCurWord 
       a$ = WordBasic.[Selection$]() 
       P = 0 
       If LCase(a$) = "a" Then 
         P = 1 
       ElseIf LCase(a$) = "an" Then 
         P = 1 
       ElseIf LCase(a$) = "as" Then 
         P = 1 
       ElseIf LCase(a$) = "at" Then 
         P = 1 
       ElseIf LCase(a$) = "be" Then 
         P = 1 
       ElseIf LCase(a$) = "by" Then 
         P = 1 
       ElseIf LCase(a$) = "in" Then 
         P = 1 
       ElseIf LCase(a$) = "is" Then 
         P = 1 
       ElseIf LCase(a$) = "of" Then 
         P = 1 
       ElseIf LCase(a$) = "on" Then 
         P = 1 
       ElseIf LCase(a$) = "or" Then 
         P = 1 
       ElseIf LCase(a$) = "to" Then 
         P = 1 
       ElseIf LCase(a$) = "and" Then 
         P = 1 
       ElseIf LCase(a$) = "are" Then 
         P = 1 
       ElseIf LCase(a$) = "for" Then 
         P = 1 
       ElseIf LCase(a$) = "the" Then 
         P = 1 
       ElseIf LCase(a$) = "from" Then 
         P = 1 
       ElseIf LCase(a$) = "what" Then 
         P = 1 
       ElseIf LCase(a$) = "with" Then 
         P = 1 
       End If 
       If P = 1 And F = 0 Then WordBasic.Insert LCase(a$) 
       WordBasic.WordRight 1 
       F = 0 
     Wend 
WordBasic.WW7_EditGoTo Destination:="SerenityChangeCase" 
WordBasic.EditBookmark Name:="SerenityChangeCase", SortBy:=0, Delete:=1 
End Sub 

Private Function GetModifer() 
Dim a 
Dim B 
Dim c 
Dim X 
     a = GetAsyncKeyState(16) 
     B = GetAsyncKeyState(17) 
     c = GetAsyncKeyState(18) 
     X = 0 
     If a < 0 Then X = X + 1 
     If B < 0 Then X = X + 2 
     If c < 0 Then X = X + 4 
GetModifer = X 
End Function 
+0

'vbProperCase' изменит все первые буквы, а не * первую букву. – GSerg

+0

Текст содержит только одно слово. Прочтите весь вопрос, это чье-то имя. – Serenity

+0

Я прочитал весь вопрос, и я не нашел «текст имеет только одно слово». В то же время я знаю многословные фамилии, где не все слова должны быть прописными (например, «der»). – GSerg

0

Используйте LostFocus событие

Private Sub yourTextBox_LostFocus() 
    With yourTextBox 
     'first letter in upper case, the rest, untouched. 
     .Text = UCase(Mid(.Text, 1, 1)) & Mid(.Text, 2, Len(.Text)) 
    End With 
End Sub 

применить ту же логику к KeyDown события и проверить, если клавиша была нажата клавиша пространство.

Private Sub yourTextBox_KeyDown(KeyCode As Integer, Shift As Integer) 
    If KeyCode = 32 Then 
     With yourTextBox 
      'first letter in upper case, the rest, untouched. 
      .Text = UCase(Mid(.Text, 1, 1)) & Mid(.Text, 2, Len(.Text)) 
      .SelStart = Len(.Text) 'put the cursor at the end of the textbox... 
     End With 
    End If 
End Sub 
Смежные вопросы