Español
Foro

Kalender y GetControlParas(B#)

 

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
 
Gruß Thomas
Windows XP SP2, XProfan X2
19.02.2008  
 



Der Code alleine es por desgracia, no lauffähig. Hier hätte Yo una ZIP gewünscht.
 
19.02.2008  
 




Thomas
Freier
Der Wunsch se erfüllt.

 
Gruß Thomas
Windows XP SP2, XProfan X2
20.02.2008  
 




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.
 
Gruß Thomas
Windows XP SP2, XProfan X2
20.02.2008  
 



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
 
20.02.2008  
 




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.

 
Gruß Thomas
Windows XP SP2, XProfan X2
20.02.2008  
 




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?
 
20.02.2008  
 




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.
 
Gruß Thomas
Windows XP SP2, XProfan X2
20.02.2008  
 




Frank
Abbing
Ok.
 
21.02.2008  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

1.868 Views

Untitledvor 0 min.
Walter08.06.2021
Axel Berse18.02.2019
Uwe Lang21.02.2016
Manfred Barei28.11.2015
Más...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie