Foro | | | | - Página 1 - |
| 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 |
| | | | |
| | | | | - Página 1 - |
| 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! |
| | | | |
| | | | - Página 2 - |
| | Alibre | ¡Hola zusammen Yo bin's otra vez.
Relacionado con la Editar el Gridbox es super!
Aber como kann Yo el Gridbox zusätzlich Drag & Drop - Empfänglich hacer?
Besten Dank y Grüsse, André |
| | | | |
| | Georg Teles | Servus,
Yo mache el anhand uno muy alten Beispiels, hier Yo en media Archivierer el Gridbox con D&D a Nutze gemacht en Pfad, Dateiname, Größe y CRC-Summe auflisten que se.
Declarar Ende%, tmpGrid&, Grid&
Def DragFinish(1)!"SHELL32","DragFinish"
Def DragQueryFile(4)!"SHELL32","DragQueryFileA"
Def DragAcceptFiles(2)!"SHELL32","DragAcceptFiles"
Ventana 0,0-1024,500
tmpGrid& = Crear("Grid",1,0)
Grid& = Crear("GridBox",%hWnd,"Datei;0;200;Pfad;0;200;Größe;1;200",0,5,5,900,200)
Claro Ende%
DragAcceptFiles(%hWnd,1)
Usermessages $233
Sinestar encargado Ende%
Waitinput
If %Umessage = $233
DragDrop()' Hinzufügen
EndIf
EndWhile
DragAcceptFiles(%hWnd,0)
Proc DragDrop
ClearList
ClearList tmpGrid&
Declarar Files#,Anzahl&,Path$,File$,i%,fileSize$
Dim Files#,261
Anzahl& = DragQueryFile(&WParam,$FFFFFFFF,Files#,261)
Claro i%
Mientras que (i% < Anzahl&)
DragQueryFile(&WParam,i%,Files#,261)
File$ = String$(Files#,0)
If DirExists(File$)
ChDir File$
AddFiles * "*.*"
Más
AddStrings File$
EndIf
Inc i%
EndWhile
DragFinish(&WParam)
Anzahl& = MoveListToHandle(tmpGrid&)
WhileLoop 0,(Anzahl&-1)
Path$ = GetString$(tmpGrid&,&bucle)
File$ = Substr$(Path$,-1,"\\")
Path$ = Translate$(Path$,File$,"")
fileSize$ = Str$(FileSize(Path$+File$))+" Byte(s)"
AddStrings(Grid&,File$+"|"+Path$+"|"+fileSize$)
Endwhile
ClearList
ClearList tmpGrid&
Seleccione String(Grid&,-1,GetString$(Grid&,0))
Disponer Files#
ENDPROC
Grüße |
| | | | |
| | H.Brill | Falls du el Listview.dll benutzt, después de el du en un otro Post gefragt hast : Drag&Drop se hay muy bien unterstützt. |
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 23.02.2021 ▲ |
| |
| | RudiB. | Hab me Thema auch veces angeschaut y qué gebaut....
Descargar
Einfach veces testen....
Saludo de München Rudi |
| 5 kB | | Kurzbeschreibung: | Listboxen Zeilenhöhe ändern / Editar | | Hochgeladen: | 14.03.2021 | | Ladeanzahl: | | | | Descargar |
| | | Xprofan X4 Rudolf Beske / München
Hardware: NB Intel I9 - 16GByte RAM | 14.03.2021 ▲ |
| |
|
RespuestaTema opciones | 11.376 Views |
ThemeninformationenDieses Thema ha 9 subscriber: |