Problem mit MDI und EditorGadget!

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
FISCHAUGE
Beiträge: 108
Registriert: 25.03.2005 21:07
Wohnort: Karlsruhe
Kontaktdaten:

Problem mit MDI und EditorGadget!

Beitrag von FISCHAUGE »

Hi, ich habe ein kleines Problem mit dem MDI Gadget und denn childwindows!

Zuerst einmal der code:

Code: Alles auswählen

If OpenWindow(0,0,0,400,300,#PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_MaximizeGadget,"")
    If CreateGadgetList(WindowID(0)) And CreateMenu(0, WindowID(0))
      MenuTitle("Datei")
      OpenSubMenu("Neu")
      MenuItem(0,"Dokument")
      CloseSubMenu()
  MenuBar()
      MenuItem(2000,"Laden")
      MenuItem(3000, "Speichern")

CreateStatusBar(1000, WindowID())
AddStatusBarField(120)
AddStatusBarField(80)

          MDIGadget(0, 0, 0, 0, 0, 2, 2, #PB_MDI_AutoSize)

CloseGadgetList()
             
      
      
 Repeat
  EventID = WaitWindowEvent()
If EventType()=#PB_EventType_CloseItem
RemoveGadgetItem(0, GetGadgetState(0))
EndIf



x = CountGadgetItems(0)
d$ = Str(x)

StatusBarText(1000, 0, "Offenen Fenster: " + d$)
datum$=FormatDate("%dd.%mm.%yyyy",Date())
StatusBarText(1000, 1,datum$)

  If EventID = #PB_Event_CloseWindow 
    Quit = 1
  EndIf

If EventID = #PB_EventMenu

If EventMenuID()=0
x = CountGadgetItems(0)
x$ = Str(x)
AddGadgetItem(0,-1,"Fenster: "+x$)
EditorGadget(CountGadgetItems(0),0,0,1275,935)
EndIf



If EventMenuID()=2000
load$=OpenFileRequester("Dokument Laden","","Text (*.txt)|*.txt;|NFE Dokument (*.nfe)|*.nfe;",0)
name$=GetFilePart(load$)
d=ReadFile(1, load$) 
If d 
laden$=""
While Eof(1)=0 
laden$ = laden$+ReadString()+Chr(13)+ Chr(10) 
Wend 
AddGadgetItem(0,-1,name$)
EditorGadget(CountGadgetItems(0),0,0,1275,935)
SetGadgetText(CountGadgetItems(0),"")
SetGadgetText(CountGadgetItems(0), laden$) 
CloseFile(1)
EndIf
EndIf
 EndIf


 If EventMenuID()=3000
 save$=SaveFileRequester("Dokument Speichern unter...","","Text (*.txt)|*.txt;|NFE Dokument (*.nfe)|*.nfe;",0)
 If OpenFile(2,save$+".txt")

text$=GetGadgetText(GetGadgetItemText(0,GetGadgetState(0),""))
 WriteStringN(text$)
Else
EndIf
EndIf


  
Until Quit=1

EndIf
End
EndIf

So durch anklicken des Menü 1, öffnet sich ein neues Fenster, mit einem Editor Gadget, die ID für das Editor Gadget, ist die anzahl der aktuellen Offenen Fenster (= 1 Fenster, EditorGadget(1) )
Das laden etc.. funktioniert einwandfrei, wenn ich nun aber ein neues Fenster öffnen, und etwas in das Editor Gadget reinschreibe, anschließend speicherer, schreibt er immer vor das erste zeichen, die ID des EditorGadget mit rein!
Wie bekomme ich das gelöst?
Na alles Senkrecht?
Benutzeravatar
roherter
Beiträge: 1407
Registriert: 10.04.2005 18:58
Kontaktdaten:

Beitrag von roherter »

Erstmal solltest du nich dem menu und denn fenstern und dem editorgadget die Id 0 geben sondern eher so!
Hauptfenster 0
Menu 1
Mdi 2
editorgadget 3
Purebasic 5.0 32bit und 64 bit

I'm back from hell
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

roherter hat geschrieben:Erstmal solltest du nich dem menu und denn fenstern und dem editorgadget die Id 0 geben sondern eher so!
Hauptfenster 0
Menu 1
Mdi 2
editorgadget 3
Verstehe ich nicht?
Fenster:
Hauptfenster 0

Menu:
Menu 0

Gadgets:
MDIGadget 0
EditorGadget 1

Aber Konstanten in einer Enumeration verwenden ist übersichtlicher.
Für Gadgets in MDIChilds ist die Nutzung von #PB_Any sinnvoll.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Antworten