Français
Forum

Listview1.pb Beispieldatei Darstellungsfehler

 

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  
 



[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.
 
03.11.2006  
 




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.
 
03.11.2006  
 



PB hat un Messagehandling? oO
 
03.11.2006  
 



[quote-part:fbe1ea6c86=iF]PB hat un Messagehandling? oO[/quote-part:fbe1ea6c86]là braucht on aucun on.dll
 
03.11.2006  
 




Frank
Abbing
Hab je n'en sais rien de PB.
 
03.11.2006  
 




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  
 




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.366 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