Foro | | | | Thomas Freier | Búsqueda una solución, así después de Haga doble clic en el no inmediatamente el aktuelle Datum übernommen se. ¿Es sólo el Kalenderdatum el en el Item vorhandene ajustar oder una eigenen Kalender redactar? Auch sería Me gusta, dass el Element después de Datumswahl en el Kalender automáticamente destruido. KompilierenMarcaSeparación*****************************************************************
* Beispiel für die Funktion: GetControlParas(B#) *
* Autor: Normann Strübli *
*****************************************************************
Declare Listview&,Lvdll&,Mklick&,Element&
Declare LV_Handle&,LV_Column&,LV_Row&,LV_Xoffset&,LV_Yoffset&,LV_Width&,LV_Height&
Declare LV_Font&,LV_Orient&,LV_Text$,Edit_finish%,All_finish%,Eintrag%
declare HandlefromPoint&,mousepos#,HT_Info#,tab%
DIM MousePos#,10
DIM HT_Info#,16
Declare Font&
Declare Bereich#
Dim bereich#,320
Clear bereich#
DEF SetWindowPos(7) !USER32,SetWindowPos
DEF DeleteObject(1) !GDI32,DeleteObject
Def SetWindowLong(3) !USER32, SetWindowLongA
Def GetWindowLong(2) !USER32, GetWindowLongA
DEF GetKeyState(1) ! USER32, GetKeyState
dEF ScreenToClient(2) !USER32,ScreenToClient
DEF Key(1) @equ(@and(getkeystate(&(1)),$8000),$8000)
DEF getcursorpos(1) !USER32,GetCursorPos
DEF mouseposx(0) long(mousepos#,0)
DEF mouseposy(0) long(mousepos#,4)
Def SetEditNumeric(1) SetWindowLong(@&(1),-16,
Or(GetWindowLong(@&(1),-16),$2002))
$I Listview_Funktionen.inc
SETTRUECOLOR 1
Font& = @CREATE(FONT,NEW TIMES ROMAN,18,0,1,0,0)
Window 0,0-608,413
Windowtitle Beispiel: GetControlParas(B#)
lvdll&=usedll(bvr/Listview.dll)
listview&=CreateListView(%hwnd,%hinstance,0,Rgb(150,150,255),-1,$31)
SetFont listview&,Font&
InsertColumn listview&,Datum,100,2
SetItem listview&,11.02.2008
SetItem listview&,24.05.1997
SetItem listview&,14.08.1988
ShowListView(listview&,0,0,600,368)
InitMessages(%hwnd)
Proc Get_LvData
LV_Handle&=Long(bereich#,0) Listview Handle
LV_Column&=Long(bereich#,4) Index Spalte
LV_Row&=Long(bereich#,8) Index Zeile
LV_Xoffset&=Long(bereich#,12) X Offset
LV_Yoffset&=Long(bereich#,16) Y Offset
LV_Width&=Long(bereich#,20) Breite
LV_Height&=Long(bereich#,24) Höhe
LV_Font&=Long(bereich#,28) Font Handle
LV_Orient&=Long(bereich#,32) Textausrichtung
LV_Text$=String$(bereich#,64) Itemtext
LV_Height& = @SUB(LV_Height&,2) Kleine Größenkorrektur
if LV_Orient& = 1
LV_Orient& = 2
Elseif LV_Orient& = 2
LV_Orient& = 1
endif
if @gt(@add(LV_Xoffset&,LV_Width&),@Width(LV_Handle&)) Damit das Element nicht Außerhalb
LV_Width& = @sub(@Width(LV_Handle&),LV_Xoffset&) des Sichtbaren Bereiches der Spalte
endif erstellt wird
Endproc
Proc CursorPos
getcursorpos(mousepos#) Mausposition ermitteln
ScreenToClient(LV_Handle&,mousepos#) In Bildirmkoordinaten umrechen
Long Ht_info#,0=Long(mousepos#,0)
Long Ht_info#,4=Long(mousepos#,4)
Long Ht_info#,8=0
Long Ht_info#,12=0
Endproc
Proc Edit_Kalender
var Edit_Finish% = 0
var Element_E&=Create(DateEdit, LV_Handle&, , LV_Xoffset&,LV_Yoffset&,LV_Width&,LV_Height&)
SetWindowPos(Element_E&,-1,0,0,0,0,$13)
@Setfocus(Element_E&)
Whilenot Edit_Finish%
getmessage
case @ISKEY(27) : BREAK
If @ISKEY(13) Enter
LV_Text$ = @GetText$(Element_E&) Änderungen übernehmen
SetItemText(LV_HAndle&,addr(LV_Text$),LV_Column&,LV_Row&)
Edit_Finish% = 1
endif
wend
@DestroyWindow(Element_E&) Edit zerstören
Endproc
HAUPTPROGRAMM
While 1
waitinput
Case %key=2:BREAK
MKlick& = GetControlParas(Bereich#)Feldparameter auslesen
If @equ(Mklick&,1) Doppelklick links
Get_LvData Parameter auslesen
Edit_Kalender
endif
Wend
Dispose Bereich#
Dispose Mousepos#
Dispose HT_Info#
CloseMessages(%hwnd)
freedll lvdll&
$I Listview_Dispose.inc
DELETEOBJECT Font&
End
|
| | | | |
| | | Der Code alleine es por desgracia, no lauffähig. Hier hätte Yo una ZIP gewünscht. |
| | | | |
| | Thomas Freier |
| | | | |
| | Jörg Sellmeyer | KompilierenMarcaSeparación
Proc Edit_Kalender
var Edit_Finish% = 0
var Element_E&=Create(DateEdit, LV_Handle&, GetText$(LV_HAndle&,LV_Row&,LV_Column&), LV_Xoffset&,LV_Yoffset&,LV_Width&,LV_Height&)
SetWindowPos(Element_E&,-1,0,0,0,0,$13)
@Setfocus(Element_E&)
Whilenot Edit_Finish%
waitinput
getmessage
case @ISKEY(27) : BREAK
If @ISKEY(13) Enter
LV_Text$ = @GetText$(Element_E&) Änderungen übernehmen
SetItemText(LV_HAndle&,addr(LV_Text$),LV_Column&,LV_Row&)
Edit_Finish% = 1
endif
wend
@DestroyWindow(Element_E&) Edit zerstören
ENDPROC
|
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 20.02.2008 ▲ |
| |
| | Thomas Freier | Gracias Jörg. Usted warst rápidamente como el Wüstenwind. Nun voluntad Yo versuchen, si Yo auch con Feldsprüngen por el Taste TAB como en el Ejemplo Eigene Eingaben el Listview hinbekomme. Sonst trenne Yo el Eingabe en el Feldern. |
| | | | |
| | | Hola Thomas So tener Yo en el me gelöst - KompilierenMarcaSeparación
PROC KALENDER_HILFE
Messagebox(Hier kann eine kurze Hilfe hin,Date$(2),64)
ENDPROC
PROC MGH_KALENDER
declare datum$
declare font0%,font00%,txt%,datumtext%
font0%=CREATE(FONT,ARIAL,14,0,0,0,0)
font00%=CREATE(FONT,ARIAL,16,6,0,0,0)
declare cal_EE%,cal_win&,calender&,lesen&,aus&,cal_hlp&
DECLARE d%,m%,y%
declare d$,m$,y$,dtp#
DEF getsystime(2) SendMessage(&(1),4097,0,&(2))
dim dtp#,20
PROC GETDATE
parameters chdl&
waitinput
getsystime(chdl&,dtp#)
d$=format$(00,word(dtp#,6))
m$=format$(00,word(dtp#,2))
y$=format$(0000,word(dtp#,0))
ENDPROC
WindowStyle 48
cal_win&=CREATE(WINDOW,%HWND,Datum auswählen...,200,100,205,300)
calender&=Control(SysMonthCal32,,$54000004,1,0,202,155,cal_win&,2000,%hinstance)
d%=CREATE(EDIT,cal_win&,d$,30,165,30,20)
SetFont d%,font0%
m%=CREATE(EDIT,cal_win&,m$,80,165,30,20)
SetFont m%,font0%
y%=CREATE(EDIT,cal_win&,y$,130,165,40,20)
SetFont y%,font0%
txt%=CREATE(TEXT,cal_win&,T T,35,185,20,20)
SetFont txt%,font0%
txt%=CREATE(TEXT,cal_win&,MM,85,185,30,20)
SetFont txt%,font0%
txt%=CREATE(TEXT,cal_win&,JJJJ,135,185,50,20)
SetFont txt%,font0%
lesen&=Create(Button,cal_win&,&Datum eintragen,10,205,180,25)
SetFont lesen&,font00%
cal_hlp&=Create(Button,cal_win&,?,10,240,50,20)
aus&=Create(Button,cal_win&,&Zurück,80,235,110,25)
SetFont aus&,font00%
cal_EE%=0
SetFocus(d%)
WHILENOT cal_EE%
WAITINPUT
IF CLICKED(lesen&) | (ISKEY(18) & Iskey(68))
d$=GETTEXT$(d%)
m$=GETTEXT$(m%)
y$=GETTEXT$(y%)
datum$=d$+m$+y$
IF datum$=
getdate(calender&)
datum$=d$+.+m$+.+y$
ENDIF
datum$=d$+.+m$+.+y$
DesTroyWindow(cal_win&)
SetText datumtext%,datum$
cal_EE%=1
dispose dtp#
ENDIF
IF CLICKED(aus&) | (ISKEY(18) & Iskey(90))
DesTroyWindow(cal_win&)
cal_EE%=1
dispose dtp#
SetActiveWindow(%HWnd)
ENDIF
CASE CLICKED(cal_hlp&):KALENDER_HILFE
ENDWHILE
ENDPROC
window (%MaxX+10),0-0,100
mgh_kalender
end
|
| | | | |
| | Thomas Freier | Horst, Yo suchte no una Kalender. Yo möchte, dass beim Editieren uno Listviewfeldes uno angeboten se. El Solución de Jörg es OK, si jeweils una Feld editiert voluntad kann. Das Problema kommt, si yo el Línea Editar y TAB una Feld más springen voluntad (siehe Anhang, hier el Datumsfelder). Yo mach sólo una vez una Gedankenpause. Aber tal vez ha hier ya uno una solución oder una Vorschlag dazu. |
| | | | |
| | Jörg Sellmeyer | Yo sería con AddHotKey(2000,9,0) el Drücken el Tabtaste abfangen. Dann kannst Usted bastante gezielt irgendwelche Aktionen vornehmen. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 20.02.2008 ▲ |
| |
| | Frank Abbing | Thomas, siehst Si es usted el como Listview.dll-Problema? |
| | | | |
| | Thomas Freier | Nein, sehe Yo no así. Wollte sólo una Listviewzeile como en el Ejemplo Eigene_Eingaben Editar, sin embargo con uno Datumsauswahl. Problemas bereitete entonces getmessage . Wird el Feld erreicht, se inmediatamente el aktuelle Datum übernommen, qué natürlich en una vorhandenem Datum no tragbar war. Werde con Jörgs Empfehlungen incluso algo zusammenbauen. |
| | | | |
| | Frank Abbing | Ok. |
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 5 subscriber: |