Español
Foro

Listbox/Gridbox Einträge Editar

 

Christof
Neuß
¡Hola,

como Front-End para Datenbankanwendungen eignet se eben oft una Browse-Ventana. Dabei puede el Daten direkt en uno Art Tabla (z.B. Gridbox) adecuado y bearbeitet voluntad.

El Dialoge "Listbox" y "Gridbox" de XProfan wären eigentlich prädestiniert, dieses a leisten. Leider hay no (einfache) Möglichkeit, el Einträge direkt ser editado.

Yo weiß, dass lo z.B. con el Listview.dll va. Damit Yo auch ya experimentiert. Desde que aber möglichst wenige/no externo DLL nutzen möchte, wäre una solución con "Bordmitteln" genial.

Sombrero eigentlich veces alguien esta Ansatz hier weiterverfolgt?
Source wurde al 15.07.2007 de el MMJ-Quellcodesammlung (Dietmar Horn) en el Babyklappe en XProfan.Com abgelegt:
Listboxeinträge Editar
Lauffähig de Profano-Versión 5.0
********************** HINWEISE ********************************
CODE ERZEUGT MIT ROKOS OBJECT CREATOR 2.8c
DATUM  31.01.2003    en  22:33 Uhr
VERWENDETE PROFANVERSION IST 7.0 ODER HÖHER
NUR FÜR UNSORTIERTE LISTBOX GÜLTIG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Def GetSysColor(1) !USER32,GetSysColor
SETTRUECOLOR 1
DECLARE ENDE%,editfeld%,top%
DECLARE LISTBOX1%,font%,font2%,Texto%
DECLARE BUTTON1%,listindex%,gtext$
font%=@CREATE(FONT,MS Sans Serif,13,0,0,0,0)
WINDOWSTYLE 63
WINDOWTITLE EDITLISTBOX (c) by Rolf Koch 2003
WINDOW 214,134-429,218
CLS GETSYSCOLOR(15)
USEFONT MS Sans Serif,8,0,0,0,0
SETDIALOGFONT 1
LISTBOX1% = CREATE(LISTBOX,%HWND,LISTBOX1,0012,0013,0401,0107)
TEXT% = CREATE(TEXT,%HWND,Bitte Eintrag anklicken y Editar - Mauszeiger muss während el Eingabe en el Listbox bleiben!,0012,0123,0400,040)
BUTTON1% = CREATE(BUTTON,%HWND,Good by,0091,0150,0228,0033)
EDITFELD%=@Control(EDIT,,$54010000,0,0,0,0,listbox1%,1000,%HINSTANCE)
setfont editfeld%,font%
clearlist
addstring(listbox1%,Test1 el Listbox)
addstring(listbox1%,Test2 el Listbox)
addstring(listbox1%,Test3 el Listbox)
addstring(listbox1%,Test4 el Listbox)
addstring(listbox1%,Test5 el Listbox)
addstring(listbox1%,Test6 el Listbox)
addstring(listbox1%,Test7 el Listbox)
addstring(listbox1%,Test8 el Listbox)
addstring(listbox1%,Test9 el Listbox)
addstring(listbox1%,Test10 el Listbox)
addstring(listbox1%,Test11 el Listbox)
addstring(listbox1%,Test12 el Listbox)
addstring(listbox1%,Test13 el Listbox)
addstring(listbox1%,Test14 el Listbox)
addstring(listbox1%,Test15 el Listbox)
addstring(listbox1%,Test16 el Listbox)
addstring(listbox1%,Test17 el Listbox)
addstring(listbox1%,Test18 el Listbox)
addstring(listbox1%,Test19 el Listbox)
addstring(listbox1%,Test20 el Listbox)
addstring(listbox1%,Test21 el Listbox)
addstring(listbox1%,Test22 el Listbox)
addstring(listbox1%,Test23 el Listbox)
addstring(listbox1%,Test24 el Listbox)
addstring(listbox1%,Test25 el Listbox)

