Die Software ist im frühen Stadium. Die Verwendung erfolgt auf
Eigenes Risiko. Ich übernehme keine Haftung.
Die Software ist Freeware
Es sind keine zusätzlichen DLL oder Laufzeitbibliotheken erforderlich.
Der Ordner winFBGui enthält alle notwendigen Dateien, für
jedes Control eine gleichen Namens. Zusammengefasst sind lediglich
Basisdaten die vererbt werden und Objekte, die von mehreren Controls
genutzt werden.
Dieser Ordner muss nach FreeBasic\inc\ kopiert werden.
Enthalten sind auch winFBgui.bi und winFBgui2.bi.
winFBgui.bi : Sie sollte entweder in
FreeBasic\inc\ stehen oder alternativ kann diese Datei in den
Projekt-Ordner kopiert werden( nicht beides !) und nicht benötigtes kann
mit Hochkomma vom einbinden ausgeschlossen werden um die Größe der Exe
zu reduzieren. Die Programmdatei enthält dann nur : #Include
"winFBgui.bi"
in der ersten Zeile.
winFBgui2.bi : Sie sollte in
FreeBasic\inc\ stehen.
Alle #Include ControlDatei.bi sind in #ifdef - #EndIf eingeschlossen. Beispiel:
' Es werden nur die hier Angegebenen Obj. eingebunden
#Define F_Panel
#Define F_ToolBtn
#Define F_RichEdit
#Define F_Combobox
#Define F_Comdlg ' enthält FOpenFile,FSaveFile,FPrintDlg und getColor (das ist die einzige Abweichung von Symbolname=ControlName mit Unterstrich nach dem F)
#Define F_Groupbox
#Include "winFBgui2.bi "
Dim Shared As FForm form1
Dim Shared As FPanel panel1,panel2
Dim Shared As FToolBtn tbBold,tbItalic,tbUnder,tbleft,tbcenter,tbright,tbColor,tbOpen,tbNeu
Dim Shared As FRichEdit REdit
Dim Shared As FCombobox combo1,combo2
Dim Shared As FOpenFile fopen
Dim Shared As FSaveFile fsave
Dim Shared As FPrintDlg prn1
Dim Shared As FGroupbox line1,line2,line3
......... usw.
FBForm.bi (enthält auch FMenu) und FBControlBase.bi werden immer eingebunden.
Die Symbol die definiert werden müssen um das betreffende Control einzubinden haben den gleichen Namen wie das Control , nur zusätzlich den Unterstrich nach dem F ( siehe Beispiel oben)
Welche der beiden Möglichkeiten verwendet wird, muss Jeder für sich selbst entscheiden!
In mehreren Objekten werden Handles z.B. von Brush oder HDC
benötigt, die im Destructor gelöscht werden. Alle Kind-Objekte die mit
Dim Shared as ... dimensioniert werden rufen des Destructor automatisch
auf. Diejenigen die kein eigenes HWND haben wie FCanvas, FImage,
FBitmap müssen am Ende den Destructor aufrufen. Das erfolgt entweder
über Delete oder object.Destructor. Beispiel:
...
form1.Show
delete image1 ' Wenn Dim Shared as Fimage Ptr image1
Canvas1.Destructor ' Wenn Dim Shared as FCanvas Canvas1
ExitProcess(0) ' ExitProcess entfernt u.a. vom Programm geladene DLL
end
Eine Resource-Datei (.rc) muss zur Verwendung in diesen Control
dieses Format haben:
exit BITMAP DISCARDABLE "exit.bmp"
app ICON DISCARDABLE "app1.ico"
jpgbld1 RCDATA DISCARDABLE "166.jpg"
pngbld1 RCDATA DISCARDABLE "166.png"
Die Funktionen zum laden von Resourcen verarbeiten nur Namen keine ID
|
Dim Shared As FForm form1 ' Form Dim Shared As FPanel panel1 ' Panel Dim Shared As FButton btn1,btn2 ' Button ' Form als Dialog Dim Shared As FForm Ptr form2 ' Form Ptr Dim Shared As FButton Ptr btnOk,btnCa ' Button Ptr ' --- Dialog-Events --- Sub btnCa_Click form2->FormClose(0) End Sub Sub btnOk_Click form2->FormClose(1) End Sub ' --- Form Events --- Sub btn1_Click form1.FormClose End Sub ' --- Dialog --- Sub btn2_Click form2 = New FForm btnOk = New FButton btnCa = New FButton form2->Create("DialogBox",10,10,300,200) form2->Border = 2 ' <- Wichtig, 2 ist DialogFrame (Toporder) btnOk->Create(form2->Handle,"OK",30,100,100,26) btnOk->onClick = @btnOk_Click btnCa->Create(form2->Handle,"Abbruch",160,100,100,26) btnCa->onClick = @btnCa_Click Dim As Integer iRet = form2->Show ' Form darstellen If iRet Then MessageBox(0,"Mit OK Beendet","Info",MB_OK) Else MessageBox(0,"Mit Abbruch Beendet","Info",MB_OK) EndIf Delete form2 ' Objecte löschen Delete btnOK Delete btnCa End Sub Sub form1_Size(ByVal w As Integer,ByVal h As Integer,ByVal flag As Integer) panel1.Width = w btn2.Left = (w-200) / 3 btn1.Left = btn2.Left + 100 + ((w-200) / 3) End Sub '------------------------------------------------------------------ form1.create("TestDialog",10,10,400,300) form1.Color = &HFFEEBB form1.onSize=@form1_Size panel1.Create(form1.Handle,1,10,form1.ClientWidth,140) panel1.Color = &HFFFFFF panel1.Caption = "Hier weiter Steuerelemente " btn1.Create(form1.Handle,"Exit",240,200,100,26) btn1.Color = &HFFEEBB btn1.onClick = @btn1_Click btn2.Create(form1.Handle,"DialogForm",70,200,100,26) btn2.Color = &HFFEEBB btn2.onClick = @btn2_Click form1.Show ExitProcess(0) End |