Mit
x&=GetSelectedDbClk
kann ich per Doppelklick in einem Explorer-Tool ein Verzeichnis öffnen oder eine Datei über eine Verknüpfung anzeigen.
Wie kann ich die LISTVIEW.DLL "überreden", das auch mit der ENTER-Taste zu machen ?
Enter und Doppelklick
-
horst_ -
4. Oktober 2009 um 19:55
-
-
-
Sollte mit UserMessage $1400 einfach zu realisieren sein:
Code
Alles anzeigenUsermessages $1400,$1401,$1402,$1403,$1404 While 1 WaitInput Case %key=2:BREAK If %umessage=$1400 Print "Taste mit Scancode "+Str$(&ulParam)+" gedrückt in Listview "+Str$ (&uwParam) ElseIf %umessage=$1401 Print "Linksklick auf Spaltenknopf in Spalte "+Str$(&ulParam)+". Listview "+Str$ (&uwParam) ElseIf %umessage=$1404 Print "Rechtsklick auf Spaltenknopf in Spalte "+Str$(&ulParam)+". Listview "+Str$(&uwParam) ElseIf %umessage=$1402 Print "Spaltenbreite wird verändert in Spalte "+Str$(&ulParam)+". Listview "+Str$(&uwParam) ElseIf %umessage=$1403 Print "Spaltenbreite wurde verändert in Spalte "+Str$(&ulParam)+". Listview "+Str$(&uwParam) EndIf EndWhile Usermessages 0
-
Frank
Das ist nicht das Problem.
Die ENTER-Taste kann ich ganz einfach mit ADDHOTKEY 250,13,0 aufrufen.
CASE MenuItem(250):Hier soll die ENTER-Taste das machen, was du in deinem Explorer-Demo so schön mit Doppelklick zeigst:Zitat
x&=GetSelectedDbClk(itemtexts#,addr(spalte&)) 'Letzten Doppelklick auswerten...IF x& 'Hat einer stattgefunden ? Ja!
GetTabOffsets(itemtexts#,nurso#) 'Alle Offsets auslesen und alle Trennzeichen (9) gegen Null austauschen
text$=String$(itemtexts#,Long(nurso#,0)+1) 'Itemtext von Spalte 0 ermitteln (erstes Byte hierbei überspringen)
z&=Byte(itemtexts#,Long(nurso#,0)) 'Erstes Byte vom Itemtext ermitteln, dieser Wert kann sein:
'32 = Directory
'160 = Datei
If spalte&=LINKS_VIEW&
If z&=32 'Ist ein Directory
chdir path1$
GetFullPathName(addr(text$),512,itemtexts#,nurso#) 'Kompletten Pfad ermitteln
text$=String$(itemtexts#,0)
LoadDir1 text$
SELECTLINE(LINKS_VIEW&,0,1)
Else 'Ist eine Datei
chdir path1$
GetFullPathName(addr(text$),512,itemtexts#,nurso#)
ENDUNG_LESEN text$ 'DAS IST DER STARTBEFEHL
'usw....usw...Habe schon mit allen Tricks versucht. Bis jetzt bin ich soweit, daß der Windows-Explorer sich öffnet. Ich will aber, daß mit der Enter-Taste das Gleiche gemacht werden kann wie mit dem Doppelklick: Also Cursorbalken auf einen Eintrag setzen und ENTER - Ist es ein Ordner, wird der geöffnet. Ist es eine Datei, wird sie von dem mit ihr verknüpften Programm angezeigt.
-
Da wirst du itemtexts# wohl manuell füllen müssen, wenn ich dein Problem richtig verstanden habe.
-
Zitat von Frabbing;734740
Da wirst du itemtexts# wohl manuell füllen müssen, wenn ich dein Problem richtig verstanden habe.
Du hast das richtig verstanden und ich habe mich wieder daran erinnert, daß ich ja ein "XProfan-Purist" bin
So sieht meine Lösung aus und sie funktioniert perfekt !ZitatPROC ENTER_TASTE
PARAMETERS status$
IF status$="LINKS"
platzL&=GETCURSEL(LINKS_VIEW&)
text$=GETSTRING$(LINKS_VIEW&,platzL&)
text$ = SubStr$(text$, 1, "|")
IF LEFT$(text$,1)=CHR$(160)
I%=LEN(text$)
text$=RIGHT$(text$,(I%-1))
ENDUNG_LESEN text$ 'hier wird die Datei mit der Verknüpfung angezeigt
ELSEIF LEFT$(text$,1)=CHR$(32)
I%=LEN(text$)
text$=RIGHT$(text$,(I%-1))
text$=path1$+text$
CHDIR text$
LOADDIR1 text$ 'hier wird der Ordner (Verz.) geöffnet
ENDIF
ENDIF
IF status$="RECHTS"
platzR&=GETCURSEL(RECHTS_VIEW&)
text$=GETSTRING$(RECHTS_VIEW&,platzR&)
text$ = SubStr$(text$, 1, "|")
IF LEFT$(text$,1)=CHR$(160)
I%=LEN(text$)
text$=RIGHT$(text$,(I%-1))
ENDUNG_LESEN text$
ELSEIF LEFT$(text$,1)=CHR$(32)
I%=LEN(text$)
text$=RIGHT$(text$,(I%-1))
text$=path2$+text$
CHDIR text$
LOADDIR2 text$
ENDIF
ENDIF
ENDPROC -
Zitat
Du hast das richtig verstanden und ich habe mich wieder daran erinnert, daß ich ja ein "XProfan-Purist" bin
So sieht meine Lösung aus und sie funktioniert perfekt !Klasse!
Vielleicht kann ich auf Dauer mal eine vereinfachte Funktion dazu machen. Im Moment hab ich aber nicht die Zeit und Ruhe.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!