/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Problem med Mask Edit Box
Fra : Lars Hoffmann


Dato : 20-04-01 20:40

Jeg har et problem som jeg ikke lige er i stand til at løse.

Jeg har en mask Edit Box der indeholder et kontonummer.
Mask Edit Box'en har følgende maske:
####-######/##.#
Hvor # jo er et tal imellem 0 og 9.
I mit program må brugeren på absolut ingen måde have mulighed for at
introducere noget masken ikke accepterer, det vil sig at jeg ikke ønsker
at bruge validate event'et til at fjerne tekst der ikke passer ind i
masken, men change eller keypress eller lignende events.
Problemet er nu at uanset hvad jeg gør ved denne mask edit Box kan man
højreklikke på den og vælge "paste" og således indsætte hvad der nu end
måtte være i udklipsholderen, også selv om det er både bogstaver,
mellemrum og specialtegn.
Allerhelst ville jeg finde en løsning der gør at der slet ikke kommer
nogen menu frem ved at højreklikke, men andre gode idéer er også
velkomne, så længe det stadig er Mask Edit Box der bruges.
Håber (halvdesperat) på en løsning

--
/Lars

HTML software: <http://go.to/HTMLEasyColors>
Brug venligst Re: og ikke Sv: ved svar, da beskeder
der begynder med Sv: bliver slettet fra mange servere

 
 
