Seite 1 von 2
Wie Lib, exp, dll in PB einbinden? (eGrid Erweiterung)
Verfasst: 26.06.2007 22:43
von Kurzer
Hallo,
Auf der Suche nach einem editierbaren GridGadget bin ich über das eGrid-light gestolpert.
Ich würde es gern ausprobieren, weiß aber nicht wie ich diese Erweiterung in PB einbinde.
Die Sache mit den userlibs leuchtet mir ein, aber eGrid liegt als .dll, .exp und .lib vor. Ein Dateiheader-Vergleich mit bereits installierten PB Userlibs läßt mich vermuten, daß es sich bei allen 3 Varianten nicht um PB Userlibs handelt.
Ähm, help, wo müssen die Daten hinkopiert werden, damit ich die eGrid-Funktionen in PB nutzen kann?
Markus
Verfasst: 26.06.2007 22:52
von ts-soft
Du brauchst nur die DLL, kannst aber die DLL-Funktionen von der lib
importieren. Aber wenn Du damit nicht klarkommst, nutzte die DLL eben
direkt. Die *.exp ist nutzlos für Dich.
Verfasst: 26.06.2007 23:10
von Kurzer
Okay, nur was muß ich mit den Dateien eGrid-light_ansi.dll und eGrid-light_ansi.lib tun, damit PB Notiz davon nimmt und ich die Befehle der eGrid Hilfe im Source nutzen kann?
Sorry, is mir echt peinlich, aber mit Dlls habe ich irgendwie noch nie gearbeitet.
Markus
Verfasst: 26.06.2007 23:10
von edel
Da ist doch ne Demo dabei , oder nicht ?
Verfasst: 26.06.2007 23:21
von Kurzer
edel hat geschrieben:Da ist doch ne Demo dabei , oder nicht ?
Edel, Du hast Recht.
Ich ging davon aus, daß man die dll vorher in ein PB-Verzeichnis kopieren muß - also die eGrid-Erweiterung "installieren" muß.
Es reicht aber scheinbar, wenn ich die Dateien in das Projektverzeichnis kopiere. Danke!
Allerdings includiert die eGrid Demo noch eine PB Datei, in der einige Festlegungen vorgenommen werden (s.u.)
Wie läuft das denn, wenn man eine PB-fremde Dll nutzen möchte?
Da gibt es dann ja keinen Deklarationscode für PB?
Code: Alles auswählen
;******************************************************************************************
;'egrid' editable grid control. By Stephen Rodriguez.
;******************************************************************************************
CompilerIf #PB_Compiler_Unicode
Import "egrid-lite_unicode.lib"
CompilerElse
Import "egrid-lite_ansi.lib"
CompilerEndIf
egrid_AddColumn(id.l, column.l, text.s, width.l) As "_egrid_AddColumn@16"
egrid_AddRows(id.l,row.l, numrows.l) As "_egrid_AddRows@12"
egrid_AppendCells(id.l,column.l) As "_egrid_AppendCells@8"
egrid_ClearRows(id.l) As "_egrid_ClearRows@4"
egrid_CopyCells(id.l,column.l, row.l, xcols.l, yrows.l) As "_egrid_CopyCells@20"
egrid_CreateGrid(id.l,x, y, width, height, rowheight, windowstyles, furtherstyles, hWndParent) As "_egrid_CreateGrid@36"
[...usw...]
egrid_x(id.l) As "_egrid_x@4"
egrid_y(id.l) As "_egrid_y@4"
EndImport
;******************************************************************************************
;'egrid' editable grid control. By Stephen Rodriguez.
;******************************************************************************************
Enumeration ;Egrid styles.
#egrid_NoHeaderButtons=32768
#egrid_HeaderDragDrop=268435456
#egrid_AlwaysShowSelection = 8
EndEnumeration
Enumeration ;egrid extended styles.
#egrid_ResizeColumnsFalse=0 ;Default.
#egrid_ResizeColumnsTrue=1
#egrid_StandardHeader=2 ;Default.
#egrid_CustomHeader=4
#egrid_SingleLineText=8 ;Default.
#egrid_MultiLineText=16
#egrid_VirtualGrid=32 ;Not used at present.
#egrid_GridLines=64
EndEnumeration
Enumeration ;Options which can be set for an individual egrid.
#egrid_HeaderBorderColour=1
#egrid_SelectionBorderColour
#egrid_SelectionBorderWidth
#egrid_SelectedCellsColour
#egrid_GridLineColour
#egrid_EraseColour
EndEnumeration
Verfasst: 26.06.2007 23:22
von ts-soft
Hab mir mal die lite geladen.
Du benötigst die egrid.pbi, die dll und lib, für das was du erstellt, also unicode
oder ansi im namen, oder alle
In der Hilfe findeste alle funktionen, genauso wie in der ImportSektion der
egrid.pbi.
Und ein demo ist auch bei. Mit Deiner Anwendung mußte nur die DLL ausliefern.
Damit solltest Du eigentlich klarkommen können
// Nachtrag wegen Überschneidung:
Der Importteil ist die deklaration, einfach die Funktionen nutzen, nachdem
Du die egrid.pbi mit XInclude eingebunden hast.
Verfasst: 26.06.2007 23:37
von a14xerus
@Kurzer
>Wie läuft das denn, wenn man eine PB-fremde Dll nutzen möchte?
>Da gibt es dann ja keinen Deklarationscode für PB?
Du kannst ja jede dll mit PB ansprechen.
Und bei jeder DLL sollte auch eine Übersicht der Funktionen und deren Parameter angegeben sein.
dann benutzt du einfach CallFunction(...) (sieh dir dazu auch das Kapitel in der PB Hilfe an)
Bei komplexeren DLLs muss du dann leider auch die Konstantendeklaration und die Strukturen selber schreiben.
Verfasst: 26.06.2007 23:38
von Kurzer
Danke Euch! So langsam schnagglts bei mir.
Habe mir jetzt noch mal die Hilfe zu Import und EndIport angesehen.
PB kommt einem da ja richtig entgegen (wobei ich allerdings keinen Vergleich zu anderen Sprachen habe was die Nutzung von Dlls angeht)
Verfasst: 26.06.2007 23:41
von a14xerus
Ja solange einem die lib Datei zur Verfügung steht wird einem da schon ein bisschen was abgenommen.
Verfasst: 26.06.2007 23:59
von ts-soft
Import aus lib extrahieren geht auch hiermit:
http://www.purebasic.fr/english/viewtop ... b2pbimport
Dann haste Deine Import-Datei, nur noch ein bissel nacharbeiten.