Español
Foro

Listview1.pb Beispieldatei Darstellungsfehler

 
- Página 1 -



Fred
Matthiesen
¡Hola y bueno Tag zusammen.
Yo begrüße primero todos Miembros.
Probiere el Listviewdll de y mußte determinar, el Yo una Problema no en el Griff bekomme.
Wenn el Beispieldatei comenzó se, es el Listview primero dunkel. Soweit ok. Jetzt lade Yo el DBF-Expediente y él zeigt oben links auch el número el eingelesenen Datensätze a. --- Aber---- el Listvier restos dunkel. Ein Linksklick con ratón: Fehlanzeige. Nun con el rechten Botón del ratón: uiii, joh, el Listview es sichtbar. Nun aber befinde Yo mich ya en el Editiermodus uno Items. Es para el Función korrekt.
Nun, Yo erwarte, el después de el Einlesen el DBF-Expediente se el Listview con seinen Einträgen zeigt.
Welcher Befehl muß después de el Einlesen tener lugar, así se el Listview zeigt.

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



 
- Página 1 -



H.Brill
¡Hola,
meinste PureBasic 4.0 ?
El Beispielcodes son todavía para el Versión 3.94 geschrieben.
Mit Versión 4.0 brauchste z.B. el Frame3DGadget no mehr.
Sombrero damals con el 3.94 no anders geklappt.

Hab dir veces el erste Ejemplo en Versión 4.0 umgeschrieben.
Ist ahora no ausführlich getestet, hoffe aber, daß lo en allen Teilen
funktioniert.
KompilierenMarcaSeparación
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) Volver
 
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 me Leid, aber el es kein PB Code, el es Spaghetti

Wozu globale Variables, si gar no Proceduren verwendest. Und por qué verwendest Usted no
 
03.11.2006  
 




H.Brill
Heut mach ego auch anders. El Beispielcodes Tuve antes längerer Tiempo
veces geschrieben. Wollte sólo sólo veces en el Schnelle helfen, así él lo para
Laufen bringt. Kann se sí cada selber zusammenbasteln.

Aber macht sí nix. Werde künftig nichts mehr escribir.
 
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:d7a00e7ae6]Aber macht sí nix. Werde künftig nichts mehr escribir.[/quote:d7a00e7ae6]
Das darfst du no así verbissen sehen - hier se manchesmal alguien platt gemacht, el sólo helfen quería - Im Grunde son lo todos liebe Menschen y porque lo Menschen son, haben ellos auch ihre Macken nobody is perfect
Wenn dir also otra vez veces después de Helfen zumute es, entonces tu lo - me ha hier auch ya mancher geholfen
 
03.11.2006  
 



[quote:d7dc5bb2e7=H.Brill]
Aber macht sí nix. Werde künftig nichts mehr escribir.[/quote:d7dc5bb2e7]
Mußt doch no es igual el beleidigt Leberwurst spielen
Wollte sólo vermeiden el diejenigen, el PB no kennen, una schlechten Eindruck gewinnen
 
03.11.2006  
 




Frank
Abbing
[quote:d4d4597af7] Heut mach ego auch anders. El Beispielcodes Tuve antes längerer Tiempo
veces geschrieben. Wollte sólo sólo veces en el Schnelle helfen, así él lo para
Laufen bringt. Kann se sí cada selber zusammenbasteln.

Aber macht sí nix. Werde künftig nichts mehr escribir. [/quote:d4d4597af7]
Heinz, seh el Por favor, no así eng. Der Thomas es rápidamente con ner grossen Klappe esta, es doch nix Neues.
Yo war muy froh, dass du me damals el Codes disponible gestellt hast. Und immerhin hast du lo doch bestens para Laufen gebracht.
Und para mich sieht el Code aufgeräumt de - solltest veces mi Assemblercodes sehen.
 
03.11.2006  
 



 
- Página 2 -


¡Hola,
irgendwie merke Todavía el Yo hier en el falschen Foro bin. Tuve angenommen, Franco hätte el Beispielcode erstellt. Daher primero danke a Heinz para seine Arbeit, así daß uno zumindest una ersten Eindruck encima el Einsatz el Listview.dll gewinnt. Ob Spaghetti-Code oder no, es glaube Yo, vollkommen uninteressant. Hauptsache uno ha primero una Ejemplo y erspart se dadurch Tiempo. Como uno selber programmiert liegt a una selber. Yo selber con el el Gosub´s groß geworden. Das waren todavía el Veces de Commondire C64 y Schneider CPC. Como kannte uno prozedurale Programación todavía no. Danach kam el objektorientierte Programación dazu que en el Extrem en C++ wiederfindet. Como ya he dicho, lo kommt siempre darauf a, wann uno con Purebasic anfängt y de welcher Programiererlinie uno kommt. Deshalb debería uno no meckern pero überhaupt froh ser, el alguien una otro weiterhilft. Auch si uno z.B. no correcto escribir podrá, a Grund irgendwelcher Erkrankungen oder Mängel, así es überhaupt anzuerkennen, el así alguien, trotz des Wissens dieses Mangels en una Foro schreibt y incluso intenta una propio Foro aufzubauen.Hut de. Wenn entonces cierto Personas se entonces darüber lustig hacer, es el äußert schade.
Ok. Man debería hier pero no el Thema más behandeln pero lo va hier en una Problema.

Das podría Yo zwischenzeitlich selber lösen. Heinz ha el Framegadget herausgenommen, dadurch kommt lo ahora a sofortigen Anzeige des leeren Gadgets. Was a dieser Punto evtl. nada wünschenswert wäre. Das Gadget debería se después de el Einladen el Daten zeigen. Exactamente dieses Problema hatte Heinz auch en el Purebasicforum Nuevo. El Solución Yo tatsächlich hier en el Foro gefunden.
Nach el Einladen el Daten muß esta Línea tener lugar:
SendMessage_(lhandle,4138,-1,0) ;LVM_UPDATE
Dann erscheinen el Daten. Bis dahin restos Listview-Gadget blass. Yo findet, así es el Comportamiento des Gadgets korrekt. Lo se se sí sólo zeigen, si Daten disponible son.

Gracias para el Beiträge, así debería dieses Thema abgeschlossen ser.
 
05.11.2006  
 



Nun - lo va auch todavía anders!

Usted könntest el framegadged (Yo weiß no wirklich qué el es como non-pbler) verzichten indem Usted el LV vorher una sendmessage (listviewhandle,11,0,0) sendest, (schaltet de el lo características) y danach una sendmessage (listviewhandle,11,1,0).

con un invalidaterect (listviewhandle,0,0), redrawwindow (listviewhandle) debería lo entonces getan ser.

Somit debería incluso el Hinzufügen el Elemente deutlich más rápido ablaufen.
 
05.11.2006  
 




Frank
Abbing
Es unnötig, IF. Listview.dlls CreateListview() envía ya Message 11 (0) y ShowListview() se el Message otra vez aufgehoben (1). Alle Características, el dazwischen mentira, puede el Listview aufbauen, sin dass lo ständig aktualisiert se.
Mit LVM_UPDATE (4138) se una Listview gezwungen, se una vez neu aufzubauen y el es auch genau el dafür vorgesehene Message. Und sonst no.

Yo melde mich morgen abend, Fred.
 
05.11.2006  
 



Gut podría Yo sí no wissen.

[quote:46fe2d090d]Und sonst no.[/quote:46fe2d090d]
Klar va redrawwindow.
 
05.11.2006  
 




Fred
Matthiesen
Anstatt el SendMessage-Befehl a nehmen puede ser folgenden Befehl benutzen:
KompilierenMarcaSeparación
Sombrero el gleiche Wirkung y es gerade para Principiante verständlicher, porque él esta Befehl en el Ayuda nachlesen kann
 
SUSE 10.3 / Listview.dll
04.04.2007  
 




Frank
Abbing
Der benutzt el Message auch. Ab el nächsten Versión son todos Características en el Inc-Expediente fest en el Dll eigebaut (auch con Descripción) y posición hay auch otro Idiomas.
 
04.04.2007  
 




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

2.389 Views

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

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