Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


UCase + LCase

Postades av 2001-02-04 17:44:00 - Sven Jansson, i forum visual basic - allmänt, Tråden har 18 Kommentarer och lästs av 1157 personer

Sitter och klurar på ett problem, koden nedan fungerar så att första bokstav blir Stor. Men skriver jag in med stora bokstäver blir det det och det är det som jag inte får in i mitt tänkande. Det är tre text som det ska in i Text1(0) till Text1(2). Ett ex: Carl inte CARL. "Det är början till en adressbok hade jag tänkt". Är det någon ?
S J
*-----Kod -----*
Private Sub Text1_LostFocus(Index As Integer)

If Len(Text1(0)) > 0 Then
If Mid(Text1(0), 1, 1) <> Mid(UCase(Text1(0)), 1, 1) Then
If Len(Text1(0)) > 1 Then
Text1(0) = Mid(UCase(Text1(0)), 1, 1) & Right(Text1(0), Len(Text1(0)) - 1)
Else
Text1(0) = Mid(UCase(Text1(0)), 1, 1)
End If
End If


Svara

Sv: UCase + LCase

Postades av 2001-02-04 20:45:00 - Leif Parmlind

Jag tyckte du var på god väg.

Private Sub Text1_LostFocus(Index As Integer)

If Len(Text1(0)) > 0 Then
If Mid(Text1(0), 1, 1) <> Mid(UCase(Text1(0)), 1, 1) Then
If Len(Text1(0)) > 1 Then
'Text1(0) = Mid(UCase(Text1(0)), 1, 1) & Right(Text1(0), Len(Text1(0)) - 1)
' prova
Text1(0) = Mid(UCase(Text1(0)), 1, 1) & LCase(Right(Text1(0), Len(Text1(0)) - 1))
Else
Text1(0) = Mid(UCase(Text1(0)), 1, 1)
End If
End If

MVH
\Leif P


Svara

Sv: UCase + LCase

Postades av 2001-02-04 23:31:00 - Andreas Hillqvist

I VB6 finns funktionen StrConv() som kan göra jobbet åt dig.

Text1(0) = StrConv(Text1(0), vbProperCase)

Men den ändrar första bokstaven i alla ord till stor bokstav.
Liten fråga, skall det vara en referens till Text1(0) eller till Text1(Index)?

//Mvh, Andreas


Svara

Sv: UCase + LCase

Postades av 2001-02-05 05:19:00 - Sven Jansson

Tack för era svar, båda är vad jag har använding av.

Rubrik:Sv: UCase + LCase
2001-02-04 20:45:13 - Leif P
MVH
\Leif P

------------

Rubrik:Sv: UCase + LCase
2001-02-04 23:31:02 - Andreas Hillqvist


I VB6 finns funktionen StrConv() som kan göra jobbet åt dig.

Text1(0) = StrConv(Text1(0), vbProperCase)

Men den ändrar första bokstaven i alla ord till stor bokstav.
Liten fråga, skall det vara en referens till Text1(0) eller till Text1(Index)?

//Mvh, Andreas

Det är till Index. Den här var bra till namn om det är mer ett ord. Jag var inne på att göra en Select Case Index, men har ej kommit på om det är det bästa, ska prova lite om det lossnar nu.
:-) Sven


Svara

Sv: UCase + LCase

Postades av 2001-02-05 06:51:00 - Sven Åke Persson

Hej
Så här skulle jag princip lösa ditt prob.

Private Sub Text1_KeyPress(Index As Integer, _
KeyAscii As Integer)
'TextBox med index 3 får alltid första bokstav UCase
If Index = 3 Then
If Len(Text1(3)) = 0 Then
Select Case KeyAscii
Case 97 To 122
KeyAscii = KeyAscii - 32
Case Is = 228 'ä
KeyAscii = 196
Case Is = 229 'å
KeyAscii = 197
Case Is = 246 'ö
KeyAscii = 214
End Select
End If ' Len
End If ' Index
End Sub

mvh
Sven


Svara

Sv: UCase + LCase

Postades av 2001-02-05 07:25:00 - Sven Åke Persson

Hej
Yttrligare ett sätt att lösa ditt prob.

