Forum | | | | - page 1 - |
| Christof Neuß | Salut,
comme Front-Fin pour Datenbankanwendungen eignet sich plan souvent un Browse-la fenêtre. Dabei peut qui données direct dans einer Art Tabelle (z.B. Gridbox) angezeigt et bearbeitet volonté.
qui Dialoge "Listbox" et "Gridbox" aus XProfan wären eigentlich prädestiniert, cet trop leisten. malheureusement gibt es aucun (simple) Possibilité, qui Einträge direct trop éditer.
je sais, dass es z.B. avec qui Listview.dll allez. avec cela habe je aussi déjà experimentiert. là je mais possible wenige/aucun externe DLL nutzen voudrais, wäre une Solution avec "Bordmitteln" genial.
Hat eigentlich la fois quelqu'un cette Ansatz ici weiterverfolgt?
Source wurde am 15.07.2007 aus qui MMJ-Quellcodesammlung (Dietmar Horn) dans qui Babyklappe sur XProfan.Com abgelegt:
Listboxeinträge éditer
Lauffähig ab Profan-Version 5.0
********************** HINWEISE ********************************
CODE ERZEUGT MIT ROKOS OBJECT CREATOR 2.8c
DATUM 31.01.2003 um 22:33 montre
VERWENDETE PROFANVERSION IST 7.0 ODER HÖHER
NUR D' UNSORTIERTE LISTBOX GÜLTIG!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Def GetSysColor(1) !USER32,GetSysColor
SETTRUECOLOR 1
DECLARE ENDE%,editfeld%,top%
DECLARE LISTBOX1%,font%,font2%,Text%
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,s'il te plaît Eintrag Vous pouvez et éditer - Mauszeiger muss au cours de qui Eingabe dans qui Listbox rester!,0012,0123,0400,040)
BUTTON1% = CREATE(BUTTON,%HWND,Good by,0091,0150,0228,0033)
EDITFELD%=@Contrôle(EDIT,,$54010000,0,0,0,0,listbox1%,1000,%HINSTANCE)
setfont editfeld%,font%
clearlist
addstring(listbox1%,Test1 qui Listbox)
addstring(listbox1%,Test2 qui Listbox)
addstring(listbox1%,Test3 qui Listbox)
addstring(listbox1%,Test4 qui Listbox)
addstring(listbox1%,Test5 qui Listbox)
addstring(listbox1%,Test6 qui Listbox)
addstring(listbox1%,Test7 qui Listbox)
addstring(listbox1%,Test8 qui Listbox)
addstring(listbox1%,Test9 qui Listbox)
addstring(listbox1%,Test10 qui Listbox)
addstring(listbox1%,Test11 qui Listbox)
addstring(listbox1%,Test12 qui Listbox)
addstring(listbox1%,Test13 qui Listbox)
addstring(listbox1%,Test14 qui Listbox)
addstring(listbox1%,Test15 qui Listbox)
addstring(listbox1%,Test16 qui Listbox)
addstring(listbox1%,Test17 qui Listbox)
addstring(listbox1%,Test18 qui Listbox)
addstring(listbox1%,Test19 qui Listbox)
addstring(listbox1%,Test20 qui Listbox)
addstring(listbox1%,Test21 qui Listbox)
addstring(listbox1%,Test22 qui Listbox)
addstring(listbox1%,Test23 qui Listbox)
addstring(listbox1%,Test24 qui Listbox)
addstring(listbox1%,Test25 qui Listbox)
WHILENOT ENDE%
WAITINPUT
Si @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 Modifier le champ de%=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
si equ(%message,160)
setfocus(%hwnd)
endif
WEND
GTEXT$=gettext$(editfeld%)
@DeleteString(Listbox1%,listindex%)
@InsertString(Listbox1%,listindex%,gtext$)
setwindowpos Modifier le champ de%=0,0-0,0;0
setwindowpos listbox1%=0012,0013-0401,0107;0
endif
ELSEIF GETFOCUS(BUTTON1%) BUTTON
LET ENDE%=1
ENDIF
WEND
Deleteobject font%
ou bien hat quelqu'un une autre concept, comment on une Datenbrowser avec Editiermöglichkeit realisieren pourrait?
suis gespannt et pour jeden Hinweis reconnaissant.
Vielen Dank et viele Grüße
Christof |
| | | | |
| | | | | - page 1 - |
| Christof Neuß | allô Thomas,
c'est oui cool. merci!
Sorry. Momentan viens je pas so wirklich en supplément, mich avec cela trop beschäftigen. mais cela fais je sur jeden le cas encore.
Salut
Christof |
| | | | |
| | Matthias Arlt | Hab cela Beispiel de Thomas qui besseren Vue d'ensemble à cause de la fois sur cela Wesentliche reduziert et quelque chose modifiziert. So sollte es eigentlich aussi indépendant de qui Win-Version passen...
Fenêtre 0,0 - 600,410
declare LV&,Spalte&,Zeile&,Item&,Edit&,Font&,Txt$
declare rect#,cellpos_x%,cellpos_y%,cellwidth%,cellhight%
Font&=CreateFont("Verdana",16,0,0,0,0)
SetDialogFont Font&
LV&=Créer("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
tandis que 1
waitinput
si (%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
si Spalte& > 0
whileloop 0,(Spalte& - 1),1
cellpos_x% = cellpos_x% + sendmessage(LV&,$101D,&loop,0)
Wend
endif
dispose rect#
Edit& = create("Edit",LV&,Txt$,cellpos_x%,cellpos_y%,cellwidth%,cellhight%)
setfont Edit&,Font&
setfocus(Edit&)
'SendMessage(Edit&,"+({FIN})") 'Cursor à l' Ende mettons...
SendMessage(Edit&,$B1,0,-1)'ou bien Alles markieren...
tandis que getfocus(Edit&)
waitinput
Wend
settext LV&,Zeile&,Spalte&,gettext$(Edit&)
destroywindow(Edit&)
setfocus(%hwnd)
endif
Wend
usermessages 0
SubClass %hwnd, 0
end
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
endif
endif
endproc
|
| | | WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 02.11.2016 ▲ |
| |
| | Thomas Freier | super, et s'il te plaît le Quelltexten comme Gridbox avec Item-Éditer . |
| | | | |
| | Matthias Arlt | Wurde soeben erledigt...
Salut Matthias |
| | | WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 02.11.2016 ▲ |
| |
| | Christof Neuß | Hey, c'est oui super!!!
Vielen Dank!
Kriege je es selber hin, dass qui Eingabe pour den Abschluss aussi sur ENTER (et/ou bien Pfeiltasten) reagiert, statt seulement sur Klick dans cela prochain champ?
Salut
Christof |
| | | | |
| | Thomas Freier | oui sur qui 'AddHotKey's. Soll ensuite mais sur qui Pfeiltasten cela prochain Item editiert volonté, dois du qui EDIT-Positionswerte (Spalte& bzw. Zeile& changement) récente ermitteln, alors eigenes Proc. ici übernimmt seulement ENTER, flèche à gauche ou bien à droite den neuen Wert.
Fenêtre 0,0 - 600,410
declare LV&,Spalte&,Zeile&,Item&,Edit&,Font&,Txt$
declare rect#,cellpos_x%,cellpos_y%,cellwidth%,cellhight%
Font&=CreateFont("Verdana",16,0,0,0,0)
SetDialogFont Font&
LV&=Créer("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'Retour
AddHotKey 7002, 37, 0'flèche à gauche
AddHotKey 7003, 39, 0'flèche à droite
tandis que 1
waitinput
si (%umessage = 2000)
Txt$ = GetText $(LV&,&uwparam,&ulparam)
Spalte&= &ulparam
Zeile&= &uwparam
' Werte pour cela 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
si Spalte& > 0
whileloop 0,(Spalte& - 1),1
cellpos_x% = cellpos_x% + sendmessage(LV&,$101D,&loop,0)
Wend
endif
dispose rect#
' EDIT
Edit& = create("Edit",LV&,Txt$,cellpos_x%,cellpos_y%,cellwidth%,cellhight%)
setfont Edit&,Font&
setfocus(Edit&)
'SendMessage(Edit&,"+({FIN})") 'Cursor à l' Ende mettons...
SendMessage(Edit&,$B1,0,-1)'ou bien Alles markieren...
tandis que 1
waitinput
Si MenuItem(7001) OU MenuItem(7002) OU MenuItem(7003)
settext LV&,Zeile&,Spalte&,gettext$(Edit&)
destroywindow(Edit&)
pause
D'autre
destroywindow(Edit&)
pause
Endif
Wend
SendMessage(LV&,$102A,0,0)'LV récente zeichnen
setfocus(%hwnd)
endif
Wend
usermessages 0
SubClass %hwnd, 0
end
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
endif
endif
endproc
|
| | | | |
| | Matthias Arlt | ...ou bien bspw. so:
Fenêtre 0,0 - 600,410
declare LV&,Spalte&,Zeile&,Item&,Edit&,Font&,Txt$
declare rect#,cellpos_x%,cellpos_y%,cellwidth%,cellhight%
Font&=CreateFont("Verdana",16,0,0,0,0)
SetDialogFont Font&
LV&=Créer("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
tandis que 1
waitinput
si (%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
si Spalte& > 0
whileloop 0,(Spalte& - 1),1
cellpos_x% = cellpos_x% + sendmessage(LV&,$101D,&loop,0)
Wend
endif
dispose rect#
Edit& = create("Edit",LV&,Txt$,cellpos_x%,cellpos_y%,cellwidth%,cellhight%)
setfont Edit&,Font&
setfocus(Edit&)
'SendMessage(Edit&,"+({FIN})") 'Cursor à l' Ende mettons...
SendMessage(Edit&,$B1,0,-1)'ou bien Alles markieren...
tandis que getfocus(Edit&)
waitinput
si (%menuitem = 13)
pause
elseif (%menuitem = 37) | (%menuitem = 38) | (%menuitem = 39) | (%menuitem = 40)
cas (%menuitem = 37) : SendMessage(%hwnd,2000,(Zeile&),(Spalte& - 1))
cas (%menuitem = 38) : SendMessage(%hwnd,2000,(Zeile& - 1),Spalte&)
cas (%menuitem = 39) : SendMessage(%hwnd,2000,(Zeile&),(Spalte& + 1))
cas (%menuitem = 40) : SendMessage(%hwnd,2000,(Zeile& + 1),Spalte&)
pause
endif
Wend
settext LV&,Zeile&,Spalte&,gettext$(Edit&)
destroywindow(Edit&)
setfocus(%hwnd)
endif
Wend
usermessages 0
SubClass %hwnd, 0
end
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
endif
endif
endproc
|
| | | WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 04.11.2016 ▲ |
| |
| | Alibre | oui, c'est oui Genial! Vielen Dank à alle! |
| | | | |
| | | | - page 2 - |
| | Alibre | allô zusammen je bin's nochmal.
Relatif à la éditer qui Gridbox ist super!
mais comment peux je qui Gridbox zusätzlich Drag & Drop - Empfänglich faire?
Besten Dank et Grüsse, André |
| | | | |
| | Georg Teles | salut,
je fais cela anhand eines très alten Beispiels, ici habe je chez meinen Archivierer qui Gridbox avec D&D trop Nutze gemacht um Pfad, Dateiname, Taille et CRC-somme auflisten trop laisser.
Déclarer Ende%, tmpGrid&, Grid&
Def DragFinish(1)!"SHELL32","DragFinish"
Def DragQueryFile(4)!"SHELL32","DragQueryFileA"
Def DragAcceptFiles(2)!"SHELL32","DragAcceptFiles"
Fenêtre 0,0-1024,500
tmpGrid& = Créer("Grid",1,0)
Grid& = Créer("GridBox",%hWnd,"Datei;0;200;Pfad;0;200;Größe;1;200",0,5,5,900,200)
Claire Ende%
DragAcceptFiles(%hWnd,1)
Usermessages $233
WhileNot Ende%
Waitinput
Si %Umessage = $233
DragDrop()' Hinzufügen
EndIf
Endwhile
DragAcceptFiles(%hWnd,0)
Proc DragDrop
ClearList
ClearList tmpGrid&
Déclarer Files#,Anzahl&,Path$,File$,i%,fileSize$
Faible Files#,261
Anzahl& = DragQueryFile(&WParam,$FFFFFFFF,Files#,261)
Claire i%
Tandis que (i% < Anzahl&)
DragQueryFile(&WParam,i%,Files#,261)
File$ = String$(Files#,0)
Si DirExists(File$)
ChDir File$
AddFiles * "*.*"
D'autre
AddStrings File$
EndIf
Inc i%
Endwhile
DragFinish(&WParam)
Anzahl& = MoveListToHandle(tmpGrid&)
WhileLoop 0,(Anzahl&-1)
Path$ = GetString$(tmpGrid&,&loop)
File$ = $ Substr(Path$,-1,"\\")
Path$ = Translate$(Path$,File$,»)
fileSize$ = Str$(FileSize(Path$+File$))+" Byte(s)"
AddStrings(Grid&,File$+"|"+Path$+"|"+fileSize$)
Endwhile
ClearList
ClearList tmpGrid&
Sélectionnez String(Grid&,-1,GetString$(Grid&,0))
Dispose Files#
ENDPROC
Grüße |
| | | | |
| | H.Brill | si du qui Listview.dll benutzt, pour qui du dans einem anderen poste gefragt la hâte : Drag&Drop wird là très bien soutenu. |
| | | 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 mir cela Thema aussi la fois angeschaut et quoi gebaut....
Herunterladen
simple la fois testen....
Salut aus München Rudi |
| | | Xprofan X4 Rudolf Beske / München
Hardware: NB Intel I9 - 16GByte RAM | 14.03.2021 ▲ |
| |
|
répondreOptions du sujet | 11.278 Views |
Themeninformationencet Thema hat 9 participant: |