Foro | | | | 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 |
| | | | |
| | 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%
|
| | | | |
| | 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
|
| | | | |
| | 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. |
| | | | |
| | 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 |
| | | | |
| | 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 . |
| | | | |
| | 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 |
| | | | |
| | 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
|
| | | | |
| | 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! |
| | | | |
|
RespuestaTema opciones | 11.377 Views |
ThemeninformationenDieses Thema ha 9 subscriber: |