| |
|
|
 Thomas Freier | Im Moment seh Je l' forêt avant lauter Bäumen pas et une Solution, si avec qui souris un Item zum Montrer gewählt wurde, anschließend de cette Pos. avec qui Pfeiltaste plus pour aller. Lieg's am Subproc? Mini-Beispiel:
' {$ Cleq}
$H Windows.ph
$H Messages.ph
$H commctrl.ph
Déclarer text$,Font&,Navi&
Déclarer hGrid&
Déclarer x&,x%
DEF $DRAGLISTMSGSTRING "commctrl_DragListMsg"
DEF &DL_BEGINDRAG 1157
DEF &DL_DRAGGING 1158
DEF &DL_DROPPED 1159
DEF &DL_MOVECURSOR 3
DEF &DL_COPYCURSOR 2
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Struct LVHitTestInfo = X&,Y&,flags&,Item&,SubItem&
Déclarer LVHTI#,l%,L.SubItem$,T_Tip&
Faible LVHTI#,LVHitTestInfo
Proc LV_HitTest
Paramètres LV&,X%,Y%
~GetCursorPos(LVHTI#)
~ScreenToClient(LV&,LVHTI#)
SendMessage(LV&,~LVM_SUBITEMHITTEST,0,LVHTI#)
Retour LVHTI#.SubItem&
ENDPROC
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
proc LvDeSelect'deselectieren
parameters Lv&,Item&
Déclarer s#
dim s#,1024
long s#,12=0
long s#,16=~LVIS_SELECTED | ~LVIS_FOCUSED
sendmessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)
dispose s#
endproc
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
proc LvSelect'selectieren
parameters Lv&,Item&
Déclarer s#
dim s#,1024
long s#,12=$2
long s#,16=~LVIS_SELECTED | ~LVIS_FOCUSED
sendmessage(Lv&,~LVM_SETITEMSTATE,Item&,s#)
sendmessage(lv&,~LVM_SETHOTITEM ,item&,0)
sendmessage(lv&,~LVM_ENSUREVISIBLE ,Item&,0)
dispose s#
endproc
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
Struct POINT = X&,Y&
Struct DRAGLISTINFO = uNotification&,hWnd&,ptCursor!POINT
Var FirstItem& = 0
Var LastItem& = 0
Var MoveString$ = »
Var MoveCursor& = ~LoadCursor(~GetModuleHandle("shell32.dll"),1003)
'oui c'est ca cet spezielle annonce muss registiert volonté
'avec cela cela la fenêtre qui Drag&Drop Operationen verarbeiten peux.
Var DragMSG& = ~RegisterWindowMessage("commctrl_DragListMsg")
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SET("TRUECOLOR",1)
CLS RGB(255,255,255)
Font&=Créer("Font","MS Sans Serif",16,0,0,0,0)
SETDIALOGFONT Font&
Windowstyle 538
Navi&=Créer("Window",%hwnd,»,(%maxx-160),2,154,670)
Text$ = "Blätter;0;140"
hGrid& = Créer("GridBox", Navi&, text$, 0, 8, 8, 130, 356)
'qui Listbox pour Drag&Drop vobereiten
Externe("comctl32.dll","MakeDragList",hGrid&)
clearlist
AddStrings "Item 1"
AddStrings "Item 2"
AddStrings "Item 3"
AddStrings "Item 4"
AddStrings "Item 5"
AddStrings "Item 6"
AddStrings "Item 7"
AddStrings "Item 8"
MoveListToHandle(hGrid&)
Sélectionnez String(hGrid&,-1,GetString$(hGrid&,0))
LVSelect hGrid&,0
SEITE_ZEIGEN 0
@Set("Fastmode", 1)
setfocus(Navi&)
SubClass navi&,1
AddHotKey 2020, 37, 0
AddHotKey 2022, 39, 0
AddHotKey 2021, 38, 0
AddHotKey 2023, 40, 0
tandis que 1
WaitInput 1
Cas %clé=2:BREAK
Si (%menuitem=2020) OU (%menuitem=2021)'linke Pfeiltaste
Si GetCount(hGrid&)>0
x%=GetCurSel(hGrid&)
dec x%
cas x%<0: x%=(GetCount(hGrid&)-1)
Sélectionnez String(hGrid&,-1,GetString$(hGrid&,x%))
x%=GetCurSel(hGrid&)
SEITE_ZEIGEN x%
endIf'
setfocus(navi&)
ElseIf (%menuitem=2022) OU (%menuitem=2023)'rechte Pfeiltaste
Si GetCount(hGrid&)>0
x%=GetCurSel(hGrid&)
inc x%
Sélectionnez String(hGrid&,-1,GetString$(hGrid&,x%))
x%=GetCurSel(hGrid&)
SEITE_ZEIGEN x%
Endif
setfocus(navi&)
EndIf
Endwhile
SubClass navi&,0
@Set("Fastmode", 0)
destroywindow(navi&)
DeleteObject Font&
destroywindow(%hwnd)
Fin
Proc SEITE_ZEIGEN
Paramètres x%
var x1%= val(right$(GetString$(hGrid&,x%),1))
cas x1%=1: MCLS 600, 800 ,RGB(255,255,100)
cas x1%=2: MCLS 600, 800 ,RGB(255,255,0)
cas x1%=3: MCLS 600, 800 ,RGB(255,0,100)
cas x1%=4: MCLS 600, 800 ,RGB(255,0,255)
cas x1%=5: MCLS 600, 800 ,RGB(255,100,100)
cas x1%=6: MCLS 600, 800 ,RGB(100,255,0)
cas x1%=7: MCLS 600, 800 ,RGB(0,255,100)
cas x1%=8: MCLS 600, 800 ,RGB(255,0,0)
MCopyBmp 0,0 - 800,600 > 0,0;0
ENDPROC
SubClassProc
Si SubClassMessage(navi&,DragMSG&)
var Info# = New(DRAGLISTINFO)
l% = LV_HitTest(hgrid&,%mousex,%mousey)
L.SubItem$=GetText $(hGrid&,LVHTI#.Item&,LVHTI#.SubItem&)
Info# = &slParam
Si Info#.uNotification& = &DL_BEGINDRAG'Drag&Drop beginnt et Item merken
FirstItem& = LVHTI#.Item&
MoveString$ = GetText $(hGrid&,LVHTI#.Item&,LVHTI#.SubItem&)'Item-Text merken
T_Tip&=Créer("Tooltip",%hwnd,hGrid&,MoveString$)
Set("WinProc", 0)
~SetCursor(MoveCursor&)
Retour &DL_COPYCURSOR
ElseIf Info#.uNotification& = &DL_DRAGGING'Drag&Drop ist im Gange
LastItem& = LVHTI#.Item&
LvSelect hGrid&,LastItem&
Set("WinProc", 0)
'Item markieren
SendMessage(hGrid&,~Lb_SETCURSEL,LastItem&,0)
~SetCursor(MoveCursor&)
ElseIf Info#.uNotification& = &DL_DROPPED'Drag&Drop ist finissez
LastItem& = LVHTI#.Item&
Si Lastitem& <> -1
IF Lastitem& <> Firstitem&
'cela erste gemerkte Item effacer
DeleteString(hGrid&,FirstItem&)
'et à qui Position des letzten gemerkten Items insérer
InsertString(hGrid&,LastItem&,MoveString$)
Set("WinProc", 0)
LvSelect hGrid&,LastItem&
EndIf
DestroyWindow(T_Tip&)
SEITE_ZEIGEN LastItem&
EndIf
EndIf
EndIf
ENDPROC
|
|
|
| |
|
|
|
 | chez mir funktioniert cela Programme "überhauptnicht" (XProfan11 32Bit XP SP2) -
je bekomme aussi im Kompilat garkeine GridBox zur Anzeige mais seulement un gelbes hWnd et per Interpreter erhalte je tout de suite une Absturz.
Absturz im Interpreter chez
Übergibst à qui API une Def-Konstante - ist imho pas absolument im Sinne des Erfinders - erwartet wird une Speicheradresse et ne DEF-Konstante pourrait là doch trop komplex son - besser qui Adresse eines einfachen Cordes bzw. Mémoire transfert. |
|
|
| |
|
|
|
 | si je schreibe funktionierts et je peux dans Interpreter et Kompilat avec souris et clavier choisir - arrêt simple qui Adresse eines Cordes transfert |
|
|
| |
|
|
|
 Thomas Freier | OK. était Andreas Code, qui avec XP12 ne...aucune Problem bereitete. mais je cherche encore, si avec qui souris z.B.: Item5 markiert wurde et je anschließend qui flèche-bouton runter benutze aussi Item6 markiert et angezeigt wird. Meist erfolgt qui Sprung à den Anfang. Ist mir aussi déjà chez anderer Software aufgefallen, dass si quelque chose avec qui souris dans qui Tabelle gewählt wird beim Drücken qui bouton Bild runter, un Sprung trop la ligne 1 erfolgt. |
|
|
| |
|
|
|
 | Tricolore pas getestet mais teste doch la fois obs hilft si Du pour dem D&D z.B. avec Sélectionnez String entsprechende la ligne markierst ou bien gar la fois une autre et wieder zurück. |
|
|
| |
|
|
|
 Uwe ''Pascal'' Niemeier | Hi Thomas!
la fois 'ne entier dumme Frage: laisser sich qui DragListBox-Messages überhaupt sur ListViews (GridBoxen) anwenden? le son MSDN sommes qui doch pour normale Listboxen vorgesehen? Eigendlich sollte on doch per SubClassing qui LVN_BEGINDRAG-Message des ListViews auswerten?
SeeYou Pascal |
|
|
| |
|
|
|
 Thomas Freier | hé Pascal, qui Antwort doit je dir schuldig rester, là je bisher seulement avec Franks ListView.dll gearbeitet habe et dans diesem le cas es sans faire voulais. un Beispiel de Andreas führte zum gewünschten Ergebnis. seulement bekomme je maintenant Probleme chez qui "Tastensteuerung". mais tu es oui LV Spezi et vois peut-être une Solution. |
|
|
| |
|
|
|
 Uwe ''Pascal'' Niemeier | Hi Thomas!
Standartmäßig peux on oui dans chacun Art de liste avec qui clavier navigieren, si cela betreffende Contrôle den Concentrer hat. tout autor wäre qui einfachste Solution, relevante Tastendrücke im Hauptfenster per SetFocus(Liste&) & SendKey(Liste&,Key%) à qui liste weiterzuleiten. Allerdings erkennt XProfan dabei möglicherweise pas, cela qui sélection geändert wurde, si le liste erstmal den Concentrer hat et behält (WaitInput wird pas durchbrochen). alors entweder pour SendKey den Concentrer wieder auf's Hauptfenster poser ou bien quelque chose comme versuchen (hab's avec deinem Code encore pas getestet):
settimer 100
tandis que 1'--------------Beginn Eingabeschleife
waitinput
récente%=getcursel(Liste&)
si récente%<>Alt%
vieux%=récente%
'---Irgendeine réaction sur geänderte sélection
endif
'---Weitere Abfragen pour Bedienungselemente usw.
endif'----------------Ende Eingabeschleife
Eleganter wäre allerdings une entsprechende Ereignis-Auswertung per SubClassing. je werd' là la fois quoi vorbereiten 
HTH Pascal |
|
|
| |
|
|
|
 Thomas Freier | suis déjà gespannt. Einiges J'ai eu naturellement déjà versucht, cette "Schönheitsfehler" trop beheben. Möglich aussi, dass un vorhandenes EDIT chez meinen Lösungen ausbremsend était. je hatte es im Beispiel weg gelassen, et peux es zur Not dans une eigenen Dialog saisir. |
|
|
| |
|
|
|
 Uwe ''Pascal'' Niemeier | Hi Thomas!
Habe la fois un paire Beispiele pour Drag&Drop ( aktuelles XProfan 12 ) zusammengestellt.
Herunterladen externer Télécharger
qui la déviation qui Tasten de Hwnd sur qui jeweilige liste erfolgt dabei toujours pour dem gleichen dessus erwähnten Prinzip per SubClassing, ebenso qui Auswertung qui neuen sélection. Unterschiedlich sommes eigendlich seulement qui optischen Effekte. peut-être hilft es dir plus. PS: Habe mir erlaubt, den Trick avec dem ToolTip trop klauen 
SeeYou Pascal |
|
|
| |
|
|
|
 Thomas Freier | hé Pascal, feine l'affaire, qui du zusammengestellt la hâte. Aufgefallen c'est moi, dass chez Anwahl kleine Reaktionspausen entstehen. eh bien suis je mir encore unsicher, comment je plus verfahre.
un kleines Beispiel beigepackt. seulement, si aussi encore avec einem kleinen faute, qui Ansicht-gazette-1m.exe hat Endstand. Pour dem Start s'il te plaît seulement einmal qui Pfade le PNG- et ODT-Fichiers anlegen. qui hat, peux ensuite zum Testen/Travailler, une OpenOffice.exe verknüpfen et qui Dossier ensuite aussi comme PDF Sauver (Pfad ensuite einrichten). qui zur Anzeige nécessaire PNG-Fichiers peut sur IrfanView, si il PDFs ouvrir peux, ou bien une PDF-Reader (z.B.: Portable PDFXCview.exe) erstellt volonté. cela Ganze mag compliqué klingen, mais malheureusement gelang es mir encore pas une beliebige halbe PDF-page anzuzeigen. |
|
|
| |
|
|
|
 Dieter Zornow | alors avec qui Setcurselversion habe je sous Win7 toujours une Absturz. qui Drop-Cursor erscheint ensuite peux je klicken ou bien quoi que + subj., es passiert rien plus. peux ensuite seulement encore avec dem Taskmanager finissons. Ist mais déjà so avec dem Originalcode de Pascal. |
|
|
| Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 15.12.2010 ▲ |
|
|
|