| Forum |  |  |  |  |  |  |  |  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
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  | | [tb]minimalbeispiel[/tb] PS: qui Dateiendung quelle Du im Thema angibst pourrait sur un syntaktisches Problem hinweisen là XProfanQuelltexte plutôt avec .prf ou bien .xprf ou bien .inc enden - statt avec qui PureBasicDateiendung .pb.
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Frank
 Abbing
 | | là cela Problem avec Profan pas besteht, schliesse je une faute qui Listview.dll aus. qui (avec den Dll-Funktionen) erstellten Listviews sommes entier normale Windowscontrols (SYSLISTVIEW32), sodass qui Dll ici aussi keinen faute faire peux. je tippe là plutôt sur PBs Messagehandling et une verschluckte WM_PAINT-Message. Im Zweifelsfall sollte tout autor que voici aider: 
 SendMessage(listviewhandle&,4138,-1,0)
 
 Musst encore pour PB mise en œuvre volonté. s'il te plaît la fois testen.
 | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  | | PB hat un Messagehandling? oO | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  | | [quote-part:fbe1ea6c86=iF]PB hat un Messagehandling? oO[/quote-part:fbe1ea6c86]là braucht  on aucun on.dll  | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  Frank
 Abbing
 | | Hab je n'en sais rien de PB. | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  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 + FREEPROFANWir 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
  | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  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 + FREEPROFANWir 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
      | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  | | [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
  | 
 |  |  |  |  |  |  |  |  | 
 
 
 |  |  |  |  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.
  | 
 |  |  |  |  |  |  |  |  | 
 
 
 | 
 
 répondre| Options du sujet | 3.650 Views | 
 Themeninformationencet Thema hat 6 participant: |