 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 04.03.2014, 14:08 Titel: GUI Vorschläge?! |
|
|
Gibt es ausser den üblichen 'Verdächtigen' noch einfach zu verwendende GUI Libs oder in FreeBASIC geschriebene GUI Elemente?
WinAPI ist ein wenig zu kompliziert, speziell die 'update' Routinen, wx und gtk sind auch nicht sehr viel besser...
sGui von Mutton ist schon recht gut, könnte auf eigene Fenster verzichten, da ich im Grunde nur so was wie StringBox/InputBox einzeilig für Text und NumBoxen für Variablen benötigen würde... aber gern Windows-Like mit Markieren, Kopieren, Ausschneiden und Einfügen (würde da auch auf WinApi zurückgreifen)
Beispiel: http://www.freebasic-portal.de/porticula/windows-copypaste-text-1720.html
Zur Not müsste ich es halt selbst schreiben, aber da so was nicht mal so nebenbei geschrieben ist würde ich gern drauf verzichten  _________________
 |
|
Nach oben |
|
 |
Affemitwaffel
Anmeldungsdatum: 02.06.2011 Beiträge: 39
|
Verfasst am: 04.03.2014, 17:13 Titel: |
|
|
Ich bin im moment dabei eine "OOP-Verpackung" für wx-c zu schreiben. Du kannst dir die ja mal angucken, es fehlen allerdings noch einige Sachen.
EDIT: oops Link zum Repo vergessen: https://svn.freebasic-portal.de/svn/twrapper/ |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 04.03.2014, 18:00 Titel: |
|
|
Das sieht eigentlich schon recht vielversprechend aus... (war aber mal Zeit endlich auf 0.90.1 upzudaten
Eine Frage noch, ist es Möglich diese:
Code: |
Dim choice As TChoice
Dim choiceItems As TArrayString
choiceItems.Add ("test")
choiceItems.Add ("bla")
choiceItems.Add ("b") |
Irgendwie mit BMPs oder FBImages zu benutzen?
Wäre das einzige das mir noch fehlt, dann könnte ich das gut gebrauchen  _________________
 |
|
Nach oben |
|
 |
Lothar Schirm
Anmeldungsdatum: 24.04.2006 Beiträge: 65 Wohnort: Bayern
|
Verfasst am: 04.03.2014, 19:18 Titel: |
|
|
Das da sieht auch sehr gut aus: http://www.freebasic.net/forum/viewtopic.php?f=14&t=17058&hilit=FBGUI2. Allerdings muss man da wohl aus einer älteren FB-Version irgendwelche Bibliotheken mit übernehmen, die anscheinend neuerdings nicht mehr mitgeliefert werden.
Aber bei der Arbeit von AffemitWaffel fände ich es toll, wenn diese in den neuen WX-C Designer Eingang fände, der zur Zeit durch MOD in die wxFBE integriert wird. Wenn der so einen übersichtlichen Code erzeugen würde, täte man sich mit der Programmierung in WX-C doch wesentlich leichter als bisher.
Zuletzt bearbeitet von Lothar Schirm am 04.03.2014, 19:55, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 04.03.2014, 19:53 Titel: |
|
|
Das sieht auch sehr gut aus
Leider alles auf russisch :/ hab aber glaube schon alle wesentlichen Elemente gefunden die ich brauche wie die Image ComboBox usw
danke, werds mir mal genauer ansehen  _________________
 |
|
Nach oben |
|
 |
Lothar Schirm
Anmeldungsdatum: 24.04.2006 Beiträge: 65 Wohnort: Bayern
|
Verfasst am: 04.03.2014, 19:57 Titel: |
|
|
Auf Souceforge (auf den Link auf der ersten Seite klicken) kann man sich auch eine englische Hilfedatei herunterladen. |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 04.03.2014, 20:57 Titel: |
|
|
danke, das ist deutlich hilfreicher
aber nochmal eine frage dazu (fals einer ahnung hat) ists damit möglich so eine ComboBoxImageGadget nur mit images zu erstellen, also keine kleinen icons wie n*n sondern images von zB 400x20 zB? _________________
 |
|
Nach oben |
|
 |
Lothar Schirm
Anmeldungsdatum: 24.04.2006 Beiträge: 65 Wohnort: Bayern
|
Verfasst am: 04.03.2014, 21:03 Titel: |
|
|
Also, ich bin nur im englischen Forum drauf gestoßen, habe aber noch nicht damit gearbeitet. Es hat mich aber sehr angesprochen, weil ich auch schon viel mit PureBasic gemacht habe, dem ist es ja nachempfunden. Eigentlich stört mich nur, dass es keinen GUI Designer dazu gibt. Vielleicht wäre es aussichtsreicher, wenn du deine Frage auf der Projektseite in freebasic.net stellst? |
|
Nach oben |
|
 |
RWK
Anmeldungsdatum: 04.07.2011 Beiträge: 44
|
Verfasst am: 04.03.2014, 21:30 Titel: |
|
|
Also wenn man wirklich was unter Windows basteln will, kommt man meines Erachtens nicht um FireFly umhin.
Vielleicht bin ich auch zu sehr VB6 verdorben, aber ich klickere mir erst immer mein UI zusammen und dann bastele ich den Code zu den einzelnen Widgets ein...und mit FireFly geht das halt wirklich einfach. Und wenn ich den Code der Callbacks bearbeite sehe ich nicht den ganzen Rest an Wust der UI Generierung.
FLTK vom Joshy ist auch super...aber da tue ich mich halt noch mit einfachen Sachen recht schwer...und sei es einfach nur ein zweites Fenster zu öffnen. Und die Beispiele auf der FLTK Seite kann ich auch nicht mal so eben in FB umsetzen.
Das WX-C vom Mod verfolge ich ja auch schon eine ganze Zeit. Aber auch hier fehlt mir eindeutig die Trennung von Frame Code und den Callbacks. |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 04.03.2014, 23:12 Titel: |
|
|
FireFly fand ich eigentlich recht kompliziert... wenn hätte ich ja am liebsten so was wie bei AutoIt (lange her) das war wirklich einfach, auch das Handling im Code fand ich sehr gut
Das windows9 dingen sieht eigentlich schon ganz gut aus...
Aber scheinbar gibt es bei keiner GUI (winapi eingeschlossen) so was das ich gern hätte... eine DrowDownListe mit (Vorschau)Bildern zum auswählen... oder kann ich so was einfach nur nirgendwo finden? _________________
 |
|
Nach oben |
|
 |
Lothar Schirm
Anmeldungsdatum: 24.04.2006 Beiträge: 65 Wohnort: Bayern
|
Verfasst am: 07.03.2014, 11:44 Titel: |
|
|
RWK hat Folgendes geschrieben: | Also wenn man wirklich was unter Windows basteln will, kommt man meines Erachtens nicht um FireFly umhin.
Vielleicht bin ich auch zu sehr VB6 verdorben, aber ich klickere mir erst immer mein UI zusammen und dann bastele ich den Code zu den einzelnen Widgets ein...und mit FireFly geht das halt wirklich einfach. Und wenn ich den Code der Callbacks bearbeite sehe ich nicht den ganzen Rest an Wust der UI Generierung.
|
Da muss ich dir zustimmen. Für mich ist generell eine GUI-Bibliothek ohne GUI-Designer nur sehr eingeschränkt brauchbar, eine Bedienoberfläche "von Hand" zu codieren ist einfach zu mühsam und erfordert etliche Iterationsschritte, bis alles passt. Und da ist eigentlich das Angebot an Controls und der Bedienkomfort mit FireFly super. Man braucht auch nicht groß in Header-Dateien oder Dokumentationen herumzuwühlen, um die notwendigen Funktionen zu finden, da man nur unten in die Function Library reinklicken muss und (fast) alles hat, was man so braucht. Ich habe mich jetzt zwar auch in den WX-C Designer eingearbeitet, weil er so schönen schlanken Code erzeugt, aber er ist schon etwas minimalistisch ausgestattet, man kann mit dem Designer nur ein Fenster erzeugen, Nacharbeiten im Design sind schwierig, wenn die Codierung schon weiter fortgeschritten ist, und die Syntax von WX-C finde ich irgendwie sehr gewöhnungsbedürftig. Und statt Window9 würde ich lieber gleich PureBasic verwenden, da hat man dann auch einen Form Designer dabei.
Für unsere Linux-Freunde gibt es so was schönes wie FireFly leider nicht. Die müssen dann mit WX-C oder Glade / GTK zurecht kommen. |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 07.03.2014, 12:48 Titel: |
|
|
Naja, wie gesagt hab ich mir Firefly schon angesehen, es ist zwar ein toller designer und allgmein sehr wünschenswert aber leider konnte ich damit nicht solche comboboxen erstellen wie ich sie gerne wollte (mit vorschaubilder zur laufzeit erstellt)
mit windows9 konnte ich immerhin ein minimales beispiel zum laufen kriegen aber effektiv nutzen kann ich es leider auch nicht da jeder windowscreate über die dll geht und ich so keine WM_CREATE Message abfangen kann um weitere daten zu nutzen...
bin grad verzweifelt dabei mir ganz was eigenes auf basis von WinApi zu bauen...
WinApi und ich werden aber keine Freunde  _________________
 |
|
Nach oben |
|
 |
Lothar Schirm
Anmeldungsdatum: 24.04.2006 Beiträge: 65 Wohnort: Bayern
|
Verfasst am: 07.03.2014, 17:24 Titel: |
|
|
WinAPI mag ich auch nicht. Ein kleiner Nachteil für mich bei FireFly, dass ich den Code der Main-Datei nicht verstehe. Aber den versteht man ja bei Visual Studio auch nicht. Ich wünsche Dir bei deinen Bemühungen viel Erfolg! |
|
Nach oben |
|
 |
arduno
Anmeldungsdatum: 12.05.2011 Beiträge: 252
|
|
Nach oben |
|
 |
Lothar Schirm
Anmeldungsdatum: 24.04.2006 Beiträge: 65 Wohnort: Bayern
|
Verfasst am: 10.03.2014, 20:07 Titel: |
|
|
Link zu allen Files von window9 einschließlich englischer Hilfe: http://sourceforge.net/projects/guiwindow9/files/
Ich habe jetzt doch mal zwei kleine Programme mit window9 gemacht. Geht super! Nicht allzu komplexe GUIs kriegt man auch ohne GUI Designer ganz gut hin, sonst muss man eben ein bisschen fummeln. Und die einfache Syntax macht einfach Spaß.  |
|
Nach oben |
|
 |
Eternal_pain

Anmeldungsdatum: 08.08.2006 Beiträge: 1783 Wohnort: BW/KA
|
Verfasst am: 12.03.2014, 19:02 Titel: |
|
|
...
Lothar Schirm hat Folgendes geschrieben: | Auf Souceforge (auf den Link auf der ersten Seite klicken) kann man sich auch eine englische Hilfedatei herunterladen. |
Aller guten Dinge sind 3
War aber sehr hilfreich, das es den Source auch gibt hatte ich wohl übersehen...
da ich grad mit den Images am basteln war hab ich direkt einen Windows Image Loader über die GDIPlus funktion gebastelt
Direkt Jpg, Png, Gif, Bmp, Ico, Tif Laden, als FBImage oder HBITMAP oder halt GPBITMAP
Code: | 'Jpg, Png, Gif, Bmp, Ico, Tif
#Include once "windows.bi"
#include once "win\gdiplus.bi"
Sub Win_LoadImage_Init CONSTRUCTOR
Using GDIPLUS
Dim as ULONG_PTR ControlPTR
Dim as GDIPLUSSTARTUPINPUT GDIPLUSInit
GDIPLUSInit.GdiplusVersion = 1
If (GDIPLUSSTARTUP(@ControlPTR, @GDIPLUSInit, NULL) <> 0) THEN
?"Fehler"
End If
End Sub
Declare Function LoadFBImage(byval Filename as String) as any ptr
Declare Function LoadGDIImage(byval Filename as String) as any ptr
Declare Function LoadWINImage(byval Filename as String, byval BackColor as Integer = &h000000) as HBITMAP
Function LoadFBImage(byval Filename as String) as any ptr
Using GDIPLUS
Dim as GPBITMAP ptr Image = LoadGDIImage(Filename)
Dim as any ptr FBImage, pixels
Dim as Integer w, h, pitch
Dim as BitmapData ImageData
Dim as UInteger ptr row
Dim as RECT rc
If Image = 0 Then Return 0
GdipGetImageWidth(Image, @w)
GdipGetImageHeight(Image, @h)
rc = Type(0, 0, w-1, h-1)
FBImage = ImageCreate(w,h)
ImageInfo FBImage, ,,, pitch, pixels
GdipBitmapLockBits(Image,Cast(Any Ptr,@rc),ImageLockModeRead ,PixelFormat32bppARGB, @ImageData) ' Lock
For y As Integer = 0 To h-1
row = pixels + y * pitch
For x As Integer = 0 To w-1
row[x] = cast(Integer Ptr,ImageData.Scan0)[x+y*w]
Next x
Next y
GdipBitmapUnlockBits(Image,@ImageData) ' UnLock
GdipDisposeImage(Image)
Return FBImage
End Function
Function LoadWINImage(byval Filename as String, byval BackColor as Integer = &h000000) as HBITMAP
Using GDIPLUS
Dim as GPBITMAP ptr Image = LoadGDIImage(Filename)
Dim as any ptr Temp1, Temp2
Dim as Integer w,h
Dim as HBITMAP hhbitmap
If LOBYTE(LOWORD(GetVersion)) < 6 Then
Dim As Integer w,h
GdipGetImageWidth(Image, @w)
GdipGetImageHeight(Image, @h)
GdipCreateBitmapFromScan0(w, h, NULL, PixelFormat32bppARGB, NULL, @Temp1)
GdipGetImageGraphicsContext(Temp1, @Temp2)
GdipGraphicsClear(Temp2, BackColor or &hff000000)
GdipDrawImageRectI(Temp2, Image, 0, 0, w, h)
GdipCreateHBITMAPFromBitmap(Temp1, @hhbitmap, BackColor or &hff000000)
If Temp1 <> 0 Then GdipDisposeImage(Temp1)
If Temp2 <> 0 Then GdipDeleteGraphics(Temp2)
Else
GdipCreateHBITMAPFromBitmap(Image ,@hhBitmap, BackColor or &hff000000)
End If
GdipDisposeImage(Image)
Return hhbitmap
End Function
Function LoadGDIImage(byval Filename as String) as any ptr
Using GDIPLUS
Dim as GPBITMAP ptr Image
Dim as UInteger FLen = (Len(Filename)*2)+2
Dim as WString ptr wbuf = allocate(FLen)
MultiByteToWideChar(CP_ACP, 0, Filename, -1, wbuf, FLen)
GDIPLOADIMAGEFROMFILE( *wbuf, @Image)
Deallocate(wbuf)
Return Image
End Function
|
Beispiel:
Code: |
#Include "win_LoadImage.bas"
Screenres 800,600,32
Dim testimage as any ptr = LoadFBImage("test.png")
If testimage Then put(0,0),testimage,pset Else Print "Fehler"
sleep
|
_________________
 |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|