Foro | | | | 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 |
| | | | |
| | | [tb]minimalbeispiel[/tb] PS: El Dateiendung welche Usted en el Thema angibst podría en una syntaktisches Problema hinweisen como XProfanQuelltexte más con .prf oder .xprf oder .inc enden - en lugar de con el PureBasicDateiendung .pb. |
| | | | |
| | Frank Abbing | Como el problema con Profano no besteht, schliesse Soy un Fehler el Listview.dll de. El (con el Dll-Características) erstellten Listviews son bastante normale Windowscontrols (SYSLISTVIEW32), sodass el Dll hier auch no Fehler hacer kann. Yo tippe como más en PBs Messagehandling y una verschluckte WM_PAINT-Message. Im Zweifelsfall debería por lo tanto que aquí helfen:
SendMessage(listviewhandle&,4138,-1,0)
Musst todavía después de PB umgesetzt voluntad. Bitte veces testen. |
| | | | |
| | | PB ha una Messagehandling? oO |
| | | | |
| | | [quote:fbe1ea6c86=iF]PB ha una Messagehandling? oO[/quote:fbe1ea6c86]Como braucht uno no on.dll |
| | | | |
| | Frank Abbing | | | | | |
| | 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ónIncludeFile "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 |
| | | | |
| | 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 |
| | | | |
| | | [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 |
| | | | |
| | 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. |
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 6 subscriber: |