Tomas Christiansen (20-04-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 20-04-01 23:04

Lars Hoffmann skrev:
> Jeg har en mask Edit Box der indeholder et kontonummer.
....
> Problemet er nu at uanset hvad jeg gør ved denne mask edit Box kan man
> højreklikke på den og vælge "paste" og således indsætte hvad der nu end
> måtte være i udklipsholderen, også selv om det er både bogstaver,
> mellemrum og specialtegn.

Hæ-hæ! Efter at have kigget lidt på den maskerede editbox, fandt jeg på en
lille snyde-løsning:

Når fokus forsvinder fra maskedit, bliver eventuelle ulovlige værdier
fjernet, og det er bare at fjerne fokus hver gang der er sket en ændring (og
sætte fokus tilbage igen, naturligvis).

Private Sub MaskEdBox1_Change()
Me.SetFocus
MaskEdBox1.SetFocus
End Sub

-------
Tomas



Lars Hoffmann (22-04-2001)
Kommentar
Fra : Lars Hoffmann


Dato : 22-04-01 22:15

Tomas Christiansen wrote:
>
> Hæ-hæ! Efter at have kigget lidt på den maskerede editbox, fandt jeg på en
> lille snyde-løsning:

ok kanon, det tjekker jeg ud.

--
/Lars

HTML software: <http://go.to/HTMLEasyColors>
Brug venligst Re: og ikke Sv: ved svar, da beskeder
der begynder med Sv: bliver slettet fra mange servere

Lars Hoffmann (22-04-2001)
Kommentar
Fra : Lars Hoffmann


Dato : 22-04-01 22:18

Tomas Christiansen wrote:
>
> Når fokus forsvinder fra maskedit, bliver eventuelle ulovlige værdier
> fjernet, og det er bare at fjerne fokus hver gang der er sket en ændring (og
> sætte fokus tilbage igen, naturligvis).

Virker ikke helt. Hvis man ved hjælp af "paste" indsætter så der er
flere tegn end dem der må være i boxen, bliver hele indholdet af mask
edit boxen jo slettet. Jeg tror jeg bliver nød til at fedte lidt rundt
med APIs for at løse problemet på en anstændig måde.

--
/Lars

HTML software: <http://go.to/HTMLEasyColors>
Brug venligst Re: og ikke Sv: ved svar, da beskeder
der begynder med Sv: bliver slettet fra mange servere

Tomas Christiansen (23-04-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 23-04-01 08:21

Lars Hoffmann skrev:
> Virker ikke helt. Hvis man ved hjælp af "paste" indsætter så der er
> flere tegn end dem der må være i boxen, bliver hele indholdet af mask
> edit boxen jo slettet.

Øhhm - og hvad så?
Du kan aldrig helt tage højde for "dumme" brugere!
Hvis brugeren gør noget med systemet, har det en konsekvens.
Hvis brugeren gør noget forkert med systemet, har det en kedelig konsekvens.

Hvis problemet er, at du ALTID skal have en valid værdi, kan du så ikke blot
"huske" startværdien, og hver gang værdien tømmes/slettes, sættes den
tilbage til startværdien. Det værste der kan ske er, at brugeren skal
indtaste den nye værdien igen...

-------
Tomas



Lars Hoffmann (23-04-2001)
Kommentar
Fra : Lars Hoffmann


Dato : 23-04-01 18:21

Tomas Christiansen wrote:
>
> Lars Hoffmann skrev:
> > Virker ikke helt. Hvis man ved hjælp af "paste" indsætter så der er
> > flere tegn end dem der må være i boxen, bliver hele indholdet af mask
> > edit boxen jo slettet.
>
> Øhhm - og hvad så?

Så virker en Mask Edit Box jo meget ringe. Den skal jo netop forhindre
at der indtastes ting der ikke følger masken. Hvis jeg ville lave et
halvfærdigt program kunne jeg godt lade det ligge, men det vil jeg ikke
hvis jeg kan undgå det.


> Du kan aldrig helt tage højde for "dumme" brugere!

Nej men man kan forhindre de fejl man kan forudse.

> Hvis brugeren gør noget med systemet, har det en konsekvens.
> Hvis brugeren gør noget forkert med systemet, har det en kedelig konsekvens.

Men det er da ikke en undskyldning for at forhindre en fejl man nu _har_
forudset.

> Hvis problemet er, at du ALTID skal have en valid værdi, kan du så ikke blot
> "huske" startværdien, og hver gang værdien tømmes/slettes, sættes den
> tilbage til startværdien. Det værste der kan ske er, at brugeren skal
> indtaste den nye værdien igen...

I det konkrete tilfælde drejer det sig om bankkontonummer som skal
indsættes i en database. Bankkontonummeret er unikt for hver konto og
derfor kan jeg ikke indsætte en startværdi.


--
/Lars

HTML software: <http://go.to/HTMLEasyColors>
Brug venligst Re: og ikke Sv: ved svar, da beskeder
der begynder med Sv: bliver slettet fra mange servere

Tomas Christiansen (23-04-2001)
Kommentar
Fra : Tomas Christiansen


Dato : 23-04-01 20:25

Lars Hoffmann skrev:
> Nej men man kan forhindre de fejl man kan forudse.

Ja, men er det ikke det du gør ved at forhindre, at man kan paste bogstaver
ind i feltet?
At man så kan slette hele feltets indhold ved at paste flere tegn ind, end
der kan være i feltet - er det så stort et problem?

> Men det er da ikke en undskyldning for at forhindre en fejl man nu _har_
> forudset.

Jeg er for så vidt enig, men at lave et 100% idiotsikkert systemet er en
meget stort opgave! Et 95% sikkert system kan derimod være en helt
overkommelig opgave.

> I det konkrete tilfælde drejer det sig om bankkontonummer som skal
> indsættes i en database. Bankkontonummeret er unikt for hver konto og
> derfor kan jeg ikke indsætte en startværdi.

Nej, det kan jeg godt se (ku' du ikke indsætte mit kontonummer halvdelen af
gangene - bare dér hvor der overføres penge TIL...)

Lader du feltet stå tomt fra starten?

Noget andet, som jeg kom til at tænke på var, om ikke det måske i
virkeligheden var nemmere at lave din egen kontrol med en almindelig
tekstbox, og gøre brug af f.eks. noget i retning af:

If Text1.Text Like "####-######/##.#" Then

-------
Tomas



Lars Hoffmann (23-04-2001)
Kommentar
Fra : Lars Hoffmann


Dato : 23-04-01 20:44

Tomas Christiansen wrote:

> Lader du feltet stå tomt fra starten?

Jeps, men med focus i feltet.

> Noget andet, som jeg kom til at tænke på var, om ikke det måske i
> virkeligheden var nemmere at lave din egen kontrol med en almindelig
> tekstbox, og gøre brug af f.eks. noget i retning af:
>
> If Text1.Text Like "####-######/##.#" Then

Du har fuldstændig ret. Det forbavser mig blot at der er så stor en
mangel ved MaskEditBox. Det betyder jo at den er totalt ubrugelig til
det formål den oprindelig var bestemt for.

Fik lige en idé:
Når der sættes focus i mask edit boxen, bliver det der nu måtte være i
udklipsholderen gemt i en midlertidig tekststreng og indholdet af
udklipsholderen bliver slettet. Når maskeditBoxen så kører eventet
LostFocus, bliver det der er i tekststrengen kopieret tilbage.


--
/Lars

HTML software: <http://go.to/HTMLEasyColors>
Brug venligst Re: og ikke Sv: ved svar, da beskeder
der begynder med Sv: bliver slettet fra mange servere

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste