vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
STRG +V abfangen 
Autor: V A T
Datum: 06.12.14 22:52

Hallo,

ich habe ein problem und hoffe ihr könnt mir helfen!

Ich habe ein Textfeld (txt_Eingabe), welches im Laufe meines programmes aktiviert wird, sodass man eine Eingabe machen kann. Währenddessen frage ich mir folgendem Code ab, ob die ENTER-Taste gedrückt wurde (das deaktivier das Textfeld nämlich und startet die Weiterverarbeitung des Inhalts):


Private Sub txt_Eingabe_Keypress(KeyAscii As Integer)  
    If KeyAscii <> 13 Then Exit Sub
    .
    .
    .
 
End Sub
Nun mein Problem: Ich muss verhindern, dass das Textfeld(txt_Eingabe) durch Nutzung der Funktion STRG+V (Copy & PASTE) gefüllt wird - nur das manuelle Eintippen von Zahlen und Buchstaben soll erlaubt sein.

Kann ich irgendwie (analog des Codes für die ENTER-Tast) abfragen, ob STRG+V gedrückt wird und dann z.B. das Textfeld direkt wieder leeren (oder im besten Fall soll gar nix passieren). Also auf jeden Fall soll der Inhalt des Zwischenspeichers später nicht im textfeld drin stehen.

Für Eure Unterstützung danke ich vorab!

Gruß

V A T

Vielen Dank an alle in diesem Forum, welche mir Ihre Zeit schenken und sich mit meinen Problemen befassen! Ich weiß das ernsthaft zu schätzen und danke allen, die sich mit dieser Frage befassen herzlich!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: STRG +V abfangen 
Autor: ModeratorDieter (Moderator)
Datum: 08.12.14 11:34

Das lässt sich bspw. so umsetzen:
Private Sub txt_Eingabe_KeyDown(KeyCode As Integer, Shift As Integer)
  If (KeyCode = vbKeyV And Shift = 2) Or (KeyCode = vbKeyInsert And Shift = 1) _
    Then
    ' Strg+V und Shift+Einfg unterbinden
    KeyCode = 0
    Clipboard.SetText ""
  End If
End Sub

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: STRG +V abfangen 
Autor: V A T
Datum: 09.12.14 21:13

Hallo Dieter,

vielen Dank für Deine Hilfe!!!

Über Deinen Code hab ich gemerkt, dass es ja noch viel einfach geht als ich dachte.
Ich wusste bisher nicht, dass ich die Zwischenablage verändern kann. Ich leere sie jetzt einfach immer bei Aktivierung des Textfeldes. Dann muss ich später auch nicht STRG+V abfangen, weil die Zwischenablage ja eh leer ist.

Danke ich habe was von Dir gelernt!!!

Gruß

V A T

Vielen Dank an alle in diesem Forum, welche mir Ihre Zeit schenken und sich mit meinen Problemen befassen! Ich weiß das ernsthaft zu schätzen und danke allen, die sich mit dieser Frage befassen herzlich!!!

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: STRG +V abfangen 
Autor: Franki
Datum: 11.12.14 08:35

Hallo,

die Zwischenablage grundsätzlich bei Aktivierung des Textfeldes zu leeren halte ich für keine gute Idee.

Denn der User kann bewußt Daten in der Zwischenablage haben (Aus anderen Programmen / für andere Programme) ohne sie überhaupt in dein Textfeld einfügen zu wollen.

Ich würde nur auf den gezielten Eifügeversuch reagieren und nicht schon bei Aktivierung des Textfeldes wo der User auch tippen kann ihm seine Zwischenablage zerschiessen.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: STRG +V abfangen 
Autor: effeff
Datum: 11.12.14 12:09

Genau... Und zusätzlich muss man eben darauf achten, auch die rechte Maustaste abzufangen, damit niemand aus deren entstehenden Kontextmenü "Einfügen" auswählt.

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: STRG +V abfangen 
Autor: Franki
Datum: 12.12.14 07:38

Hallo,

ja auch das, aber auch hier müsste man nur diesen Menüpunkt im sonst durchaus sinnvollen Kontextmenü abfangen und nicht gleich das ganze Kontextmenü.

Wenn man von der Voraussetzung ausgehen kann, dass der User mehr als ein Zeichen aus der Zwischenablage einfügen möchte und der eingefügte Inhalt länger ist als der vorherige kann man auch folgenden Gedankengang umsetzten.

Es wird ja das Change Event ausgelöst wenn sich der Inhalt der Textbox ändert.
Ist der Inhalt um genau ein Zeichen länger wurde (höchstwahrscheinlich) getippt, ist der neue Inhalt größer als ein Zeichen wurde auf welche Art auch immer eingefügt.

Beispiel ohne Fehlerprüfung usw.

Private Sub Form_Load()
    Text1.Tag = Len(Text1.Text)
End Sub
 
Private Sub Text1_Change()
    If Len(Text1.Text) > CInt(Text1.Tag) Then
        If Len(Text1.Text) - CInt(Text1.Tag) > 1 Then
            MsgBox "Es wurde eingefügt, hier entsprechend reagieren"
            Text1.Text = ""
        Else
            MsgBox "Es wurde getippt"
            Text1.Tag = Len(Text1.Text)
        End If
    Else
        Text1.Tag = Len(Text1.Text)
    End If
End Sub
Wenn man das als gegeben hinnehmen kann erübrigt sich die Abfrage auf Tastenkombinationen, Kontextmenü usw.

Ich habe das vor Jahren auf diese Art gelöst als es darum ging Barcodes von einem Barcodescanner zu unterbinden wenn der Cursor im falschen Feld stand. Da habe ich die falsche Textbox aber nicht geändert sondern entsprechend der Anwendung anders reagiert.

Vielleicht ist diese Methode für V A T ja auch eine Alternative.

Gruß
Frank








Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: STRG +V abfangen 
Autor: effeff
Datum: 12.12.14 10:25

Aber was machst Du, wenn nur ein Zeichen aus der Zwischenablage eingefügt wurde?

EALA FREYA FRESENA

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: STRG +V abfangen 
Autor: VAT
Datum: 12.12.14 19:25

Hallo Frank,

Danke für deine ergänzenden Gedankengänge. Ich habe jetzt drei Möglichkeiten, die ich sinnvoll einsetzen kann. Deine Idee finde ich spannend. Das ist - auch für einen Amateur 😊 wie mich - verständlich und wuerde in meinem Kontext den Sinn voll erfüllen.

Da es mich aber auch nicht stört, dass die Zeischenablage komplett gelöscht wird (ich verstehe, dass das in anderem Kontext problematisch sein kann, bei mir nicht), ist das die schnellste Loesung. Aber wie gesagt, dein "Trick" hat was!

Jedenfalls danke an alle, die mir wieder mal geholfen haben!

Gruß

V A T
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: STRG +V abfangen 
Autor: Franki
Datum: 13.12.14 08:11

Hallo,

gar nichts, deswegen hatte ich ja geschrieben:

Zitat:

Wenn man von der Voraussetzung ausgehen kann, dass der User mehr als ein Zeichen aus der Zwischenablage einfügen möchte


Wenn man natürlich auch unterbinden möchte/muss, dass nur ein Zeichen eingefügt werden kann taugt mein Vorschlag nichts. Aber kommt so was in der Praxis bzw. im konkreten Fall vor? Bei einem normalen Zeichen ist ja tippen sowieso schneller als einfügen.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: STRG +V abfangen 
Autor: Franki
Datum: 13.12.14 08:18

Hallo,

Zitat:


Da es mich aber auch nicht stört, dass die Zeischenablage
komplett gelöscht wird (ich verstehe, dass das in anderem
Kontext problematisch sein kann, bei mir nicht)


Bist du der alleinige User deines Programms bzw. läuft es nur auf deinem PC?

Wenn ja, kannst du sagen, dass es dich nicht stört, aber dann stellt sich die Frage wieso du das überhaupt unterbinden möchtest, du selbst könntest ja einfach tippen anstatt einzufügen.

Wenn nein hast du keinerlei Kenntnisse oder gar Einfluss darauf wofür die User die Zwischenablage verwenden, es stört zwar dich nicht, aber mit Sicherheit die User. Und irgend einen Grund hat es ja, dass du diese Frage überhaupt stellst, es scheint schon so zu sein, dass der Unterschied woher die Daten ins Textfeld kommen für dein Programm wichtig ist.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: STRG +V abfangen 
Autor: VAT
Datum: 14.12.14 20:43

Hallo Frank,

ich denke ich kann das schon beurteilen...

der Rechner wird von meinem Sohn zum Lernen verwendet und ich hab ihm einen Vokabeltrainer geschrieben. Und die Vokabeln soll man auswendig können und nicht wie das pfiffige Kerlchen auch mal per copy und past einfügen.

da nur er den Rechner benutzt und auch nur wenn ich ihm das Ding anmache, ist es in diesem einem von mir gut beurteilenden fall unerheblich, dass die Zwischenablage gelöscht wird. wie gesagt, ich kann gut nachvollziehen, dass es in einem anderen Kontext nicht egal wäre.

Also, nochmals danke für eure Hilfe! ich habe - wie schon gesagt - viel gelernt. Einmal programmiertechnisch und auch im Bezug auf die Risiken und Nebenwirkungen im Thema zwischenablage.

Danke!!!

V A T
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: STRG +V abfangen 
Autor: Franki
Datum: 14.12.14 22:54

Hallo,

da bist du ja sozusagen ein Leidensgenosse von mir. Ich habe auch mal einen Vokabeltrainer im familiären Bereich programmiert, der wird sogar heute noch von einer Schule verwendet.

Damals war die Herausforderung nicht die Zwischenablage, sondern dass die Nutzung des Vokabeltrainers Priorität hat und erst danach mit dem Rechner z.B. andere Anwendungen (WKW/Facebook usw.) bzw. das Web genutzt werden kann.

Aber das Thema Vokabeltrainer an sich interessiert mich nach wie vor, es ist jetzt hier im Forum OT, wenn du magst kontaktiere mich mal per E-Mail.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel