|  |  | 
|  | 
|  | 
|  Matthias
 Arlt
 | |  
 'Es wird nicht der standardmäßige Inplace-Editor der Listview genutzt.
'Dieser würde nur per die erste Spalte zur Verfügung stehen...
'Original-Source Thomas Freier - modifiziert Matthias Arlt
Window 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&=Create("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
    if 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&,"+({END})") 'Cursor ans Ende setzen...
    SendMessage(Edit&,$B1,0,-1)'oder 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
    if SubClassMessage(%hwnd, 78)'WM_NOTIFY
        if (Long(&sLParam,8) = -3)
            Item&=Long(&sLParam,12)
            if (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
while 1
    waitinput
    if (%umessage = 2000)
        Txt$ = GetText$(LV&,&uwparam,&ulparam)
        Spalte&= &ulparam
        Zeile&= &uwparam
        SetSubItemEdit
        while getfocus(Edit&)
            waitinput
            if (%menuitem = 13)
                break
            elseif (%menuitem = 37) | (%menuitem = 38) | (%menuitem = 39) | (%menuitem = 40)
                settext LV&,Zeile&,Spalte&,gettext$(Edit&)
                case (%menuitem = 37) : Spalte& = (Spalte& - 1)
                case (%menuitem = 38) : Zeile& = (Zeile& - 1)
                case (%menuitem = 39) : Spalte& = (Spalte& + 1)
                case (%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 Haken hat die Geschichte, wenn der Scrollbalken ins Spiel kommt - das Edit-Feld bzw. der Cursor lässt sich nicht mitscrollen. 
 z.B.: ein Subitem in der dritten Zeile wird doppelgeklickt -> Edit erscheint; beim hinaufscrollen um eine Zeile sieht man das Erscheinungsbild des Edits in der zweiten und den Cursor darunter in der dritten Zeile. Bei der Eingabe wird in der dritten Zeile unter dem Edit geschrieben (scheinbar) - beim Klick auf ein anderes Subitem wird der Text in das eigentlich richtige Subitem (zweite Zeile) übernommen.
 | 
 | 
|  | 
|  |  | 
|  | 
| 
 
 
 | 
|  | 
|  Matthias
 Arlt
 | | Eigentlich soll das Edit standardmäßig ja garnicht mitscrollen (im Explorer tut es das ja auch nicht...). Ich habs nochmal überarbeitet. Damit sollte nun das gewohnte Verhalten hergestellt sein. 
 Und der Vollständigkeit halber das Ganze noch etwas optimiert und gleich noch mit Weiterschaltung mittels Pfeiltasten...
 
 Ich habe das mal in die Code-Box im Eingangsbeitrag verschoben. Schließlich macht es keinen Sinn, dort den noch nicht fehlerbereinigten Source stehen zu lassen. Das geht nur zu Lasten der Übersichtlichkeit. Siehe also weiter oben...
 
 Saluto Matthias
 | 
 | 
|  | 
|  | | WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 11.01.2017  ▲ | 
 | 
|  | 
| 
 
 
 |