Français
Forum

Listview1.pb Beispieldatei Darstellungsfehler

 
- page 1 -



Fred
Matthiesen
allô et Guten journée zusammen.
je begrüße erstmal alle Mitglieder.
Probiere qui Listviewdll aus et mußte feststellen, le moi un Problem pas dans den Griff bekomme.
si qui Beispieldatei gestartet wird, ist cela Listview zunächst dunkel. Soweit ok. maintenant lade je qui DBF-Dossier et il zeigt dessus à gauche aussi le nombre qui eingelesenen Datensätze à. --- mais---- cela Listvier bleibt dunkel. un Linksklick avec qui souris: Fehlanzeige. eh bien avec qui rechten Bouton de la souris: uiii, joh, cela Listview ist sichtbar. eh bien mais befinde je mich déjà im Editiermodus eines Items. c'est pour qui Funktion korrekt.
eh bien, je erwarte, cela pour dem Einlesen qui DBF-Dossier sich cela Listview avec seinen Entrées zeigt.
quel Befehl doit pour dem Einlesen avoir lieu, avec cela sich cela Listview zeigt.

Grüße
Fred
 
SUSE 10.3 / Listview.dll
03.11.2006  
 



 
- page 1 -



H.Brill
Salut,
meinste PureBasic 4.0 ?
qui Beispielcodes sommes encore pour qui Version 3.94 geschrieben.
avec Version 4.0 brauchste z.B. cela Frame3DGadget pas plus.
Hat autrefois avec qui 3.94 pas anders geklappt.

Hab dir la fois cela erste Beispiel sur Version 4.0 umgeschrieben.
Ist maintenant pas en détails getestet, hoffe mais, qui es dans allen partager
funktioniert.
KompilierenMarqueSéparation
IncludeFile "Listview.pb"
Global flen.l, lhandle.l, bereich.l, Quit.l
Global datei.s, datei2.s, db_datei.s
Global spalte1.s, spalte2.s, spalte3.s, sp1.s, sp2.s, sp3.s, selected.s
spalte1.s = "Artikel"
spalte2.s = "Menge"
spalte3.s = "Preis"
Dim Spalten.l(3)
Dim Sortspalten.l(3)
; hier wird die Sortierung der einzelnen Spalten festgelegt.
; 0 = nicht sortiert, 2 = Alphabetisch, 3 = Zahlenwert (nur ganze Zahlen)
Sortspalten(0) = 1
Sortspalten(1) = 2
Sortspalten(2) = 2
selected = Space(16384)
; wird global gebraucht, um beim Abfangen von Klicks im LV
; die zeilen hineinzuschreiben. (Siehe Anfang der Repeat - Schleife)
OpenWindow(0, 100, 100, 600, 460,"List - View",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)

If CreateGadgetList(WindowID(0))

    ButtonGadget(5, 5, 10, 70, 20, "Clear")
    ButtonGadget(6, 90, 10, 70, 20, "Set Zeile")
    ButtonGadget(7, 175, 10 ,70, 20, "Ende")
    ButtonGadget(8, 5, 40, 70, 20, "Load DBF")
    ButtonGadget(9, 90, 40, 70, 20, "Save to CSV")
    ButtonGadget(10,175,40, 70, 20, "Load CSV")
    ButtonGadget(11, 175, 70, 70, 20, "Save to DBF")
    TextGadget(20, 5, 70, 80, 25, "Anzahl Zeilen : ")
    TextGadget(21, 90, 70, 40, 25, "")
    TextGadget(22, 270, 10, 40, 20, "Artikel :")
    TextGadget(23, 270, 40, 40, 20, "Menge : ")
    TextGadget(24, 270, 70, 40, 20, "Preis : ")
    StringGadget(25, 320, 10, 240, 20, "")
    StringGadget(26, 320, 40, 40, 20, "")
    StringGadget(27, 320, 70, 80, 20, "")
    ;Frame3DGadget(40, 5, 100, 580, 350, "Listview", #PB_Frame3D_Double)

EndIf

fenster.l = WindowID(0)
; Listview initialisieren und erstellen
; hier mit 3 Spalten
lhandle = CreateListview(fenster, 0, 0, RGB(255, 255, 255), -1, $31)
IColumn(lhandle, @spalte1, 240, 0)
IColumn(lhandle, @spalte2, 80, 1)
IColumn(lhandle, @spalte3, 80, 1)
; Sortierung zulassen
ASortListview(lhandle, @Sortspalten(), 3)
; Editieren zulassen
EnableEdits(lhandle, 1)
; Messageverwaltung einschalten
InitMessages(fenster)
; Listview anzeigen
ShowListview(lhandle, 5, 120, 570, 320)
MessageRequester("Hallo !", "Rechtsklick" + Chr(13) + "zum Editieren " + Chr(13) + "benutzen !", #PB_MessageRequester_Ok)
Quit = 0

Repeat

    x.l = GetSelected(@selected, @y)

    If y = lhandle

        Gosub GetEintrag

    EndIf

    EventID.l = WaitWindowEvent()

    Select EventID

        Case #PB_Event_Gadget

        Select EventGadget()

            Case 5
            ; Clear

            If GetLines(lhandle) > 0

                r.l = DeleteAllItems(lhandle)
                SetGadgetText(21, "0")

            EndIf

            Case 6
            ; Set
            Gosub SetEintrag
            Case 7
            Quit = 1
            Case 8
            ; Load DBF
            datei2 = OpenFileRequester("DBF laden", "", "dBase 3 - Dateien |*.dbf", 0)

            If datei2 <> ""

                Gosub LoadDBF

            Else

                MessageRequester("Info", "Keine Datei gewählt !", #PB_MessageRequester_Ok)

            EndIf

            Case 9
            ; Save to CSV
            datei = SaveFileRequester("CSV speichern", "", "CSV - Dateien |*.csv", 0)

            If datei <> ""

                Gosub SaveToCSV

            Else

                MessageRequester("Info", "Keine Datei gewählt !", #PB_MessageRequester_Ok)

            EndIf

            Case 10
            datei = OpenFileRequester("CSV laden", "", "CSV - Dateien |*.CSV", 0)

            If datei <> ""

                Gosub LoadCSV

            Else

                MessageRequester("Info", "Keine Datei gewählt !", #PB_MessageRequester_Ok)

            EndIf

            Case 11
            db_datei = SaveFileRequester("DBF speichern", "", "dBase 3 - Dateien |*.DBF", 0)

            If db_datei <> ""

                Gosub SaveToDBF

            Else

                MessageRequester("Info", "Keine Datei gewählt !", #PB_MessageRequester_Ok)

            EndIf

        EndSelect

    EndSelect

Until Quit = 1 Or EventID = #PB_Event_CloseWindow

; Messageverwaltung wieder ausschalten
CloseMessages(fenster)
FreeMemory(0)
DestroyWindow_(fenster1)
CloseWindow(0)
CloseLibrary(#lvdll)
End
GetEintrag:
; 3 Spalten
y.l = GetSelectedLine(lhandle)
zeile.s = GetLineText(lhandle, y, @selected)
SetGadgetText(25, StringField(zeile, 1, Chr(9)))
SetGadgetText(26, StringField(zeile, 2, Chr(9)))
SetGadgetText(27, StringField(zeile, 3, Chr(9)))
Return
SetEintrag:
sp1 = GetGadgetText(25)
sp2 = GetGadgetText(26)
sp3 = GetGadgetText(27)
Spalten(0) = @sp1
Spalten(1) = @sp2
Spalten(2) = @sp3
SItem(lhandle, @Spalten(), 3)
anzahl.l = GetLines(lhandle)
SetGadgetText(21, Str(anzahl))
Return
SaveToCSV:
anzb.l = GetNeededMemory(lhandle, 1)
; voraussichtlicher Speicherverbrauch abfragen
bereich = AllocateMemory(anzb)
wbytes.l = ListviewToCsv(lhandle, bereich, 59, 0)
err.l = WriteFileQuick(@datei, bereich, 0, wbytes)

If err <> 0

    MessageRequester("Info !", Str(err) + "  Bytes" + Chr(13) + "in Datei " + datei + Chr(13) + "geschrieben !", #PB_MessageRequester_Ok)

Else

    MessageRequester("Fehler !", "Operation ist fehlgeschlagen !", #PB_MessageRequester_Ok)

EndIf

FreeMemory(0)
Return
LoadDBF:
dbspalten.l
dbzeilen.l

If OpenFile(1, datei2)

    flen = Lof(1)
    CloseFile(1)

EndIf

If flen > 0

    bereich = AllocateMemory(flen)

EndIf

err.l = ReadFileQuick(@datei2, bereich, 0, flen)

If err <> 0

    If GetLines(lhandle) > 0

        r.l = DeleteAllItems(lhandle)

    EndIf

    anz.l = DbfToCsv(bereich, flen, @dbspalten, @dbzeilen, 1)
    CsvToListview(lhandle, bereich, anz, 3)
    SetGadgetText(21, Str(dbzeilen))
    SetIndex(dbzeilen)

Else

    MessageRequester("Info", "Konnte Datei nicht laden !", #PB_MessageRequester_Ok)

EndIf

FreeMemory(0)
Return
LoadCSV:

If OpenFile(1, datei)

    flen = Lof(1)
    CloseFile(1)

EndIf

If flen > 0

    bereich = AllocateMemory(flen)

EndIf

err.l = ReadFileQuick(@datei, bereich, 0, flen)

If err <> 0

    If GetLines(lhandle) > 0

        r.l = DeleteAllItems(lhandle)

    EndIf

    err = CsvToListview(lhandle, bereich, flen, 3)
    anzahl.l = GetLines(lhandle)
    SetGadgetText(21, Str(anzahl))

Else

    MessageRequester("Info", "Konnte Datei nicht laden !", #PB_MessageRequester_Ok)

EndIf

FreeMemory(0)
Return
SaveToDBF:
nb.l = GetNeededMemory(lhandle, 1)
; verfügbarer Platz ermitteln und Speicher allocieren
;            ACHTUNG  !!!
; da GetNeededMemory() den dBase Header nicht berücksichtigt,
; muß diese Bytezahl manuell dazugerechnet werden.
; die Zahl 4260 ist die max. Zahl an Bytes, die ein
; DBF - Header enthalten kann.
; Der erste Teil des DBF Headers ist normalerweise 32 Byte
; groß. Da hier außer Bytes auch 2 Words und 1 Long gespeichert
; sind (rechne mal 4 Btes für jedes), mache ich mal 36 daraus.
; Dann kommen max. 128 Felder mit einer Feldbeschreibung von
; 32 Bytes + 1 Byte (0DH) als Ende - Markierung.
; somit wäre das 36 + (128 * 33) = 4260 .
; Also geizen wir nicht und machen 5000 Bytes dazu
; So ist auf jeden Fall genug Speicher reserviert.
nb = nb + 5000
bereich = AllocateMemory(nb)
wbytes.l = ListviewToDbf(lhandle, bereich, nb, 0)
err.l = WriteFileQuick(@db_datei, bereich, 0, wbytes)

If err <> 0

    MessageRequester("Info !", Str(err) + "  Bytes" + Chr(13) + "in Datei " + db_datei + Chr(13) + "geschrieben !", #PB_MessageRequester_OK)

Else

    MessageRequester("Fehler !", "Operation ist fehlgeschlagen !", #PB_MessageRequester_OK)<
EndIf FreeMemory(0) Retour
 
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.
03.11.2006  
 



Tut mir Leid, mais c'est ne...aucune PB Code, c'est Spaghetti

Wozu globale Variablen, si Du gar aucun Proceduren verwendest. et pourquoi verwendest Du aucun
 
03.11.2006  
 




H.Brill
Heut mach ego aussi anders. qui Beispielcodes J'ai eu avant längerer Zeit
la fois geschrieben. voulais arrêt seulement la fois sur qui Schnelle aider, avec cela il es zum
courir bringt. peux sich oui chacun selber zusammenbasteln.

mais pouvoir oui nix. Werde künftig rien plus écrivons.
 
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.
03.11.2006  
 



[quote-part:d7a00e7ae6]mais pouvoir oui nix. Werde künftig rien plus écrivons.[/quote-part:d7a00e7ae6]
cela darfst du pas so verbissen voyons - ici wird manchesmal quelqu'un platt gemacht, qui seulement aider voulais - Im Grunde sommes es alle liebe les gens et weil es les gens sommes, est-ce que vous avez aussi ses Macken nobody is perfect
si dir alors wieder la fois pour aider zumute ist, ensuite tu es - mir hat ici aussi déjà mancher geholfen
 
03.11.2006  
 



[quote-part:d7dc5bb2e7=H.Brill]
mais pouvoir oui nix. Werde künftig rien plus écrivons.[/quote-part:d7dc5bb2e7]
dois doch pas juste qui beleidigt paté de foie spielen
voulais seulement vermeiden cela diejenigen, qui PB pas connaître, une schlechten impression gewinnen
 
03.11.2006  
 




Frank
Abbing
[quote-part:d4d4597af7] Heut mach ego aussi anders. qui Beispielcodes J'ai eu avant längerer Zeit
la fois geschrieben. voulais arrêt seulement la fois sur qui Schnelle aider, avec cela il es zum
courir bringt. peux sich oui chacun selber zusammenbasteln.

mais pouvoir oui nix. Werde künftig rien plus écrivons. [/quote-part:d4d4597af7]
Heinz, seh cela s'il te plaît pas so eng. qui Thomas ist vite avec ner grossen Klappe dabei, mais est nix Neues.
j'étais très froh, dass du mir autrefois qui Codes zur Disposition gestellt la hâte. et immerhin la hâte du es doch bestens zum courir gebracht.
et pour mich sieht qui Code aufgeräumt aus - devrait la fois mon Assemblercodes voyons.
 
03.11.2006  
 



 
- page 2 -


Salut,
irgendwie merke je doch le moi ici im falschen Forum suis. je hatte angenommen, Frank hätte den Beispielcode erstellt. Daher erstmal merci à Heinz pour sa travail, si bien que on zumindest une ersten impression sur den Einsatz qui Listview.dll gewinnt. si Spaghetti-Code ou bien pas, ist glaube je, vollkommen uninteressant. le principal on hat erstmal un Beispiel et erspart sich dadurch Zeit. comment on selber programmiert liegt à einem selber. je selber avec den den Gosub´s grand geworden. cela étions encore qui Zeiten de Commondire C64 et Schneider CPC. là kannte on prozedurale Programmation encore pas. après kam qui objektorientierte Programmation en supplément qui sich im Extrem dans C++ wiederfindet. Comme je le disais, es venez toujours puis à, quand on avec Purebasic anfängt et aus quel Programiererlinie on vient. c'est pourquoi sollte on pas rouspéter mais überhaupt froh son, cela quelqu'un einem anderen weiterhilft. aussi si einer z.B. pas richtig écrivons peux sur Grund irgendwelcher Erkrankungen ou bien Mängel, so ist überhaupt anzuerkennen, cela so quelqu'un, trotz des Wissens cet Mangels dans un Forum écrit et sogar versucht un eigenes Forum aufzubauen.Hut ab. si ensuite bestimmte gens sich ensuite par-dessus lustig faire, ist cela äußert tant pis.
Ok. on sollte ici mais pas cela Thema plus behandeln mais und dir ici um un Problem.

cela konnte je zwischenzeitlich selber lösen. Heinz hat cela Framegadget herausgenommen, dadurch venez es maintenant zur sofortigen Anzeige des vider Gadgets. quoi à cette Stelle peut-être. gar pas wünschenswert wäre. cela Gadget sollte sich pour dem inviter qui données montrer. oui c'est ca cet Problem hatte Heinz aussi im Purebasicforum posté. qui Solution habe je réellement ici im Forum trouvé.
Pour dem inviter qui données doit cet la ligne avoir lieu:
SendMessage_(lhandle,4138,-1,0) ;LVM_UPDATE
ensuite erscheinen qui données. jusqu'à dahin bleibt cela Listview-Gadget blass. je findet, so ist cela Verhalten des Gadgets korrekt. Es soll sich oui seulement montrer, si données vorhanden sommes.

merci pour qui Posts, avec cela sollte cet Thema abgeschlossen son.
 
05.11.2006  
 



eh bien - und dir aussi encore anders!

Du könntest sur cela framegadged (je ne sais pas wirklich quoi c'est comme non-pbler) verzichten indem Du dem LV auparavant un sendmessage (listviewhandle,11,0,0) sendest, (schaltet ab cela es sich zeichnet) et après un sendmessage (listviewhandle,11,1,0).

avec einem invalidaterect (listviewhandle,0,0), redrawwindow (listviewhandle) sollte es ensuite getan son.

Somit devrait sogar cela Hinzufügen qui Elemente deutlich plus rapide ablaufen.
 
05.11.2006  
 




Frank
Abbing
c'est unnötig, iF. Listview.dlls CreateListview() sendet bereits Message 11 (0) et ShowListview() wird qui Message wieder aufgehoben (1). Alle Funktionen, qui entre liegen, peut cela Listview aufbauen, sans dass es ständig aktualisiert wird.
avec LVM_UPDATE (4138) wird un Listview gezwungen, sich einmal récente aufzubauen et c'est aussi oui c'est ca qui pour vorgesehene Message. et sonst aucun.

je melde mich domain soir, Fred.
 
05.11.2006  
 



bien konnte je oui pas savons.

[quote-part:46fe2d090d]et sonst aucun.[/quote-part:46fe2d090d]
bien sûr allez redrawwindow.
 
05.11.2006  
 




Fred
Matthiesen
Anstatt den SendMessage-Befehl trop prendre peux on folgenden Befehl benutzen:
KompilierenMarqueSéparation
Hat qui gleiche Wirkung et ist justement pour Débutant verständlicher, weil il cette Befehl dans qui Aider nachlesen peux
 
SUSE 10.3 / Listview.dll
04.04.2007  
 




Frank
Abbing
qui benutzt qui Message aussi. Ab qui prochain Version sommes alle Funktionen dans qui Inc-Dossier fest dans qui Dll eigebaut (aussi avec Beschreibung) et stehen là aussi anderen Sprachen zur Disposition.
 
04.04.2007  
 




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

2.349 Views

Untitledvor 0 min.
Peter Max Müller29.10.2017
Michael W.04.07.2016
Bernd Lies22.08.2013

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