Forum | | | | 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 |
| | | | |
| | Michael W. | Hatte je bisher pas gebraucht, mais cela sieht bien aus.
ici la fois courir eingestellt, là Apostroph (Kommentar) et Anführungszeichen par une kleinen Unfall abhanden kamen. aussi qui Vergleiche habe je par qui Operatoren ersetzt.
'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,"Bitte 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 (%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 Modifier le champ de% = 2,((listindex% - top%) * 13) - 430,13; 0
setfocus(editfeld%)
sendmessage(editfeld%,$00B1,(len(gettext$(editfeld%)) + 1), -1)
WHILE GETFOCUS(editfeld%)'DUMMYSCHLEIFE
getmessage
si (%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%
|
| | | | |
| | Thomas Freier | Ansatz la fois verfolgt. qui Éditer-Position doit mais pour cela verwendete WIN ajusté volonté (im Moment pour WIN7). un Beispiel, dass je encore verwende.
$H windows.ph
$H messages.ph
$H commctrl.ph
Fenêtre Style 16+512
Fenêtre 600,410
Titre de la fenêtre "Volumen, Schwerpunkt, ...."
cls ~GetSysColor(15)
Set("Décimal",2)
Déclarer Ende%,x&,x%,x!,x$,y&,y%,y!
Déclarer Item&,Wert&,Teil_L&
var LV_F&=CreateFont("Verdana",16,0,0,0,0)
SetDialogFont LV_F&
x$="Werte dans qui Tabelle pour Doppellinksklick eingeben.\n"
x$=x$+"Fläche allez avant a*b.\n"
x$=x$+"Fläche, bzw. a*b allez avant Radius.\n"
x$=x$+"Radius et Surface, bzw. a*b führt trop abgerundeten Kanten.\n"
x$=x$+"Wird zur Surface un Radius eingegeben, wird qui Ursprungsfläche modifié.\n"
Créer("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&=Créer("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& = Créer("Button",%hwnd,"+",33,80,22,22)
var minus& = Créer("Button",%hwnd,"-",56,80,22,22)
var Spez& = Créer("Edit",%hwnd,"1",10,30,70,22)
sendmessage(Spez&,$00C5,7,0)
var Abst& = Créer("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)
Créer("GroupBox",%hwnd,"zu Null",480,114,100,140)
var récente1&=Créer("Button",%hwnd,"Fläche",490,140,80,22)
var récente2&=Créer("Button",%hwnd,"Seite-a",490,164,80,22)
var récente3&=Créer("Button",%hwnd,"Seite-b",490,188,80,22)
var récente4&=Créer("Button",%hwnd,"Radius",490,212,80,22)
var Ende&=Créer("Button",%hwnd,"ENDE",480,340,100,22)
var Rechne&=Créer("Button",%hwnd,"Rechne",480,316,100,22)
var LV&=Créer("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
Utilisateur Messages 2000
WhileNot Ende%
WaitInput
cas Clicked(Ende&): Ende% = 1
cas getfocus(Abst&) : NUMWERT Abst&, 3
cas getfocus(Spez&) : NUMWERT Spez&, 3
cas getfocus(Rechne&) : RECHNE
cas getfocus(récente1&) : ITEM_LEER 2
cas getfocus(récente2&) : ITEM_LEER 3
cas getfocus(récente3&) : ITEM_LEER 4
cas getfocus(récente4&) : ITEM_LEER 5
settext Teil_L&,str$(val(gettext$(Abst&))/Teile%)
Si (%umessage = 2000) AND (&ulparam > 1)
'EDIT anlegen
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, &loop,0)
Endwhile
' EDIT-Position vom System dépendant......austesten
Wert& = Créer("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})")
Tandis que getfocus(wert&)
waitinput
cas getfocus(Wert&) : NUMWERT Wert&, 2
Endwhile
cas $ 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
Si SubClassMessage(%hWnd, ~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
Proc ITEM_LEER
Paramètres x%
WhileLoop 0,(GetCount(LV&)-1) ,1
SetText LV&,&loop,x%,"0"
Wend
ENDPROC
Proc RECHNE
Set("Décimal",2)
Déclarer S1!,F!,V!,G!,S!,T!
T!=val(gettext$(Abst&))/Teile%
WhileLoop 0,(GetCount(LV&)-1) ,1
y!=sqr(val(Gettext$(LV&,&loop,5)) * 2) * Pi() / 4' Radius
x!=val(Gettext$(LV&,&loop,3)) * val(Gettext$(LV&,&loop,4))'quatre-Eck
cas val(Gettext$(LV&,&loop,2))=0 : SetText LV&,&loop,2,str$(x!)'aucun Surface ensuite a*b
Si val(Gettext$(LV&,&loop,2))=0
SetText LV&,&loop,2,str$(Y!)'aucun Surface ensuite R
D'autre
x!=sqr(val(Gettext$(LV&,&loop,5)) * 2) - y!
SetText LV&,&loop,2, str$(val(Gettext$(LV&,&loop,2))- x! )'Surface - Rundung
EndIf
F! = F! + (val(Gettext$(LV&,&loop,2)) * val(Gettext$(LV&,&loop,0)))
S1!=S1! + (val(Gettext$(LV&,&loop,2)) * val(Gettext$(LV&,&loop,0)) * val(Gettext$(LV&,&loop,1)))
Endwhile
Si (F!=0) OU (S1!=0)
MessageBox("Eingaben manquer,\noder dürfen pas zéro son.\n\nBitte Changement!","Hinweis",32)
RETOUR
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
Paramètres 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$,&Boucle,1)' c$= qui nte Stringteil
Settext ED.N&,@Translate$(gettext$(ED.N&),n.c$,»)' unzulässige effacer
Settext ED.N&,@Translate$(gettext$(ED.N&),"..",".")' doppelte effacer
Settext ED.N&,@Translate$(gettext$(ED.N&),",,",»)' doppelte effacer
Endwhile
Settext ED.N&,@Translate$(gettext$(ED.N&),»,".")
n.a$=$ Trim(gettext$(ED.N&))
WhileLoop ED.N%+1
@Match$("~.", n.a$)
Si (%MatchPos>0) AND (%MatchPos<ED.N%+1)
n.a$="0"+n.a$
EndIf
Endwhile
Si len(n.a$)=ED.N%
cas @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 à l' Ende
SetFocus(ED.N&)
ENDPROC
|
| | | | |
| | HofK | Thomas Freier (19.10.2016)
Ansatz la fois verfolgt. qui Éditer-Position doit mais pour cela verwendete WIN ajusté volonté (im Moment pour WIN7).
Pour Win 10 passt es chez mir so comment vorgegeben. |
| | | | |
| | 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! |
| | | | |
|
répondreOptions du sujet | 11.541 Views |
Themeninformationencet Thema hat 9 participant: |