Français
Forum

Listbox/Gridbox Einträge éditer

 
- 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
 
XProfan X3
Win10 16 GB RAM
18.10.2016  
 



 
- 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
 
XProfan X3
Win10 16 GB RAM
30.10.2016  
 




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




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
 
XProfan X3
Win10 16 GB RAM
04.11.2016  
 




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

 
Gruß Thomas
Windows XP SP2, XProfan X2
04.11.2016  
 




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!
 
XProfan X4
PRFellow für ProfanX4 -> Das wär was!
28.01.2021  
 



 
- 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é
 
XProfan X4
PRFellow für ProfanX4 -> Das wär was!
22.02.2021  
 




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
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

22.02.2021  
 




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

5 kB
Kurzbeschreibung: Listboxen Zeilenhöhe changement / éditer
Hochgeladen:14.03.2021
Downloadcounter120
Herunterladen
 
Xprofan X4
Rudolf Beske / München

Hardware: NB Intel I9 - 16GByte RAM
14.03.2021  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

11.294 Views

Untitledvor 0 min.
Gast.0815 vor 15 Tagen
Walter03.05.2024
Rainer Hoefs10.05.2023
Hans Neff24.01.2023
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie