Fenster optimal öffnen egal, wo die Taskleiste ist .

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Beitrag von Eckhard.S »

Welch eine Freude diese "PureLust" in diesem Forum zu erleben. :mrgreen:
Dieser kurze übersichtliche Code gefällt mir super!!

Danke an alle!
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

edel hat geschrieben:@PureLust
Schoenes Beispiel aber deine Enumeration ist Mist.
ThanX für's Lob. ;)

Und was die Enumeration betrifft:
Ok, sind noch zwei Altlasten von Dir drin (#Menu & #title). ;)

Aber Du meinst vermutlich die einzelne Enumeration für Alles.
Wenn man eh mit Konstanten arbeitet, welchen sinnlichen Nährwert hat es denn dann noch, für jede Gruppe (Windows, Menüs, Gadgets, ...) eine eigenen Enumeration zu beginnen?
(Was nicht bedeuten soll, dass ich die 'Schönheit' in Deiner Variante nicht auch ersehen kann. ;) )

Greetz, PL.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Benutzeravatar
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Beitrag von Eckhard.S »

@PureLust
Ist wirklich eine prima Lösung. Kleine Kosmetikfrage:

Die Oberkante des Textfeldes "German" liegt etwas tiefer als die anderen beiden Fenster.
Und die Unterkante des Espernatotextfeldes liegt etwas höher. Woran kann das liegen, wo doch nur der Splitter umgeschaltet wird?
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

@Eckhard,

das ist der 'Ziehbalken' an dem Du den Splitter ja nach wie vor anpacken kannst.
Um es etwas deutlicher zu machen, kannst Du beim Erstellen des Splittergadgets ja mal "#PB_Splitter_Separator" als Flag mit übergeben - dann sollte es evtl. eher ersichtlich sein.

Gruß, PL.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
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 »

PureLust hat geschrieben: Wenn man eh mit Konstanten arbeitet, welchen sinnlichen Nährwert hat es denn dann noch, für jede Gruppe (Windows, Menüs, Gadgets, ...) eine eigenen Enumeration zu beginnen?
Um Speicher zu sparen. PB reserviert Speicher für alle Gadgets ab 0
Diese existieren aber garnicht.
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
Benutzeravatar
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Beitrag von Eckhard.S »

Wunder gibt es überall! Habe eben mal ein Fensteraustausch probiert was auch funktioniert, aber das alte Fenster erscheint plötzlich im Nirwana.
Im folgenden Code oben rechts den 1/2-Button drücken

Code: Alles auswählen

Enumeration 
  #window 
  #Menu 
  #tile 
  #Splitter 
  #edit1 
  #edit2  
  #edit3 
  #Frame 
  #Button1 
  #Button2 
  #ButtonBoth 
           #TestButton
EndEnumeration 

framebreite = 150

hwnd = OpenWindow(#window,0,0,800,600,"",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget) 

CreateGadgetList(hwnd) 

Frame3DGadget(#Frame,5,0,framebreite -10,595-MenuHeight(),"") 
ButtonGadget(#Button1   ,WindowWidth(#Window)-90,2,25,18,"1") 
ButtonGadget(#Button2   ,WindowWidth(#Window)-60,2,25,18,"2") 
ButtonGadget(#ButtonBoth,WindowWidth(#Window)-30,2,25,18,"1/2") 
  ;      ButtonGadget(#TestButton,20,2,25,18,"1/2") 
EditorGadget(#edit1,0,0,0,0) 
EditorGadget(#edit2,0,0,0,0, #PB_Window_Invisible )                          ; NEU !!!!
EditorGadget(#edit3,0,0,0,0, #PB_Editor_ReadOnly) 

SplitterGadget(#Splitter, framebreite, 22, WindowWidth(#Window)- framebreite - 5, WindowHeight(#Window)-27,#edit1, #edit3) 
AddGadgetItem(#edit1,0,"Esperanto-Textfield (1)") 
AddGadgetItem(#edit2,0,"Esperanto-Ersatztext (2)")                                    ; NEU !!!!
AddGadgetItem(#edit3,0,"German-Textfield (3)") 


Repeat 
  event = WaitWindowEvent() 
  
  Select event 
    Case #PB_Event_SizeWindow 
       ResizeGadget(#Frame      , #PB_Ignore, #PB_Ignore, #PB_Ignore, WindowHeight(#Window)-5) 
       ResizeGadget(#Splitter   , #PB_Ignore, #PB_Ignore, WindowWidth(#Window)- framebreite - 5, WindowHeight(#Window)-27) 
       ResizeGadget(#Button1    , WindowWidth(#Window)-90, #PB_Ignore, #PB_Ignore, #PB_Ignore) 
       ResizeGadget(#Button2    , WindowWidth(#Window)-30, #PB_Ignore, #PB_Ignore, #PB_Ignore) 
       ResizeGadget(#ButtonBoth , WindowWidth(#Window)-60, #PB_Ignore, #PB_Ignore, #PB_Ignore) 
    Case #PB_Event_Gadget 
       Select EventGadget() 
          Case #Button1 
             SetGadgetState(#Splitter, GadgetHeight(#Splitter)) 
          Case #Button2 
             SetGadgetState(#Splitter, 0) 
          Case #ButtonBoth 
          SetGadgetAttribute(#Splitter, #PB_Splitter_SecondGadget, #edit2)  ; NEU !!!!
          SetGadgetState(#Splitter, GadgetHeight(#Splitter)/2) 
       EndSelect 
  EndSelect 
  
Until event = #WM_CLOSE
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
Benutzeravatar
PureLust
Beiträge: 1145
Registriert: 21.07.2005 00:02
Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
Wohnort: am schönen Niederrhein

Beitrag von PureLust »

ts-soft hat geschrieben:Um Speicher zu sparen. PB reserviert Speicher für alle Gadgets ab 0
Diese existieren aber garnicht.
AHA ??? :shock:

Aber klingt doch ziemlich unlogisch. Was ist denn dann bei #PB_Any ???
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
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 »

PureLust hat geschrieben:
ts-soft hat geschrieben:Um Speicher zu sparen. PB reserviert Speicher für alle Gadgets ab 0
Diese existieren aber garnicht.
AHA ??? :shock:

Aber klingt doch ziemlich unlogisch. Was ist denn dann bei #PB_Any ???
Da werden die Unsigned der Signed (-) genommen :mrgreen:
Sind also trotzdem zusammenhängend.
Mußte jetzt aber selbst draufkommen :lol:
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
Benutzeravatar
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Beitrag von Eckhard.S »

Hallo PureLust und ts-soft!

Gestern gab es wohl eine Überschneidung von Nachrichten in diesem Forum. Könnt ich euch den letzten Beitrag von mir bitte mal ansehen. Ich konnte das merkwürdige Verhalten von

Code: Alles auswählen

SetGadgetAttribute(#Splitter, #PB_Splitter_SecondGadget, #edit2) 
noch nicht herausfinden.
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
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 »

Da ist kein merkwürdiges Verhalten!

Code: Alles auswählen

#PB_Splitter_SecondGadget     : Ersetzt das zweite Gadget durch ein neues.
Du ersetzt ja nicht durch ein neues. Diese Funktion schmeißt das 2te Gadget raus, so das es dem Hauptfenster zugeordnet ist, danach soll dann ein anderes "Neues Gadget" eingefügt werden. Das alte, ist dann mit FreeGadget(Gadget) zu entfernen, bzw. Neu anzuordnen.

Lies doch bitte in der Hilfe nochmal nach, sollte jetzt verständlich sein, hoffe ich.
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