| |
|
|
Matthias Arlt |
'Es wird pas qui standardmäßige Inplace-Editor qui Listview genutzt.
'cette serait seulement pour la première Spalte zur Disposition stehen...
'Original-Source Thomas Freier - modifiziert Matthias Arlt
Fenêtre 0,0 - 600,410
declare LV&,Spalte&,Zeile&,Item&,Edit&,Font&,Txt$
declare rect#,cellpos_x%,cellpos_y%,cellwidth%,cellheight%
Font&=CreateFont("Verdana",16,0,0,0,0)
SetDialogFont Font&
LV&=Créer("GridBox",%hwnd,"Spalte 1;1;60;Spalte 2;1;120;Spalte 3;1;80;Spalte 4;1;80;Spalte 5;1;80",0,10,10,460,250)
SetFont LV&,Font&
whileloop 0,20
Addstring(LV&,str$(&loop) + "|0|0|0|0")
Wend
Edit& = create("Edit",LV&,»,0,0,0,0)
setfont Edit&,Font&
proc SetSubItemEdit
dim rect#,16
SendMessage(LV&,$100E,Zeile&,rect#)'LVM_GETITEMRECT
cellpos_x% = long(rect#,0)
cellpos_y% = long(rect#,4) - 1
cellwidth% = sendmessage(LV&,$101D,Spalte&,0)
cellheight% = (long(rect#,12) - long(rect#,4)) + 1
si Spalte& > 0
whileloop 0,(Spalte& - 1),1
cellpos_x% = cellpos_x% + sendmessage(LV&,$101D,&loop,0)
Wend
endif
dispose rect#
settext Edit&, Txt$
setwindowpos Edit& = cellpos_x%,cellpos_y% - cellwidth%,cellheight%
setfocus(Edit&)
'SendMessage(Edit&,"+({FIN})") 'Cursor à l' Ende mettons...
SendMessage(Edit&,$B1,0,-1)'ou bien Alles markieren... (Explorer-konform)
endproc
AddHotKey 13, 13, 0
AddHotKey 37, 37, 0
AddHotKey 38, 38, 0
AddHotKey 39, 39, 0
AddHotKey 40, 40, 0
SubClass %hwnd, 1
usermessages 2000
SubClassProc
si SubClassMessage(%hwnd, 78)'WM_NOTIFY
si (Long(&sLParam,8) = -3)
Item&=Long(&sLParam,12)
si (Item& <> -1)
SendMessage(%hwnd,2000,Item&,Long(&sLParam,16))
endif
elseif (Long(&sLParam,8) = -180)'LVN_BEGINSCROLL
settext LV&,Zeile&,Spalte&,gettext$(Edit&)
setwindowpos Edit& = 0,0-0,0
endif
endif
endproc
tandis que 1
waitinput
si (%umessage = 2000)
Txt$ = GetText $(LV&,&uwparam,&ulparam)
Spalte&= &ulparam
Zeile&= &uwparam
SetSubItemEdit
tandis que getfocus(Edit&)
waitinput
si (%menuitem = 13)
pause
elseif (%menuitem = 37) | (%menuitem = 38) | (%menuitem = 39) | (%menuitem = 40)
settext LV&,Zeile&,Spalte&,gettext$(Edit&)
cas (%menuitem = 37) : Spalte& = (Spalte& - 1)
cas (%menuitem = 38) : Zeile& = (Zeile& - 1)
cas (%menuitem = 39) : Spalte& = (Spalte& + 1)
cas (%menuitem = 40) : Zeile& = (Zeile& + 1)
Txt$ = GetText $(LV&,Zeile&,Spalte&)
SetSubItemEdit
endif
Wend
settext LV&,Zeile&,Spalte&,gettext$(Edit&)
setwindowpos Edit& = 0,0-0,0
setfocus(%hwnd)
endif
Wend
usermessages 0
SubClass %hwnd, 0
end
|
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 02.11.2016 ▲ |
|
|
|
|
Ernst | Einen le crochet hat qui Geschichte, si qui Scrollbalken ins Spiel venez - cela Éditer-champ bzw. qui Cursor peut sich pas mitscrollen.
z.B.: un Subitem dans qui dritten la ligne wird doppelgeklickt -> Éditer erscheint; beim hinaufscrollen um une la ligne sieht on cela Erscheinungsbild des Edits dans qui zweiten et den Cursor au-dessous dans qui dritten la ligne. chez qui Eingabe wird dans qui dritten la ligne sous dem Éditer geschrieben (scheinbar) - beim Klick sur un d'autre Subitem wird qui Text dans cela eigentlich richtige Subitem (zweite la ligne) übernommen. |
|
|
| |
|
|
|
Matthias Arlt | Eigentlich soll cela Éditer standardmäßig oui garnicht mitscrollen (im Explorer tut es cela oui aussi pas...). je habs nochmal révisée. avec cela sollte eh bien cela gewohnte Verhalten hergestellt son.
et qui Vollständigkeit halber cela Ganze et avec ca optimiert et juste encore avec Weiterschaltung mittels Pfeiltasten...
j'ai cela la fois dans qui Code-Box im Eingangsbeitrag déménagé. Schließlich pouvoir es keinen Sinn, là den encore pas fehlerbereinigten Source stehen trop laisser. cela allez seulement trop Lasten qui Übersichtlichkeit. Siehe alors plus dessus...
Salut Matthias |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 11.01.2017 ▲ |
|
|
|