Private Sub Text1_KeyPress(Index As Integer, _
KeyAscii As Integer)
'TextBox med index 3 får alltid första bokstav UCase
If Index = 3 Then
If Len(Text1(3)) = 0 Then
If KeyAscii > 96 And KeyAscii < 123 _
Then KeyAscii = KeyAscii And 223
If KeyAscii = 228 _
Then KeyAscii = KeyAscii And 223
If KeyAscii = 229 _
Then KeyAscii = KeyAscii And 223
If KeyAscii = 246 _
Then KeyAscii = KeyAscii And 223
End If ' Len
End If ' Index
End Sub

mvh
Sven


Svara

Sv: UCase + LCase

Postades av 2001-02-05 23:14:00 - Alf Zell

Hej, ytterligare förslag till stacken.
Om jag inte har fattat det helt fel så tycker jag det vore enklast att mellanlagra i en tmpvariabel och sedan helt sonika använda strconv.
Men det kanske är för enkelt ???

tmpText=LCase(Text_1(index))
Text_1(index)=strConv(tmpText,3)


Svara

Sv: UCase + LCase

Postades av 2001-02-06 05:11:00 - Sven Jansson

Tack för alla svar. Nu har jag löst det problemet.
:-) Sven


Svara

Sv: UCase + LCase

Postades av 2001-02-06 11:12:00 - Sven Åke Persson

Gaggiga Sven Igen
Inget annat att vänta från en 62 åringr
Jag måsye optimera ytterligare

Private Sub Text1_KeyPress(Index As Integer, _
KeyAscii As Integer)
'TextBox med index 3 får alltid första bokstav UCase
'Tecken efter mellanslag blir Ucase

Static lastchr As String
If Index = 3 Then
If Len(Text1(3)) = 0 Or lastchr = Chr$(32) Then
If KeyAscii > 96 And KeyAscii < 123 _
Then KeyAscii = KeyAscii And 223
If KeyAscii > 227 And KeyAscii < 247 _
Then KeyAscii = KeyAscii And 223
End If ' Len
lastchr = Chr$(KeyAscii)
End If ' Index
End Sub


StrConv är väl Ok Men ! då har man i princip
förlorat poängen med omvandlingen.

Enl mitt förslag så ändras tecknet direkt när användaren
trycker på tangenten.
Enl ert förslag så blir det så att att han ser
i textboxen aj fae... jag slog liten bokstav
så backar han och korrigerar.Då behövs inte
StrConvert

tycker jag (som alltid vill ha rätt :-))
mvh
Sven


Svara

Sv: UCase + LCase

Postades av 2001-02-06 15:12:00 - Andreas Hillqvist

Tycker också din lösning är smidig på så sätt att det omvandlar direkt.
Men den har några luckor. Om du klistrar in text omvandlas den ej. Om du markerar all text och trycker på en alfanumerisk tanget, eller om du placerar markör längst till vänster blir den ej stor bokstav. Är osäker på om den hanterar alla tecken som har gemener och versaler...

Men strConv i LostFocus är inte heller felfri.
Har för mig att Lostfocus inte inträffar om man stänger formuläret med X knappen i över höger hörne. Finn säkert mer problem...

Men det är ett knivigar problem än vad det utger sig för att vara. Men vem gillar inte en utmaning... :O)




Svara

Sv: UCase + LCase

Postades av 2001-02-06 17:40:00 - Sven Jansson

Private Sub Text1_LostFocus(Index As Integer)

' Så här långt har jag kommit, lite kladd blir det men på G.
'1 Den första är perfekt för mig, Det blir Stor Så Här
' i alla 3 text Fnamn, Enamn och Gata.
' Har tagit bort X knappen, hittade en API kod för det. "Snyggt".

tmpText = LCase(Text1(Index))
Text1(Index) = StrConv(tmpText, 3)

Text1(4).Text = UCase(Text1(4).Text) '2 Stora bokstäver. För det är Orten.

'Om det är mindre än 5 siffror.
If Index = 3 Then
If Len(Text1(3)) <= 4 Then
MsgBox "Det fattas en siffra eller mer!"
Text1(3).SetFocus

Else
'Om det är 5 siffror.
If Index = 3 Then
If Len(Text1(3)) = 5 Then _
Text1(3) = Left$(Text1(3), 3) _
& " " & Right$(Text1(3), 2)
' Om det är 6 siffror.
If Index = 3 Then
' Problemet nedan om det är 6 siffror Ex: 123456
' Blir resultatet 123 56
If Len(Text1(3)) = 6 Then _
Text1(3) = Left$(Text1(3), 3) _
& " " & Right$(Text1(3), 2)

End If
'End If
' End If
' End If
End If
End If
End If
End Sub


Svara

Sv: UCase + LCase

Postades av 2001-02-06 19:22:00 - Andreas Hillqvist

Hej.
Här förändrat den till lite mer i min smak. Hoppas du uppskattar det.

Är starkt emot att disabla kryssrutan. Bättra att lura den med en sendkeys satts i QueryUnload.

Om du använder VB6 rekomenderar jag att du använder Validate eventet, vilket är till för att valider eftersom möjlig het vis att hindra textrutan från att förlora fokus(genom att sätta Cancel = True).

Har lag upp det såhär:
1 - Förnamn
2 - Efternamn
3 - Gatuadress
4 - Postnummer
5 - Ort

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
SendKeys "{Tab}", True
End Sub

'----- VB5 -----
Private Sub Text1_LostFocus(Index As Integer)
Dim TextBox As TextBox
Dim tmpText As String
Set TextBox = Text1(Index)

Select Case Index
Case 1 To 3 'För-, efternamn och gatuadress
tmpText = LCase(TextBox)
TextBox = StrConv(tmpText, vbProperCase)
Case 4 ' PostNummer
If TextBox Like "### ##" Then
ElseIf TextBox Like "#####" Then
TextBox = Format$(TextBox, "@@@\ @@")
Else
MsgBox "Du har angivit Ogiltligt postnummer!"
TextBox.SetFocus
End If
Case 5 ' Stora bokstäver för Orten.
TextBox = UCase(TextBox)
End Select

End Sub

'----- VB6 -----
Private Sub Text1_Validate(Index As Integer, Cancel As Boolean)
Dim TextBox As TextBox
Dim tmpText As String
Set TextBox = Text1(Index)

Select Case Index
Case 1 To 3 'För-, efternamn och gatuadress
tmpText = LCase(TextBox)
TextBox = StrConv(tmpText, vbProperCase)
Case 4 ' PostNummer
If TextBox Like "### ##" Then
ElseIf TextBox Like "#####" Then
TextBox = Format$(TextBox, "@@@\ @@")
Else
MsgBox "Du har angivit Ogiltligt postnummer!"
Cancel = True
End If
Case 5 ' Stora bokstäver för Orten.
TextBox = UCase(TextBox)
End Select


/Mvh, Andreas Hillqvist


Svara

Sv: UCase + LCase

Postades av 2001-02-06 22:26:00 - Sven Åke Persson

Hej
Det blev en hel del kod Anders
>Anders Skrev
>Osäker på om den hanterar alla tecken som har gemener och versaler...

Jo det gör den enl standard är det alltid 32 teckens skillnad
mellan gemener och versaler.
I bitvis operation är det bit nr 5 som är satt till 1 vid små bokstäver
och 0 (noll) vid stora

slut gaggat om detta
Sven


Svara

Sv: UCase + LCase

Postades av 2001-02-07 06:31:00 - Sven Jansson

Hej...
Nu har jag fått mycket tips och håller på att utvärderar dessa, det verkar fungera som jag hade tänkt det. Det är då man upptäcker något annat som är galet. återkommer mer om det.
Tack för mig.
:-) Sven


Svara

Sv: UCase + LCase

Postades av 2001-02-07 09:26:00 - Andreas Hillqvist

Tack för upplysningen. Viste faktist inte det. Men gäller det även Unicode tecken?

Lär sig nåt nytt varje dag...


Svara

Sv: UCase + LCase

Postades av 2001-02-07 11:40:00 - Sven Jansson

Såg ditt inlägg blev nyfiken på vad Unicode är för något. Måste fråga för är man grön så är man.
:-) Sven
<------------------>

Rubrik:Sv: UCase + LCase
2001-02-07 09:26:50 - Andreas Hillqvist


Tack för upplysningen. Viste faktist inte det. Men gäller det även Unicode tecken?

Lär sig nåt nytt varje dag...


Svara

Sv: UCase + LCase

Postades av 2001-02-07 14:09:00 - Andreas Hillqvist

Kort om Unicode:

Det är ju väldigt begränsande att bara kunna använda 256 tecken(en byte per tecken). Så därför uppkom Unicode. Vilket använder två byte per tecken.


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 616
27 953
271 709
5 515
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies