19. januar 2000 - 16:42Der er
2 kommentarer og 1 løsning
Problemer med genvejstaster i VB6
I et projekt har jeg brugt et listview component til at vise en imagelist (med ikoner).
I den forbindelse vil jeg gerne ved redigering af navnet på et ikon kunne bruge delete-tasten til at slette tekst, men da jeg i min menueditor (under Tools\Menu Editor) har brugt delete som en genvejstast til at slette et ikon, så går det galt.
Hvis jeg vil ændre navnet og trykker delete så sletter den ikonet i stedet for bare at slette et bogstav i navnet :-(
Hvad med at bruge standard CTRL-X for cut, CTRL+C for copy og CTRL+V for paste ?
En anden mulighed er at grappe tastetryk for imagelisten og i det tilfælde tasten er lig VK_Delete, så styr hvad der slettes programmæssigt. Du kan så stadig beholde delete som genvejstast til sletning af ikoner, når fokus er uden for imagelisten.
Eller brug Shift+Delete for image (menuen), og Delete for navnet
Der er mange muligheder, men ikke at programmet selv skal kunne regne ud at når du trykker på delete skal det nogen gange slette et image og andre gange, når du har lyst, slette navnet. Du er nødt til at styre det i programmet.
Ved dit program hvornår du er ved at rette navnet og hvornår du ikke er ?
Hvis ja, så kan du midlertidigt fjerne delete som genvejstast i menuen (programmæssigt) når du starter på at rette navnet, og genindsætte den når du er færdig med at rette navnet.
Det var ikke den løsning jeg lige søgte - i windows (på skrivebordet etc.) fungerer det jo fint! Hvis man har markeret et ikon og trykker delete, så sletter man ikonet, men hvis man er ved at rette navnet, så sletter man et bogstav.
Det er samme funktionalitet jeg ønsker i programmet, og jeg havde en forhåbning om at der var en simpel måde hvorpå man kunne få den til det, da det jo er meget naturlig at det fungerer på den måde. Dvs. jeg troede egentligt at det var standard at delete sletter der hvor der i øjeblikket er fokus, men det er det åbenbart ikke...
Jeg ved selvfølgeligt ikke hvordan MS har programmeret det i Windows... :-)
"Hvad med at bruge standard CTRL-X for cut, CTRL+C for copy og CTRL+V for paste ?"
Ja, men jeg vil jo ikke hverken klippe, kopiere eller sætte ind - jeg vil slette...
Ok, ok.. CTRL-X er måske ikke lige at slette, men klip virker jo også som en sletning, blot med den forskel at du gemmer det du sletter på klippebordet i stedet for bare at slette det. Men jeg forstår godt hvad du mener.
Med hensyn til funktionalitet som i MS. Du har ret i at det burde virke sådan og det var det der lå bag mit spørgsmål "Ved dit program hvornår du er ved at rette navnet og hvornår du ikke er ?"
Eftersom det er dig i programmet der reagerer på Delete og fjerner ikonen når du trykker på delete er det også dig der skal styre hvad programmet i ewt givet øjeblik foretager sig. Hvis du ved at du er ved at rette et navn skal du netop ikke slette ikonet, men bare lade delete passere igennem keyboard eventhandleren.
Som jeg også skrev kan du midlertidigt i programmet "fjerne" den event der bliver aktiveret når man trykker på delete, når du er i den del af programmet hvor du retter navnet. Dermed virker delete i det tilfælde som den plejer (og skal) og lige inder du forlader rutinen, efter at have rettet navnet, slår du delete-eventen til igen.
Men det kræver jo som sagt at du i dit program ved hvornår der sker hvad.
sjensen
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.