WHILENOT ENDE%

    WAITINPUT

    If @EQU(%KEY,2)

        LET ENDE%= 1

    ELSEIF GETFOCUS(LISTBOX1%) LISTBOX

        listindex%=@GetCursel(listbox1%)

        ifnot lt(listindex%,0)

            Top%=@SendMessage(Listbox1%,398,0,0)
            @SendMessage(listbox1%,$0186,-1,0)
            settext editfeld%,@GetString$(listbox1%,listindex%)
            setwindowpos Editar campo%=2,mul(sub(listindex%,top%),13)-430,13;0
            setfocus(editfeld%)
            sendmessage(editfeld%,$00B1,add(len(gettext$(editfeld%)),1),-1)

            WHILE GETFOCUS(editfeld%) DUMMYSCHLEIFE

                getmessage

                if equ(%mensaje,160)

                    setfocus(%hwnd)

                endif

            WEND

            GTEXT$=gettext$(editfeld%)
            @DeleteString(Listbox1%,listindex%)
            @InsertString(Listbox1%,listindex%,gtext$)
            setwindowpos Editar campo%=0,0-0,0;0
            setwindowpos listbox1%=0012,0013-0401,0107;0

        endif

    ELSEIF GETFOCUS(BUTTON1%) BUTTON

        LET ENDE%=1

    ENDIF

WEND

Deleteobject font%

Oder ha alguien una otro Concepto, cómo una Datenbrowser con Editiermöglichkeit realisieren podría?

Bin gespannt y para cada Referencia dankbar.

Vielen Dank y viele Grüße

Christof
 
XProfan X3
Win10 16 GB RAM
18.10.2016  
 




Michael
W.
Hatte Yo bisher no gebraucht, aber el sieht bien de.

Hier veces lauffähig eingestellt, como Apostroph (Kommentar) y Anführungszeichen por una pequeña Unfall abhanden kamen.
Auch el Vergleiche Yo por el Operatoren ersetzt.
'Source wurde al 15.07.2007 de el MMJ-Quellcodesammlung (Dietmar Horn) en el Babyklappe en XProfan.Com abgelegt:
'Listboxeinträge Editar
'Lauffähig de Profano-Versión 5.0
'********************** HINWEISE ********************************
'CODE ERZEUGT MIT ROKOS OBJECT CREATOR 2.8c
'DATUM  31.01.2003    en  22:33 Uhr
'VERWENDETE PROFANVERSION IST 7.0 ODER HÖHER
'NUR FÜR UNSORTIERTE LISTBOX GÜLTIG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Def GetSysColor(1) !"USER32","GetSysColor"
SETTRUECOLOR 1
DECLARE ENDE%, editfeld%, top%
DECLARE LISTBOX1%, font%, font2%, Texto%
DECLARE BUTTON1%, listindex%, gtext$
font% = @CREATE("FONT","MS Sans Serif",13,0,0,0,0)
WINDOWSTYLE 63
WINDOWTITLE "EDITLISTBOX (c) by Rolf Koch 2003"
WINDOW 214,134 - 429,218
CLS GETSYSCOLOR(15)
USEFONT "MS Sans Serif",8,0,0,0,0
SETDIALOGFONT 1
LISTBOX1% = CREATE("LISTBOX",%HWND,"LISTBOX1",0012,0013,0401,0107)
TEXT% = CREATE("TEXT",%HWND,"Bitte Eintrag anklicken y Editar - Mauszeiger muss während el Eingabe en el Listbox bleiben!",0012,0123,0400,040)
BUTTON1% = CREATE("BUTTON",%HWND,"Good by",0091,0150,0228,0033)
EDITFELD% = @Control("EDIT","",$54010000,0,0,0,0,listbox1%,1000,%HINSTANCE)
setfont editfeld%,font%
clearlist
addstring(listbox1%,"Test1 el Listbox")
addstring(listbox1%,"Test2 el Listbox")
addstring(listbox1%,"Test3 el Listbox")
addstring(listbox1%,"Test4 el Listbox")
addstring(listbox1%,"Test5 el Listbox")
addstring(listbox1%,"Test6 el Listbox")
addstring(listbox1%,"Test7 el Listbox")
addstring(listbox1%,"Test8 el Listbox")
addstring(listbox1%,"Test9 el Listbox")
addstring(listbox1%,"Test10 el Listbox")
addstring(listbox1%,"Test11 el Listbox")
addstring(listbox1%,"Test12 el Listbox")
addstring(listbox1%,"Test13 el Listbox")
addstring(listbox1%,"Test14 el Listbox")
addstring(listbox1%,"Test15 el Listbox")
addstring(listbox1%,"Test16 el Listbox")
addstring(listbox1%,"Test17 el Listbox")
addstring(listbox1%,"Test18 el Listbox")
addstring(listbox1%,"Test19 el Listbox")
addstring(listbox1%,"Test20 el Listbox")
addstring(listbox1%,"Test21 el Listbox")
addstring(listbox1%,"Test22 el Listbox")
addstring(listbox1%,"Test23 el Listbox")
addstring(listbox1%,"Test24 el Listbox")
addstring(listbox1%,"Test25 el Listbox")

WHILENOT ENDE%

    WAITINPUT

    If (%KEY = 2)

        LET ENDE% = 1

    ELSEIF GETFOCUS(LISTBOX1%)'LISTBOX

        listindex% = @GetCursel(listbox1%)

        ifnot (listindex% < 0)

            Top% = @SendMessage(Listbox1%,398,0,0)
            @SendMessage(listbox1%,$0186,-1,0)
            settext editfeld%,@GetString$(listbox1%,listindex%)
            setwindowpos Editar campo% = 2,((listindex% - top%) * 13) - 430,13; 0
            setfocus(editfeld%)
            sendmessage(editfeld%,$00B1,(len(gettext$(editfeld%)) + 1), -1)

            WHILE GETFOCUS(editfeld%)'DUMMYSCHLEIFE

                getmessage

                if (%mensaje = 160)

                    setfocus(%hwnd)

                endif

            WEND

            GTEXT$ = gettext$(editfeld%)
            @DeleteString(Listbox1%,listindex%)
            @InsertString(Listbox1%,listindex%,gtext$)
            setwindowpos Editar campo% = 0,0 - 0,0;0
            setwindowpos listbox1% = 0012,0013 - 0401,0107;0

        endif

    ELSEIF GETFOCUS(BUTTON1%)'BUTTON

        LET ENDE% = 1

    ENDIF

WEND

Deleteobject font%
 
Alle Sprachen
System: Windows 8/10, XProfan X4
Programmieren, das spannendste Detektivspiel der Welt.
18.10.2016  
 




Thomas
Freier
Ansatz veces verfolgt. El Editar-Position muß aber para el verwendete WIN angepaßt voluntad (en el Moment para WIN7). Ein Ejemplo, dass Todavía verwende.
 $H windows.ph
 $H messages.ph
 $H commctrl.ph
Ventana de Estilo 16+512
Ventana 600,410
Título de la ventana "Volumen, Schwerpunkt, ...."
cls ~GetSysColor(15)
Conjunto("Decimals",2)
Declarar Ende%,x&,x%,x!,x$,y&,y%,y!
Declarar Item&,Wert&,Teil_L&
var LV_F&=CreateFont("Verdana",16,0,0,0,0)
SetDialogFont LV_F&
x$="Werte en el Tabla después de Doppellinksklick eingeben.\n"
x$=x$+"Fläche va antes a*b.\n"
x$=x$+"Fläche, o. a*b va antes Radius.\n"
x$=x$+"Radius y Fläche, o. a*b führt a abgerundeten Kanten.\n"
x$=x$+"Wird a Fläche una Radius eingegeben, se el Ursprungsfläche verändert.\n"
Crear("Tooltip",%hwnd,%hwnd,x$)
CreateText(%hwnd,"Abschnitte",10,60,70,22)
CreateText(%hwnd,"Länge",100,10,70,22)
CreateText(%hwnd,"Teil-Länge",100,60,70,22)
CreateText(%hwnd,"spez. Gew.",10,10,90,22)
var LV1&=Crear("GridBox", %hwnd,"Inhalt;0;160;Wert;1;120",0,280,10,300,90)
setstyle Lv1&,getstyle(Lv1&) | ~LVS_NOCOLUMNHEADER
SetFont LV1&,LV_F&
Addstring(LV1&,"Volumen|0")
Addstring(LV1&,"Schwerpunkt de 0|0")
Addstring(LV1&,"Gewicht|0")
Addstring(LV1&,"Moment|0")
var Teile%=4
var Teile&=CreateText(%hwnd,"4",12,82,20,22)
var plus& = Crear("Button",%hwnd,"+",33,80,22,22)
var minus& = Crear("Button",%hwnd,"-",56,80,22,22)
var Spez& = Crear("Edit",%hwnd,"1",10,30,70,22)
sendmessage(Spez&,$00C5,7,0)
var Abst& = Crear("Edit",%hwnd,"1",100,30,70,22)
sendmessage(Abst&,$00C5,7,0)
Teil_L&=CreateText(%hwnd,str$(val(gettext$(Abst&))/Teile%),100,82,70,22)
Crear("GroupBox",%hwnd,"zu Null",480,114,100,140)
var Neu1&=Crear("Button",%hwnd,"Fläche",490,140,80,22)
var Neu2&=Crear("Button",%hwnd,"Seite-a",490,164,80,22)
var Neu3&=Crear("Button",%hwnd,"Seite-b",490,188,80,22)
var Neu4&=Crear("Button",%hwnd,"Radius",490,212,80,22)
var Ende&=Crear("Button",%hwnd,"ENDE",480,340,100,22)
var Rechne&=Crear("Button",%hwnd,"Rechne",480,316,100,22)
var LV&=Crear("GridBox", %hwnd,"x;1;0;Pos.;1;60;Fläche;1;120;Seite-a;1;80;Seite-b;1;80;Radius;1;80",0,10,110,460,250)
Addstring(LV&,"0.5|0|0|0|0|0")
Addstring(LV&,"2|1|0|0|0|0")
Addstring(LV&,"1|2|0|0|0|0")
Addstring(LV&,"2|3|0|0|0|0")
Addstring(LV&,"0.5|4|0|0|0|0")
SetFont LV&,LV_F&
SubClass %hwnd, 1
Mensajes del usuario 2000

Sinestar encargado Ende%

    WaitInput
    caso Clicked(Ende&): Ende% = 1
    caso getfocus(Abst&) : NUMWERT Abst&, 3
    caso getfocus(Spez&) : NUMWERT Spez&, 3
    caso getfocus(Rechne&) : RECHNE
    caso getfocus(Neu1&) : ITEM_LEER 2
    caso getfocus(Neu2&) : ITEM_LEER 3
    caso getfocus(Neu3&) : ITEM_LEER 4
    caso getfocus(Neu4&) : ITEM_LEER 5
    settext Teil_L&,str$(val(gettext$(Abst&))/Teile%)

    If (%umessage = 2000) AND (&ulparam > 1)

        'EDIT invertir
        x$ = GetText $(LV&, &uwparam, &ulparam)
        x&= &ulparam
        y&= &uwparam
        x%=0
        y%=SendMessage(LV&,$101D, x&,0)

        Whileloop 0,x&-1,1

            x%=x%+SendMessage(LV&,$101D, &bucle,0)

        EndWhile

        ' EDIT-Position vom Sistema abhängig......austesten
        Wert& = Crear("Edit",LV&,x$,x%+2,(y&*20)+26,y%-2,18)
        @sendmessage(Wert&,$00C5,9,0)
        SetFont Wert&,LV_F&
        setfocus(wert&)
        @SendString(Wert&,"+ ({FIN})")

        Mientras que getfocus(wert&)

            waitinput
            caso getfocus(Wert&) : NUMWERT Wert&, 2

        EndWhile

        caso trim$(gettext$(wert&))="" : settext Wert&,"0"
        SetText LV&, y&, x&, translate$(gettext$(wert&),",",".")
        DestroyWindow(Wert&)
        setfocus(%hwnd)

    ElseIf getfocus(Minus&) AND (Teile%>4)

        SetText LV&, GetCount(LV&)-3, 0, "0.5"
        DeleteString(LV&,GetCount(LV&)-1)
        DeleteString(LV&,GetCount(LV&)-1)
        dec Teile%,2
        settext Teile&,str$(Teile%)
        settext Teil_L&,str$(val(gettext$(Abst&))/Teile%)
        setfocus(%hwnd)

    ElseIf getfocus(Plus&)

        SetText LV&, GetCount(LV&)-1, 0, "1"
        Addstring(LV&,"2|"+str$(GetCount(LV&))+"|0|0|0|0")
        Addstring(LV&,"0.5|"+str$(GetCount(LV&))+"|0|0|0|0")
        inc Teile%,2
        settext Teile&,str$(Teile%)
        settext Teil_L&,str$(val(gettext$(Abst&))/Teile%)
        setfocus(%hwnd)

    Endif

Endwhile

Usermessages 0
SubClass %hwnd, 0
FIN

SubClassProc

    If SubClassMessage(%hWnd, ~WM_NOTIFY)

        If Largo(&sLParam,8)=-3

            item&=Largo(&sLParam,12)

            If item&<>-1

                SendMessage(%hwnd, 2000, item&, Largo(&sLParam,16))

            EndIf

        EndIf

    EndIf

ENDPROC

Proc ITEM_LEER

    Parámetros x%

    WhileLoop 0,(GetCount(LV&)-1) ,1

        SetText LV&,&bucle,x%,"0"

    Wend

ENDPROC

Proc RECHNE

    Conjunto("Decimals",2)
    Declarar S1!,F!,V!,G!,S!,T!
    T!=val(gettext$(Abst&))/Teile%

    WhileLoop 0,(GetCount(LV&)-1) ,1

        y!=sqr(val(Gettext$(LV&,&bucle,5)) * 2) * Pi() / 4' Radius
        x!=val(Gettext$(LV&,&bucle,3)) * val(Gettext$(LV&,&bucle,4))'Vier-Eck
        caso val(Gettext$(LV&,&bucle,2))=0 : SetText LV&,&bucle,2,str$(x!)'no Fläche entonces a*b

        If val(Gettext$(LV&,&bucle,2))=0

            SetText LV&,&bucle,2,str$(Y!)'no Fläche entonces R

        Más

            x!=sqr(val(Gettext$(LV&,&bucle,5)) * 2) - y!
            SetText LV&,&bucle,2, str$(val(Gettext$(LV&,&bucle,2))- x! )'Fläche - Rundung

        EndIf

        F! = F! + (val(Gettext$(LV&,&bucle,2)) * val(Gettext$(LV&,&bucle,0)))
        S1!=S1! + (val(Gettext$(LV&,&bucle,2)) * val(Gettext$(LV&,&bucle,0)) * val(Gettext$(LV&,&bucle,1)))

    EndWhile

    If (F!=0) O (S1!=0)

        MessageBox("Eingaben fehlen,\noder dürfen no Null ser.\n\nBitte Cambio!","Hinweis",32)
        RETORNO

    EndIf

    V!= F!*2/3*val(gettext$(Abst&))/Teile%
    SetText LV1&,0,1,str$(V!)
    S!=S1!/F!*val(gettext$(Abst&))/Teile%
    SetText LV1&,1,1,str$(S!)
    G!=V!*val(gettext$(Spez&))
    SetText LV1&,2,1,str$(G!)
    SetText LV1&,3,1,str$(S!*G!)

ENDPROC

Proc NUMWERT

    Parámetros ED.N&,ED.N%
    var n.a$="abcdefghijklmnopqrstuvwxyz"
    n.a$=n.a$+Upper$("abcdefghijklmnopqrstuvwxyz")
    n.a$=n.a$+"!§$%&/()=?´´*':;-_²³{[]}\^°<>|++-"
    var n.c$=""

    WhileLoop len(n.a$)

        n.c$ = MID$(n.a$,&Loop,1)' c$= el nte Stringteil
        Settext ED.N&,@Translate$(gettext$(ED.N&),n.c$,"")' unzulässige löschen
        Settext ED.N&,@Translate$(gettext$(ED.N&),"..",".")' doppelte löschen
        Settext ED.N&,@Translate$(gettext$(ED.N&),",,",",")' doppelte löschen

    EndWhile

    Settext ED.N&,@Translate$(gettext$(ED.N&),",",".")
    n.a$=trim$(gettext$(ED.N&))

    WhileLoop ED.N%+1

        @Match$("~.", n.a$)

        If (%MatchPos>0) AND (%MatchPos<ED.N%+1)

            n.a$="0"+n.a$

        EndIf

    EndWhile

    If len(n.a$)=ED.N%

        caso @IsKey(8):n.a$=left$(n.a$,len(n.a$))
        casenot @IsKey(8):n.a$=left$(n.a$,ED.N%)+"."

    EndIf

    SetText ED.N&,n.a$
    sendmessage(ED.N&,$00B1,len(gettext$(ED.N&)),len(gettext$(ED.N&))+1)'Cursor en Ende
    SetFocus(ED.N&)

ENDPROC

 
Gruß Thomas
Windows XP SP2, XProfan X2
19.10.2016  
 




HofK
Thomas Freier (19.10.2016)
Ansatz veces verfolgt. El Editar-Position muß aber para el verwendete WIN angepaßt voluntad (en el Moment para WIN7).


Für Win 10 passt lo en me como vorgegeben.
 
22.10.2016  
 




Christof
Neuß
Hola Tomás,

el es sí fresco. Gracias!

Sorry. Momentan komme Yo no así wirklich dazu, mich así a beschäftigen. Aber el mache I cada Fall todavía.

Saludo

Christof
 
XProfan X3
Win10 16 GB RAM
30.10.2016  
 




Matthias
Arlt
Hab el Ejemplo por Thomas el mejor Información general wegen veces el Wesentliche reduziert y algo modifiziert. So debería lo eigentlich auch unabhängig de el Win-Versión passen...
Ventana 0,0 - 600,410
declarar LV&,Spalte&,Zeile&,Item&,Edit&,Font&,Txt$
declarar rect#,cellpos_x%,cellpos_y%,cellwidth%,cellhight%
Font&=CreateFont("Verdana",16,0,0,0,0)
SetDialogFont Font&
LV&=Crear("GridBox",%hwnd,"x;1;0;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)
Addstring(LV&,"0.5|0|0|0|0|0")
Addstring(LV&,"2|1|0|0|0|0")
Addstring(LV&,"1|2|0|0|0|0")
Addstring(LV&,"2|3|0|0|0|0")
Addstring(LV&,"0.5|4|0|0|0|0")
SetFont LV&,Font&
SubClass %hwnd, 1
usermessages 2000

mientras que 1

    waitinput

    if (%umessage = 2000)

        Txt$ = GetText $(LV&,&uwparam,&ulparam)
        Spalte&= &ulparam
        Zeile&= &uwparam
        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)
        cellhight% = (long(rect#,12) - long(rect#,4)) + 1

        if Spalte& > 0

            whileloop 0,(Spalte& - 1),1

                cellpos_x% = cellpos_x% + sendmessage(LV&,$101D,&bucle,0)

            wend

        endif

        disponer rect#
        Edit& = create("Edit",LV&,Txt$,cellpos_x%,cellpos_y%,cellwidth%,cellhight%)
        setfont Edit&,Font&
        setfocus(Edit&)
        'SendMessage(Edit&,"+({FIN})") 'Cursor en Ende conjunto...
        SendMessage(Edit&,$B1,0,-1)'oder Alles marca...

        mientras que getfocus(Edit&)

            waitinput

        wend

        settext LV&,Zeile&,Spalte&,gettext$(Edit&)
        destroywindow(Edit&)
        setfocus(%hwnd)

    endif

wend

usermessages 0
SubClass %hwnd, 0
end

SubClassProc

    if SubClassMessage(%hwnd, 78)'WM_NOTIFY

        if (Largo(&sLParam,8) = -3)

            Item&=Largo(&sLParam,12)

            if (Item& <> -1)

                SendMessage(%hwnd,2000,Item&,Largo(&sLParam,16))

            endif

        endif

    endif

ENDPROC

 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
02.11.2016  
 




Thomas
Freier
Klasse, y Por favor, a Quelltexten como Gridbox con Item-Editar .
 
Gruß Thomas
Windows XP SP2, XProfan X2
02.11.2016  
 




Matthias
Arlt
Wurde soeben hecho...

Saludo Matthias
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
02.11.2016  
 




Christof
Neuß
Hey, el es sí klasse!!!

Vielen Dank!

Kriege Yo selber hin, dass el Eingabe para el Abschluss auch en ENTER (y/oder Pfeiltasten) reagiert, en lugar de sólo en Clic en el nächste Feld?

Saludo

Christof
 
XProfan X3
Win10 16 GB RAM
04.11.2016  
 




Thomas
Freier
Sí en 'AddHotKey's.
Soll entonces aber en Pfeiltasten el nächste Item editiert voluntad, mußt du el EDIT-Positionswerte (Spalte& o. Zeile& ändern) neu ermitteln, also propio Proc.
Hier übernimmt sólo ENTER, Pfeil links oder rechts el neuen Valor.
Ventana 0,0 - 600,410
declarar LV&,Spalte&,Zeile&,Item&,Edit&,Font&,Txt$
declarar rect#,cellpos_x%,cellpos_y%,cellwidth%,cellhight%
Font&=CreateFont("Verdana",16,0,0,0,0)
SetDialogFont Font&
LV&=Crear("GridBox",%hwnd,"x;1;0;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)
Addstring(LV&,"0.5|0|0|0|0|0")
Addstring(LV&,"2|1|0|0|0|0")
Addstring(LV&,"1|2|0|0|0|0")
Addstring(LV&,"2|3|0|0|0|0")
Addstring(LV&,"0.5|4|0|0|0|0")
SetFont LV&,Font&
SubClass %hwnd, 1
usermessages 2000
AddHotKey 7001, 13, 0'Volver
AddHotKey 7002, 37, 0'Pfeil Links
AddHotKey 7003, 39, 0'Pfeil Rechts

mientras que 1

    waitinput

    if (%umessage = 2000)

        Txt$ = GetText $(LV&,&uwparam,&ulparam)
        Spalte&= &ulparam
        Zeile&= &uwparam
        ' Werte para EDIT
        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)
        cellhight% = (long(rect#,12) - long(rect#,4)) + 1

        if Spalte& > 0

            whileloop 0,(Spalte& - 1),1

                cellpos_x% = cellpos_x% + sendmessage(LV&,$101D,&bucle,0)

            wend

        endif

        disponer rect#
        ' EDIT
        Edit& = create("Edit",LV&,Txt$,cellpos_x%,cellpos_y%,cellwidth%,cellhight%)
        setfont Edit&,Font&
        setfocus(Edit&)
        'SendMessage(Edit&,"+({FIN})") 'Cursor en Ende conjunto...
        SendMessage(Edit&,$B1,0,-1)'oder Alles marca...

        mientras que 1

            waitinput

            If MenuItem(7001) O MenuItem(7002) O MenuItem(7003)

                settext LV&,Zeile&,Spalte&,gettext$(Edit&)
                destroywindow(Edit&)
                romper

            Más

                destroywindow(Edit&)
                romper

            Endif

        wend

        SendMessage(LV&,$102A,0,0)'LV neu dibujar
        setfocus(%hwnd)

    endif

wend

usermessages 0
SubClass %hwnd, 0
end

SubClassProc

    if SubClassMessage(%hwnd, 78)'WM_NOTIFY

        if (Largo(&sLParam,8) = -3)

            Item&=Largo(&sLParam,12)

            if (Item& <> -1)

                SendMessage(%hwnd,2000,Item&,Largo(&sLParam,16))

            endif

        endif

    endif

ENDPROC

 
Gruß Thomas
Windows XP SP2, XProfan X2
04.11.2016  
 




Matthias
Arlt
...oder bspw. así:
Ventana 0,0 - 600,410
declarar LV&,Spalte&,Zeile&,Item&,Edit&,Font&,Txt$
declarar rect#,cellpos_x%,cellpos_y%,cellwidth%,cellhight%
Font&=CreateFont("Verdana",16,0,0,0,0)
SetDialogFont Font&
LV&=Crear("GridBox",%hwnd,"x;1;0;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)
Addstring(LV&,"0.5|0|0|0|0|0")
Addstring(LV&,"2|1|0|0|0|0")
Addstring(LV&,"1|2|0|0|0|0")
Addstring(LV&,"2|3|0|0|0|0")
Addstring(LV&,"0.5|4|0|0|0|0")
SetFont LV&,Font&
SubClass %hwnd, 1
usermessages 2000
AddHotKey 13, 13, 0
AddHotKey 37, 37, 0
AddHotKey 38, 38, 0
AddHotKey 39, 39, 0
AddHotKey 40, 40, 0

mientras que 1

    waitinput

    if (%umessage = 2000)

        Txt$ = GetText $(LV&,&uwparam,&ulparam)
        Spalte&= &ulparam
        Zeile&= &uwparam
        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)
        cellhight% = (long(rect#,12) - long(rect#,4)) + 1

        if Spalte& > 0

            whileloop 0,(Spalte& - 1),1

                cellpos_x% = cellpos_x% + sendmessage(LV&,$101D,&bucle,0)

            wend

        endif

        disponer rect#
        Edit& = create("Edit",LV&,Txt$,cellpos_x%,cellpos_y%,cellwidth%,cellhight%)
        setfont Edit&,Font&
        setfocus(Edit&)
        'SendMessage(Edit&,"+({FIN})") 'Cursor en Ende conjunto...
        SendMessage(Edit&,$B1,0,-1)'oder Alles marca...

        mientras que getfocus(Edit&)

            waitinput

            if (%menuitem = 13)

                romper

            elseif (%menuitem = 37) | (%menuitem = 38) | (%menuitem = 39) | (%menuitem = 40)

                caso (%menuitem = 37) : SendMessage(%hwnd,2000,(Zeile&),(Spalte& - 1))
                caso (%menuitem = 38) : SendMessage(%hwnd,2000,(Zeile& - 1),Spalte&)
                caso (%menuitem = 39) : SendMessage(%hwnd,2000,(Zeile&),(Spalte& + 1))
                caso (%menuitem = 40) : SendMessage(%hwnd,2000,(Zeile& + 1),Spalte&)
                romper

            endif

        wend

        settext LV&,Zeile&,Spalte&,gettext$(Edit&)
        destroywindow(Edit&)
        setfocus(%hwnd)

    endif

wend

usermessages 0
SubClass %hwnd, 0
end

SubClassProc

    if SubClassMessage(%hwnd, 78)'WM_NOTIFY

        if (Largo(&sLParam,8) = -3)

            Item&=Largo(&sLParam,12)

            if (Item& <> -1)

                SendMessage(%hwnd,2000,Item&,Largo(&sLParam,16))

            endif

        endif

    endif

ENDPROC

 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
04.11.2016  
 




Alibre
Sí, el es sí Genial!
Vielen Dank a todos!
 
XProfan X4
PRFellow für ProfanX4 -> Das wär was!
28.01.2021  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

11.377 Views

Untitledvor 0 min.
Gast.081509.11.2024
Walter03.05.2024
Rainer Hoefs10.05.2023
Hans Neff24.01.2023
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie