Allgemeine Hinweise

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.

Benutzung:

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!

Speicher bereinigen:

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

Verwendung von Resource:

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

 

Zwei Möglichkeiten die Objekte zu erstellen und zu benutzen :
      
Dim Shared As FForm form1
Dim Shared As FPanel panel1,panel2
Dim Shared As FButton btn1,btn2
'-------------------------------------------
sub btn1_onClick
' OK wurde geklickt'
end sub

sub btn2_onClick
form1.formClose
end sub
'-------------------------------------------
form1.Create("Testform",0,0,870,720)
Form1.Center
Form1.Color = &Hefcb90

panel1.Create(form1.Handle,100,40,860,550)
panel1.Color = RGBA(150,180,210,0)

panel2.Create(form1.Handle,0,690,866,22)
panel2.Color = RGBA(210,210,210,0)

btn1.Create(form1.Handle,"OK",5,160,90,36)
btn1.Color = RGBA(150,180,210,0)
btn1.onClick = @btn1_onClick

btn2.Create(form1.Handle,"Abbruch",5,196,90,36)
btn2.Color = RGBA(250,190,210,0)
btn2.onClick = @btn2_onClick
'-------------------------------------------
' Initialisierungen Var, array usw. hier
'-------------------------------------------
form1.Show
ExitProcess(0)
End

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