 |
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 |
Emporea1997
Anmeldungsdatum: 07.07.2011 Beiträge: 58
|
Verfasst am: 18.08.2011, 21:35 Titel: sGUI Problem mit Textbox |
|
|
{EDIT} CODE IST EINFACHER GESTALTET
Hallo!
Ich verwende die Lib sGui.
ich (habe) ein Programm entwickelt dass aus einer Textdatei Länge ausliest und sie oben anzeigt. In dieser Textdatei sind verschiedene "Werkzeuge" die bei einer bestimmten Länge etwas machen. zum beispiel eine einkerbung.
Die textdatei besteht aus mehreren abschnitten. und zwar immer wenn in eienr zeiel etwas bestimmtes steht bis zum nächsten wo etwas bestimmtes steht. In diesem Fall sind es die drei buchstaben KTN. In einer textbox soll dannn jeweils ein abschnitt angezeigt werden und wenn man auf weiter pder zurück die folgenden oder die davor. nun das klapppt nicht ganz. denn ich weiß nicht wie ich dem computer sagen soll dass er wenn in einer zeile ktn vorkommt er erst mal stoppen soll bis die taste weiter gedrückt wird. udn dann soll er den nöchsten abschnitt anzeigen usw. . und wie das ganze dann noch mit zurück gehen soll bin ich echt richtig ratlos.
Naja auf jeden fall funktioniet der code nicht ganz.
wenn man die textdatei öffnet (mit der dateiendung .JOB) wird auch unten auch bis zum ersten abschnitt angezeiigt, da ich bei der abfrage von KTN einfach close _# provesorisch gemacht habe. wenn ich jedoch auf das scroll dings klicke verschwindet der text. der button weiter ist noch nicht belegt da ich garnicht weiß wie es gehen soll. ich habe mal überlegt multi-threading zu nutzen jedoch habe ich dies noch nie gemacht und weiß nicht wie ich das in das Programm einfügen soll.
Hier der code: (lasst euch nicht von den vielen funtktionen verwirren.)
Code: |
#Include "sgui/sgui.bas"
#Include "sgui/sliders.bas"
#Include "sgui/menu.bas"
#Include "sgui/simplegadget.bas"
#Include "sgui/stringgadget.bas"
#Include "sgui/togglegadget.bas"
#include "sGUI/Arrows.bas"
#Include "sGUI/ListBox.bas"
#include "sGUI/CheckMarkGadget.bas"
#include "sGUI/TextViewBox.bas"
#Include "windows.bi"
#Include "win/commdlg.bi"
#Include "file.bi"
Dim event As EventHandle Ptr
dim as Gadget ptr Unten
Dim As gadget Ptr Oben
Dim KTNList As gadget Ptr
Dim weiter As gadget Ptr
Dim zuruck As gadget Ptr
Dim ok As gadget Ptr
Dim standart As gadget ptr
Dim Zeit As Integer = 1
Dim As Integer EintragA , EintragB , EintragC , EintragD , EintragE , Eintragf , Eintragg
Dim x As Integer
Dim oeffnen As String = "C:/"
Dim speichername As String
Dim Textarray() As String
Dim count As Integer
Dim Lange As String
Dim langekomma As String
Dim Close1 As Integer
Dim y As Integer
Dim z As Integer
Dim Save As String
Dim a As Integer
Dim As Integer iResult
Screen 20 ,32 ,
InitGFX
event = CreateEventHandle
''###############################
''DECLARIEREN
Unten =AddArrow(event,880,50,3)
Oben = AddArrow(event,860,50,2)
weiter =AddArrow(event,50,740,1)
zuruck = AddArrow(event,30,740,0)
ok = addsimplegadget (event,30,100,100,30,""+Chr(154)+"bernehmen")
standart = addsimplegadget (event,150,100,100,30,"Standart")
Menu (event , 1 , 0 , 1 , "Fenster")
Menu (event , 2 , 0 , 1 , "Hilfe")
EintragA = Menu (event , 1 , 3 , 1 , "Fenster")
EintragB = Menu (event , 1 , 4 , 1 , "Optionen")
EintragC = Menu (event , 1 , 5 , 1 , "Beenden")
EintragD = Menu (event , 2 , 1 , 1 , ""+ chr(154) +"ber")
EintragE = Menu (event , 2 , 2 , 1 , "Hilfe")
Eintragf = Menu (event , 1 , 1 , 1 , ""+ Chr(153) +"ffnen")
EintragG = Menu (event , 1 , 2 , 4 , "")
redim As String TextArray(0)
KTNList =AddTextViewBox(event,30 , 580 , 119, 8,Textarray())
''##########
''GADGET (ON)
MenuOn (event)
GadgetOn (Unten)
gadgetsleep (Oben)
gadgeton (KTNList)
gadgeton (weiter)
gadgeton(zuruck)
gadgetoff (ok)
gadgetoff (standart)
Line(23, 70)-(1000, 90), 15, B
Draw String(905,50) , "L"+ Chr (132) +"nge:"
Draw String(960,50), "-----"
''######################################################################################################################################
''######################################################################################################################################
''Optionen
Do
event -> XSleep (1)
If event -> GADGETMESSAGE Then
Select Case event -> GADGETMESSAGE
Case Unten
gadgetsleep (unten)
gadgeton (oben)
Case Oben
gadgetsleep(oben)
gadgeton (unten)
''############################## WEITER
Case Weiter
Line(23, 70)-(1000, 90), 15, B
Draw String(905,50) , "L"+ Chr (132) +"nge:"
Draw String(960,50), Lange
''############################## WEITER
Case ok
Case Standart
Case zuruck
End Select
EndIf
If event -> MENUMESSAGE Then
Select Case event -> MENUMESSAGE
Case EintragA '############# FENSTER
Cls
gadgetsleep(Oben)
gadgeton(Unten)
menuon(event)
Gadgeton (KTNList)
gadgeton (weiter)
gadgeton(zuruck)
Line(23, 70)-(1000, 90), 15, B
Draw String(905,50) , "L"+ Chr (132) +"nge:"
Draw String(960,50), Lange
Case EintragB '############# OPTIONEN
Cls
menuon(event)
gadgeton(ok)
gadgeton(standart)
Case EintragC '########### BEENDEN
End
Case EintragD '########### ÜBER
Case EintragE '######### Hilfe
Case Eintragf '########### ÖFFNEN
oeffnen = LoadSaveDialog ( , , , "c:\")
If Not oeffnen = "" Then
Open oeffnen For Input As #1
Do
cls
MenuOn (event)
GadgetOn (Unten)
gadgetsleep (Oben)
gadgeton (KTNList)
gadgeton (weiter)
gadgeton (zuruck)
ReDim preserve Textarray(count)
Line Input #1 , Textarray(count)
If Mid(Textarray(count),1,3) = "KTN" Then
Lange = Mid(Textarray(count),91,4)
Langekomma = Mid(Textarray(count),95,1)
Close #1
EndIf
count = count +1
Loop Until Eof(1)
Close #1
Line(23, 70)-(1000, 90), 15, B
Draw String(905,50) , "L"+ Chr (132) +"nge:"
Draw String(960,50), Lange+","+Langekomma
ReDim preserve Textarray(ubound(Textarray)+1)
Textarray(UBound(Textarray))=Textarray(count)
EndIf
InitNewListArray(KTNlist,Textarray(count))
''##################################################################
End Select
End If
Loop Until event -> EXITEVENT
DestroyEventHandle (event)
End
Function LoadSaveDialog (savedlog As Integer , filter As String , fltrindex As Integer , initdir As String , strDefExt As String) As String
Dim FB_OFN AS OPENFILENAME
FB_OFN.lStructSize = Len(FB_OFN)
FB_OFN.hwndOwner = 0
FB_OFN.hInstance = 0
Dim strFilter As String
If filter = "" Then
strFilter = "$TX Dateien (*.$TX*)" + Chr(0) +"*.$TX*" + Chr(0,0)_ +
strFilter = "JOB Dateien (*.JOB*)" + Chr(0) +"*.JOB*" + Chr(0,0)
Else
strFilter = filter + Chr(0, 0)
End If
FB_OFN.lpstrFilter = StrPtr(strFilter)
FB_OFN.nFilterIndex = fltrindex
Dim strFile As String *2048
strFile = Space(2047) + Chr(0)
FB_OFN.lpstrFile = StrPtr(strFile)
FB_OFN.nMaxFile = Len(strFile)
Dim strFileTitle As String *2048
strFileTitle = String(2048, 0)
FB_OFN.lpstrFileTitle = StrPtr(strFileTitle)
FB_OFN.nMaxFileTitle = Len(strFileTitle)
Dim strdrstr As String
If initdir = "" Then
strdrstr = "."
Else
strdrstr = initdir
End If
FB_OFN.lpstrInitialDir = StrPtr(strdrstr)
Dim strcapt As String
If savedlog Then
strcapt = "Dateien Speichern"
FB_OFN.lpstrTitle = StrPtr(strcapt)
If strDefExt > "" Then
Dim strdext As String
strdext = strDefExt
FB_OFN.lpstrDefExt = StrPtr(strdext)
End If
FB_OFN.flags = OFN_EXPLORER Or OFN_LONGNAMES Or OFN_OVERWRITEPROMPT Or OFN_HIDEREADONLY
If GetSaveFileName(@FB_OFN) Then LoadSaveDialog = Trim(strFile)
Else
strcapt = "Dateien Öffnen"
FB_OFN.lpstrTitle = StrPtr(strcapt)
FB_OFN.flags = OFN_EXPLORER Or OFN_LONGNAMES Or OFN_CREATEPROMPT Or _
OFN_NODEREFERENCELINKS Or OFN_HIDEREADONLY
If GetOpenFileName(@FB_OFN) Then LoadSaveDialog = Trim(strFile)
End If
End Function
|
Hier das Textdokument: (ihr müsst es als .JOB datei abspeichern und könnt es über das Menü im Programm öffnen. Noch zur Info, es ist ein Programm eigentlich für Fensterbau maschinen und Fräsungen. deswegen sind da viele Zahlen. In jeder KTN zeile sind die 5 Stellen Nach L die Länge)
Code: |
THOR021
KTN0000C01F001000K9-1001-1P10 E00T250220 Vweiß I455230 M19040D01UUNA00L20060G04500450J13501350BBlendr.AD 76/68 -5 KHSALAMANDER O 02DB4E001002SN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD102000010000
ZD13Rahmen
W222/00/19420/00000
W602/00/19100/00000
W050/00/18950/00000
W604/00/18400/00000
W050/00/16720/00000
W100/00/15870/00000
W050/00/14490/00000
W050/00/12260/00000
W050/00/11530/00000
W102/00/11400/00000
W604/00/11390/00000
W602/00/10690/00000
W150/00/10340/00000
W192/00/10140/00000
W158/00/10030/00000
W192/00/09920/00000
W150/00/09720/00000
W602/00/09370/00000
W604/00/08670/00000
W102/00/08660/00000
W050/00/08530/00000
W050/00/07800/00000
W050/00/05570/00000
W100/00/04190/00000
W050/00/03340/00000
W604/00/01660/00000
W050/00/01110/00000
W602/00/00960/00000
W220/00/00640/00000
KTN0001C01F001000K9-1001-1P10 E00T250220 Vweiß I455230 M19040D02UOBA00L20066G04500450J13501350BBlendr.AD 76/68 -5 KHSALAMANDER O 02DB4E001003SN+000N+000RN+000N+000
W222/00/19420/00000
W050/00/18950/00000
W050/00/16720/00000
W050/00/14490/00000
W100/00/14490/00000
W050/00/12260/00000
W050/00/11530/00000
W102/00/11395/00000
W150/00/10340/00000
W192/00/10140/00000
W158/00/10030/00000
W192/00/09920/00000
W150/00/09720/00000
W102/00/08665/00000
W050/00/08530/00000
W050/00/07800/00000
W050/00/05570/00000
W100/00/05570/00000
W050/00/03340/00000
W050/00/01110/00000
W220/00/00640/00000
KTN0002C01F002000K9-1001-1P10 E00T250220 Vweiß I455230 M08740D01UREA00L09760G04500450J13501350BBlendr.AD 76/68 -5 KHSALAMANDER O 02DB4E001005SN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD102000010000
ZD13Rahmen
W222/00/09120/00000
W252/00/08935/00000
W050/00/08650/00000
W100/00/08095/00000
W302/00/08050/00000
W050/00/06765/00000
W050/00/04880/00000
W100/00/03600/00000
W050/00/02995/00000
W302/00/01710/00000
W050/00/01110/00000
W272/00/00825/00000
W220/00/00640/00000
KTN0003C01F002000K9-1001-1P10 E00T250220 Vweiß I455230 M08740D02ULIA00L09760G04500450J13501350BBlendr.AD 76/68 -5 KHSALAMANDER O 02DB4E001004SN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD102000010000
ZD13Rahmen
W222/00/09120/00000
W272/00/08935/00000
W050/00/08650/00000
W302/00/08050/00000
W050/00/06765/00000
W100/00/06160/00000
W050/00/04880/00000
W050/00/02995/00000
W302/00/01710/00000
W100/00/01665/00000
W050/00/01110/00000
W252/00/00825/00000
W220/00/00640/00000
KTN0004C00F000000K9-1001-1P10 E00T252120 Vweiß I215120 M08340D00USEA00L08740G09000900J09000900BKämpf/Setzholz/Spr. HSALAMANDER O 02DB4E001006SN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD102000010000
ZD13Rahmen
W052/00/08140/00000
W052/00/06255/00000
W100/00/05860/00000
W101/00/05860/00000
W052/00/04370/00000
W104/00/02640/00000
W105/00/02640/00000
W052/00/02485/00000
W052/00/00600/00000
KTN0005C01F001000K9-1001-1P10 E01T251020 Vweiß I455230 M08270D01UUNA00L09530G13501350J04500450BFlügel AD 76 / 80 - HSALAMANDER O 02DB4E00100BSN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD100947008900
ZD13Flügel
W230/00/09480/00000
W226/00/08770/00000
W602/00/08650/00000
W050/00/08300/00000
W604/00/07850/00000
W050/00/05943/00000
W050/00/03587/00000
W604/00/01680/00000
W050/00/01230/00000
W602/00/00880/00000
W224/00/00760/00000
W228/00/00050/00000
KTN0006C01F001000K9-1001-1P10 E01T251020 Vweiß I455230 M08270D02UOBA00L09530G13501350J04500450BFlügel AD 76 / 80 - HSALAMANDER O 02DB4E00100CSN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD100947008900
ZD13Flügel
W230/00/09480/00000
W226/00/08770/00000
W602/00/08650/00000
W050/00/08300/00000
W604/00/07850/00000
W050/00/05943/00000
W050/00/03587/00000
W604/00/01680/00000
W050/00/01230/00000
W602/00/00880/00000
W224/00/00760/00000
W228/00/00050/00000
KTN0007C01F002000K9-1001-1P10 E01T251020 Vweiß I455230 M07700D01UREA00L08960G13501350J04500450BFlügel AD 76 / 80 - HSALAMANDER O 02DB4E00100ESN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD100947008900
ZD13Flügel
W230/00/08910/00000
W226/00/08200/00000
W050/00/07730/00000
W050/00/05563/00000
W702/00/04230/00000
W504/00/04230/00000
W050/00/03397/00000
W050/00/01230/00000
W224/00/00760/00000
W228/00/00050/00000
KTN0008C01F002000K9-1001-1P10 E01T251020 Vweiß I455230 M07700D02ULIA00L08960G13501350J04500450BFlügel AD 76 / 80 - HSALAMANDER O 02DB4E00100DSN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD100947008900
ZD13Flügel
W230/00/08910/00000
W293/00/08295/00000
W226/00/08200/00000
W050/00/07730/00000
W050/00/05563/00000
W050/00/03397/00000
W050/00/01230/00000
W224/00/00760/00000
W228/00/00050/00000
KTN0009C01F003000K9-1001-1P10 E02T251020 Vweiß I455230 M08270D01UUNA00L09530G13501350J04500450BFlügel AD 76 / 80 - HSALAMANDER O 02DB4E001007SN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD100947008900
ZD13Flügel
W230/00/09480/00000
W226/00/08770/00000
W602/00/08650/00000
W050/00/08300/00000
W604/00/07850/00000
W050/00/05943/00000
W050/00/03587/00000
W604/00/01680/00000
W050/00/01230/00000
W602/00/00880/00000
W224/00/00760/00000
W228/00/00050/00000
KTN0010C01F003000K9-1001-1P10 E02T251020 Vweiß I455230 M08270D02UOBA00L09530G13501350J04500450BFlügel AD 76 / 80 - HSALAMANDER O 02DB4E001008SN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD100947008900
ZD13Flügel
W230/00/09480/00000
W226/00/08770/00000
W602/00/08650/00000
W050/00/08300/00000
W604/00/07850/00000
W050/00/05943/00000
W050/00/03587/00000
W604/00/01680/00000
W050/00/01230/00000
W602/00/00880/00000
W224/00/00760/00000
W228/00/00050/00000
KTN0011C01F004000K9-1001-1P10 E02T251020 Vweiß I455230 M07700D01UREA00L08960G13501350J04500450BFlügel AD 76 / 80 - HSALAMANDER O 02DB4E00100ASN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD100947008900
ZD13Flügel
W230/00/08910/00000
W226/00/08200/00000
W050/00/07730/00000
W050/00/05563/00000
W050/00/03397/00000
W050/00/01230/00000
W224/00/00760/00000
W292/00/00665/00000
W228/00/00050/00000
KTN0012C01F004000K9-1001-1P10 E02T251020 Vweiß I455230 M07700D02ULIA00L08960G13501350J04500450BFlügel AD 76 / 80 - HSALAMANDER O 02DB4E001009SN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD100947008900
ZD13Flügel
W230/00/08910/00000
W226/00/08200/00000
W050/00/07730/00000
W050/00/05563/00000
W504/00/04730/00000
W702/00/04730/00000
W050/00/03397/00000
W050/00/01230/00000
W224/00/00760/00000
W228/00/00050/00000
KTN0013C00F000000K9-1001-1P10 E00T Vweiß I M00000D00UUNA00L20000G09000900J09000900BFensterbankanschlussHSALAMANDER O 02DB4E001001SN+000N+000RN+000N+000
ZD019-1001-1
ZD0410
ZD102000010000
ZD13Rahmen
|
Ich hoffe ihr blickt durch und könnt mir helfen. (ich weiß nicht ob das zu viel verlangt ist sich durch diesen code zu wältzen)
danke
Editiert durch Moderator: Aussagekräftigeren Titel gesetzt. Ursprünglich: "Programm funktioniert nicht.." (Sebastian)
Zuletzt bearbeitet von Emporea1997 am 20.08.2011, 13:45, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
RWK
Anmeldungsdatum: 04.07.2011 Beiträge: 44
|
Verfasst am: 20.08.2011, 00:42 Titel: |
|
|
Hmmm... also durch den Code lese ich mich in der Tat nicht, aber wenn ich das richtig verstanden habe, dann willst Du eine Datei laden und dann vom Textvorkommen 'KTN...' durch Tastendruck zum nächsten springen...
Ich hab mal ein Beispiel gemacht.....
Ist aber in FireFly erstellt.... müsstest Du Dir laden..
http://www.freebasiccompiler.com/
*EDIT: Oh, man kann hier ja gar keine Dateien anhängen....dann halt so
Code: |
'---------Datei laden---------------------------
#Include Once "File.bi"
Dim Shared As String xBuffer(1000)
Sub OpenJob ( Dateiname As String)
Dim As Long x, y, p1, p2
Dim As String buffer
x = FileLen(Dateiname)
Open Dateiname For Binary As #1
buffer = Input(x, #1)
Close #1
p1 = 1
Do
p2 = InStr(p2+1,buffer,Chr(13)&chr(10))
If p2 = 0 Then Exit Do
xBuffer(y) = Mid(buffer,p1,p2-p1)
p1 = p2 + 2
y += 1
Loop Until p1 > x
End Sub
'----------Durch den Buffer laufen und nächstes Vorkommen anzeigen -------
Sub Button_Click
Dim As Integer x
Static As Integer aktKTN
x = aktKTN + 1
Do
If LCase(Left(xBuffer(x),3)) = "ktn" Then
FF_ListBox_SetCurSel( HWND_frmWork_listTxt, x-1 )
SendMessage( HWND_frmWork_listTxt, LB_SETTOPINDEX, x-1, 0)
aktKTN = x
Exit Do
End If
x += 1
Loop Until xbuffer(x) = ""
end Sub
|
Mit sGUI kann ich leider nicht dienen. Ich bastel sowas immer mit FireFly.... bis MOD das hingebracht hat, das der wxDesigner StaticText über einer StaticBox plaziert und das wxGrid eingebaut hat
oder der Joshi sein ooWX fertig hat
Grüße |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 20.08.2011, 01:24 Titel: |
|
|
Wenn du sowas meinst, das geht schon immer:
wxGrid ist mal in Planung, wird aber noch dauern, da es wichtigeres gibt.
Der Export/Import von GUI-Formen geht übrigens mittlerweile. |
|
Nach oben |
|
 |
RWK
Anmeldungsdatum: 04.07.2011 Beiträge: 44
|
Verfasst am: 20.08.2011, 17:34 Titel: |
|
|
Dann speichere das mal ab... und lade das Projekt wieder...
dann gehts nimmer.....und kompiliert sieht man die Label dann auch nicht mehr.
Zumindest bei mir. |
|
Nach oben |
|
 |
MOD Fleißiger Referenzredakteur

Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 20.08.2011, 23:09 Titel: |
|
|
Sowohl Export als Code, als auch als XML funktionieren richtig und auch das Laden der XML liefert mir das erwartete Ergebnis.
Verwendest du die neueste Version? Welches Betriebssystem? Beschreib das Problem doch genauer, sonst kann ich nichts beheben.
Beim Positionieren musst du natürlich aufpassen, weil beide Widgets einen Hintergrund brauchen, da man sie sonst nicht mehr aufnehmen könnte. Wenn du dann das eine über das andere ziehst kann es dadurch dahinter verschwinden, der Output sollte aber dennoch keine Schwierigkeiten haben, da der ja keine Hintergründe mehr verwendet.
Ein anderes Problem, dass du evtl haben könntest, wäre bei Width und Height die Standardeinstellung von -1. Davon rate ich ab, da es auf jedem Betriebssystem dadurch anders aussehen könnte. Ich bin am Überlegen, die Defaultwerte durch richtige Werte zu ersetzen, damit das nicht der Fall ist. |
|
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.
|
|