Verschieb. Toolbar wie in Office, Darstellungsfehler

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Verschieb. Toolbar wie in Office, Darstellungsfehler

Beitrag von Xaby »

Code: Alles auswählen


; Folker Linstedt, 2007|08|14  Menu und Toolbar-Test

Procedure MachMenu()
  OpenWindow(1,200,200,100,25,"Menu",#PB_Window_BorderLess,WindowID(0))
  ;StickyWindow(1,1)
  CreateToolBar(0,WindowID(1))
  ToolBarStandardButton(1,#PB_ToolBarIcon_New)
  ToolBarSeparator()
  ToolBarStandardButton(2,#PB_ToolBarIcon_Delete)
  
EndProcedure


If OpenWindow(0, 100, 100,600, 400, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_SizeGadget)
  CreateGadgetList(WindowID(0))
  
  MachMenu()
  ResizeWindow(1,WindowX(0)+WindowWidth(0)-100,WindowY(0)+25,#PB_Ignore,#PB_Ignore)
  
  Repeat
    EventID = WaitWindowEvent()
    
    If EventID = #PB_Event_CloseWindow  ; If the user has pressed on the close button
      If GetActiveWindow()=0
        Quit = 1
      EndIf
      
      
      
    EndIf
    
     
    If EventID = #PB_Event_SizeWindow or #PB_Event_MoveWindow
      If GetActiveWindow()=0
        If IsWindow(1)
          ResizeWindow(1,WindowX(0)+WindowWidth(0)-100,WindowY(0)+25,#PB_Ignore,#PB_Ignore)
        EndIF  
      EndIf
       
    EndIf
    If GetActiveWindow()=1
      SetActiveWindow(0) 
    EndIF
    
    If EventID = #PB_Event_Menu
      Debug EventMenu()
      
    EndIf 
    
  Until Quit = 1
  
EndIf

End 
  
Also das Icon müsst ihr euch dann noch anpassen.

Ich lese mir gerade den MDIGadget-Text durch ... ach ich weiß auch nicht. Aber so richtig verstehe ich es nicht.

Was ich möchte, sind kleine Fenster, wo meine ToolBars drauf sind.
So wie in den Zeichenprogrammen. Oder wie im Office-Paket.
Cool wäre auch, wenn kein großer Rahmen drum herum wäre, sondern nur so ein kleiner Anfasser ...

Achja. Das wäre herrlich. :allright:
Zuletzt geändert von Xaby am 16.08.2007 09:49, insgesamt 4-mal geändert.
Kinder an die Macht http://scratch.mit.edu/
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Das was du brauchst wirst du in PBOSL finden.

ToolbarPro und SkinWin(MakeToolWindow, bzw kannst auch das hier nehmen http://www.purearea.net/pb/CodeArchiv/W ... barIcon.pb)
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.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Mmmm

Beitrag von Xaby »

aber auch bei ToolbarPro wusste ich nicht so recht, wie ich sie frei beweglich machen kann.

Hast du dafür eine Idee?

Dank dir. Gruß, Folker :allright:
Kinder an die Macht http://scratch.mit.edu/
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Mmmm

Beitrag von DarkDragon »

Xaby hat geschrieben:aber auch bei ToolbarPro wusste ich nicht so recht, wie ich sie frei beweglich machen kann.

Hast du dafür eine Idee?

Dank dir. Gruß, Folker :allright:
Ja durch ein zweites Fenster und SkinWin oder der Source aus dem CodeArchiv.

Aber ich sehe gerade: Ich hab wohl etwas missverstanden. Ich dachte du wolltest einfach einen Toolbar in ein Tool-Fenster füllen (Also dass er auch in Y Richtung geht - So wie in Malprogrammen - http://www.freesoftwaremagazine.com/fil ... /6fill.jpg).

Du willst einfach nur einen verschiebbaren Toolbar haben wenn ich das jetzt richtig verstehe. Hmm... ich denk mal drüber nach.
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.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Nee. Also ein Fenster wäre auch schön. Aber die Codes von diesen komischen Ragbars oder wie die heißen fand ich sehr kompliziert.

Am liebsten wäre mir ein kleines Fenster, was im Vordergrund bleibt, aber nur über meinem Hauptfenster, nicht über anderen Fenstern.

Das sollte eine kleine Titelleiste haben oder auch keine.
Am liebsten wären mir auch Buttons oder ImageGadgets, die mir MenuNummern zurück geben.

Größe muss nicht verändert werden können.

Und schließen soll man sie eigentlich auch nicht können.



Mein Problem ist, ich habe viele Toolbar-Einträge, bzw. Befehle an die man schnell ran kommen soll. Nur manch haben ja keinen Monitor, der FULL HDTV darstellen kann :D Und würden dann nicht alle sehen.
Oder sie wollen es nicht im Vollbild / Maximiert laufen lassen ...

Ich möchte die Größe meines Hauptfensters dynamisch halten.
Nur die Toolbar macht mir da einen Strich durch die Rechnung.

Mich stört zum Beispiel auch, dass ich Befehle links habe, die Einfluss auf meine Liste rechts nehmen. Das ist dann irgendwie nicht intuidiv oder unübersichtlich.

Deshalb wären Menüs günstig, die man sich so hinschiebt, wie man sie auf dem eigenen Rechner haben mag. Auch über das Fenster hinaus, was mit MDI scheinbar nicht geht.

Naja und ich muss dann für jedes die Position speichern /:->


:freak:
Kinder an die Macht http://scratch.mit.edu/
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Dann reicht dir also doch auch das hier:

Code: Alles auswählen

; English forum: http://www.purebasic.fr/english/viewtopic.php?t=6726
; Author: PB (adapted by Andre, updated for PB4.00 by blbltheworm)
; Date: 27. June 2003
; OS: Windows
; Demo: No

OpenWindow(1, 100, 100, 640, 480, "Hauptfenster", #PB_Window_TitleBar)

win = OpenWindow(0, 0, 0, 219, 85, "ToolWindow without Taskbar icon", #PB_Window_WindowCentered, WindowID(1))
SetWindowLong_(WindowID(0),#GWL_EXSTYLE,#WS_EX_TOOLWINDOW)   ; both lines are needed to avoid displaying
ResizeWindow(0,#PB_Ignore,#PB_Ignore,220,100) : ShowWindow_(WindowID(0),#SW_SHOW)    ; of your window on the taskbar

; Diese Zeile weglassen, falls du es lieber hast wenn das Tool-Fenster auch außerhalb des Hauptfensters sein kann
; SetParent_(WindowID(0), WindowID(1))

; Hier kannst du auch Toolbars reinhauen etc.
CreateGadgetList(win)
ButtonGadget(1,20,30,180,20,"Exit")

Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget  ; check for a pushed button
      Select EventGadget()
        Case 1
          Quit = 1
      EndSelect
  EndSelect
Until Quit = 1
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.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Ja das ist am Ende ja der gleiche Code, wie ich ihn hatte :mrgreen:

Das StickyWindow(1,1) war bei mir auch nur ein Test, weil ich da vergessen hatte, die ParentID anzugeben.

Aber was mich an meinem und auch an dem letzten hier noch stört ist, dass das Hauptfenster seinen Fokus verliert, wenn man das "Menu" auf dem ChildWindow anklickt.

Denn es ist ja "nur" ein Menüfenster :shock:
Kinder an die Macht http://scratch.mit.edu/
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 »

Es kann nur einer den Fokus haben, ansonsten eigenes OS schreiben.
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
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

ts-soft hat geschrieben:Es kann nur einer den Fokus haben, ansonsten eigenes OS schreiben.
Ne es geht auch Hauptfenster und Childfenster. Wie weiß ich allerdings nicht. Man sieht es häufig in Programmen.

Bild
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.
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Ja, was hältste davon ts, wenn du uns mal ein kurzes Codebeispiel gibst, wie so ein "PhotoImpact"-Werkzeugdingli aussehen könnte.

Muss auch noch nicht diese Andock und Umdrehfunktionen haben.

Vielleicht ist es ja auch gar kein Fenster ... wir sind doch nur Laien.

Hilf uns doch mal und gib wenigstens einen Tipp.


So etwas will doch sicherlich jeder in seinem Programm haben.
Eine Toolbar, die man abmachen kann und wieder dran machen kann, die man verschieben kann und fixieren ...

Sollte es in PB 4.2 geben und sich quasi von allein einstellen.
Dafür gibt es doch die Toolbar-IDs ...

:? :allright:
Kinder an die Macht http://scratch.mit.edu/
Antworten