include

Für allgemeine Fragen zur Programmierung mit PureBasic.
sobi
Beiträge: 170
Registriert: 05.02.2005 23:41
Wohnort: passau
Kontaktdaten:

include

Beitrag von sobi »

Hallo,

wie kann ich eine Datei mit "include" einbinden, so dass die Menübar nicht verschwindet? - Mit DataSection? Allerdings war das noch nicht erfolgreich. :cry:
Wie binde ich eine neue Datei ein, so dass ich nicht alles in eine Datei schreiben muss?

Liebe Grüße,


Simon
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: include

Beitrag von Kiffi »

> wie kann ich eine Datei mit "include" einbinden, so dass die Menübar nicht
> verschwindet?

??? Was hat das eine mit dem anderen zu tun?

> Wie binde ich eine neue Datei ein, so dass ich nicht alles in eine Datei
> schreiben muss?

steht in der Online-Hilfe unter "Include Funktionen":

IncludeFile "Dateiname"
XIncludeFile "Dateiname"
IncludeBinary "Dateiname"

Grüße ... Kiffi
a²+b²=mc²
sobi
Beiträge: 170
Registriert: 05.02.2005 23:41
Wohnort: passau
Kontaktdaten:

Re: include

Beitrag von sobi »

Hi Kiffi,
Kiffi hat geschrieben: ??? Was hat das eine mit dem anderen zu tun?
also wenn ich im Menü einen Eintrag aktiviere läd er mir die ganze Seite. Aus der Hilfe bin ich nicht schlau geworden :(

Wenn ich jetzt im Menü auf "Neu" klicke, soll der nicht die Momentane Datei durch die DATEI.pb ersetzen, sondern nur nur unten anfügen.

----

If OpenWindow(0,200,200,250,250,#PB_Window_SystemMenu,"Menü")
If CreateMenu(0, WindowID())
MenuTitle("Datei")
MenuItem( 1, "Neu")
MenuItem( 2, "Laden")
MenuBar()
MenuItem( 3, "Speichern")
MenuTitle("Drucken")
MenuItem(4,"Drucken")
MenuTitle("Ende")
MenuItem(5, "Ende")
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf

If EventID = #PB_EventMenu
If EventMenuID()=1
IncludeFile("DATEI.pb")
EndIf
EndIf


If EventID=#PB_EventGadget
If EventGadgetID()=2
Quit=1
EndIf
EndIf
Until Quit=1
EndIf
End

----

Hat jemand eine Ahnung wo mein Fehler liegt, denn ich find den noch nicht!

Gruß,


Simon
sobi
Beiträge: 170
Registriert: 05.02.2005 23:41
Wohnort: passau
Kontaktdaten:

Beitrag von sobi »

Na toll, da schreibt man ins Forum und drei Minuten später kommt man durch probieren selber weiter! :roll:

Hatte in der anderen Datei ein "OpenWindow" definiert! :oops:

Na ja...
Also inzwischen bleibt meine Menüleiste da, aber wie kann ich jetzt die Datei, die ich zuerst geladen habe, durch eine zweite ersetzen (wenn ich auf einen anderen Link klicke?)

LG

Simon
Benutzeravatar
Dostej
Beiträge: 529
Registriert: 01.10.2004 10:02
Kontaktdaten:

Beitrag von Dostej »

Also, so weit ich deinen Code verstehe, willst Du, das wenn der Menupunkt
EventID = #PB_EventMenu
angewählt wurde
er den Code, der in der Datei "DATEI.pb" steht, ausführt.

Dein Fehler liegt m.E. darin, das du den Include befehl falsch benutzt. Der include bindet die Datei (als Quellcode) an dieser Stelle ein.

Ich würde das daher so lösen:

Code: Alles auswählen

IncludeFile("DATEI.pb") 
If OpenWindow(0,200,200,250,250,#PB_Window_SystemMenu,"Menü") 
  If CreateMenu(0, WindowID()) 
    MenuTitle("Datei") 
    MenuItem( 1, "Neu") 
    MenuItem( 2, "Laden") 
    MenuBar() 
    MenuItem( 3, "Speichern") 
    MenuTitle("Drucken") 
    MenuItem(4,"Drucken") 
    MenuTitle("Ende") 
    MenuItem(5, "Ende") 
  EndIf 
  Repeat 
    EventID = WaitWindowEvent() 
    If EventID = #PB_Event_CloseWindow 
      Quit = 1 
    EndIf 
    
    If EventID = #PB_EventMenu 
      If EventMenuID()=1 
        RufeEineFunktionAuf()
      EndIf 
    EndIf 
    
    
    If EventID=#PB_EventGadget 
      If EventGadgetID()=2 
        Quit=1 
      EndIf 
    EndIf 
  Until Quit=1 
EndIf 
End 


Und in die Datei Datei.pb schreibst du folgendes:

Procedure RufeEineFunktionAuf()
  <Dein Code>
EndProcedure

Das ganze geht auch als Gosub Befehl

dann hast du unter dem Menupunkt:
Gosub Marke

Und in deDatei

Marke:
  <Dein Code>

Return
Hoffe das hilft dir weiter.
Ich bin mir nicht sicher, ob es nciht auch so gehen könnte wie Du dir das vorstellst, vermute aber eher nicht,...
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: include

Beitrag von Kiffi »

sobi hat geschrieben: Wenn ich jetzt im Menü auf "Neu" klicke, soll der nicht die Momentane Datei
durch die DATEI.pb ersetzen, sondern nur nur unten anfügen.

Code: Alles auswählen

  If EventMenuID()=1
    IncludeFile("DATEI.pb")
   EndIf
Da hast Du was falsch verstanden. Es gibt kein bedingtes Include. Include
wird auf jeden Fall ausgeführt, nicht nur dann, wenn eine bestimmte
Bedingung auftritt (in Deinem Fall: If EventMenuID()=1).

Grüße ... Kiffi

P.S.: Beim nächsten Mal bitte Code-Tags verwenden.
a²+b²=mc²
sobi
Beiträge: 170
Registriert: 05.02.2005 23:41
Wohnort: passau
Kontaktdaten:

Beitrag von sobi »

Hallo,

Danke für deine hilfe, du hast mich richtig verstanden, wenn ich auf einen Eintrag im Menu klicke, dann soll sich ein Teil ändern. Wenn ich auf den nächsten Eintrag klick, dann soll sich wieder dieser Teil ändern. - Leider habe ich noch nicht so viel Ahnung, aber das wird schon! :-)
Bin also immer noch nicht am Ziel.

Im Moment sieht meine Menüdatei so aus:

Code: Alles auswählen

If OpenWindow(0,200,200,250,250,#PB_Window_SystemMenu,"Menü") 
  If CreateMenu(0, WindowID()) 
    MenuTitle("Datei") 
    MenuItem( 1, "Neu") 
    MenuItem( 2, "Laden") 
    MenuBar() 
    MenuItem( 3, "Speichern") 
    MenuTitle("Drucken") 
    MenuItem(4,"Drucken") 
    MenuTitle("Ende") 
    MenuItem(5, "Ende") 
  EndIf 
  
  Repeat 
    EventID = WaitWindowEvent() 
    If EventID = #PB_Event_CloseWindow 
      Quit = 1 
    EndIf     
    If EventID = #PB_EventMenu      
      If EventMenuID()=1 
        IncludeFile("test1.pb") 
        Gosub Marke
      EndIf    
      If EventMenuID()=2  
        IncludeFile("test2.pb") 
        Gosub Marke2          
      EndIf 
    EndIf 
    
    If EventID=#PB_EventGadget 
      If EventGadgetID()=3 
        Quit=1 
      EndIf 
    EndIf 
  Until Quit=1 
EndIf 
End 
Und meine Test-Datein:
Test1.pb

Code: Alles auswählen

Marke:
CreateGadgetList(UseWindow(0)) 
TextGadget(2, 10, 40,250,20,"TextGadget Right",#PB_Text_Right) 
TextGadget(3, 10,100,250,20,"TextGadget Border",#PB_Text_Border) 
TextGadget(4, 10,130,250,20,"TextGadget Center + Border",#PB_Text_Center|#PB_Text_Border) 
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
Return
Test2.pb

Code: Alles auswählen

Marke2:
CreateGadgetList(UseWindow(0)) 
TextGadget(0, 10, 10,250,20,"TextGadget Standard (Left)") 
TextGadget(1, 10, 70,250,20,"TextGadget Center",#PB_Text_Center) 
TextGadget(2, 10, 40,250,20,"TextGadget Right",#PB_Text_Right) 
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
Return
Grüße,


Simon
Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Zum übersichtlichem Gestalten von Code eignen sich neben Includes auch hervorragend Prozeduren (siehe Procedure). Dein Fall wäre eine gute Anwendung davon.
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Ich würde nach IncludeFile wirklich auch noch die klammern wegmachen :wink:
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
sobi
Beiträge: 170
Registriert: 05.02.2005 23:41
Wohnort: passau
Kontaktdaten:

Beitrag von sobi »

DarkDragon hat geschrieben:Ich würde nach IncludeFile wirklich auch noch die klammern wegmachen :wink:
Hi Daniel,
danke für den Tipp. Das ist noch eine Gewohnheit aus PHP! ;-)
Aber, trotz allem, das funktioniert immer noch nicht so wie ich mir das vorstelle! :-(

freedimension hat geschrieben:Zum übersichtlichem Gestalten von Code eignen sich neben Includes auch hervorragend Prozeduren (siehe Procedure). Dein Fall wäre eine gute Anwendung davon.
Danke für deinen Ratschlag. Ich werde das mir gleich mal anschauen! :-)

Liebe Grüße,


Simon
Antworten