... Requester positionieren? NewProb. Farbänderung im Button

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

... Requester positionieren? NewProb. Farbänderung im Button

Beitrag von Xaby »

Hallo Fans.

Ich habe ein Programm, was 300, 200 als WindowGröße besitzt.
Und ich kann es natürlich verschieben. Das Programm speichert die Fensterposition.

Nun habe ich auch einen ColorRequester eingebaut, um Farbe wählen zu können (wozu sonst) ... was mich nun stört ist, dass der Requester scheinbar willkürlich auftaucht.

Der MessageRegester wohl immer in der Mitte des Bildschirms und der ColorRequester immer am Rand meines Fensters. Ich würde es gern so machen, dass es in Bezu auf die Mausposition oder in Bezug auf den Button, den ich zuletzt gedrückt hatte positioniert wird.

Wäre ja blöd, wenn ich hier (Berlin) einen Knopf drücke und in Köln mein Requester aufpoppt und ich nicht sehen kann, wieso mein Programm nicht weiterläuft.


Um es kurz zu machen, mit welchem Kniff kann ich die Fensterposition der Requester bestimmen?
Zuletzt geändert von Xaby am 04.04.2007 18:04, insgesamt 1-mal geändert.
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Hallo

Ist zwar kompliziert aber erstmal würd ich sagen kannst du das Fenster mit MoveWindow_() oder so verschieben, da das "normale" Programm allerdings anhält während der Requester offen ist, musst du das verschieben wahrscheinlich in einen Thread packen.

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Was passiert, wenn ich darum ein echtes Fensterpacke und das erst öffne und wenn der Reqeuster geschlossen wird, es auch schließe?

Ich hab gesehen, dass der FarbwählerGadget sich an meinen Tabs ausrichtet. Mein erstes PanalGadget ...

die Frage ist halt nur, ob es bei allen Requestern gleich ist.

Aber einen ganzen Farbwähler erst selbst zu machen. Klar, ist nicht so das Problem, aber eigentlich sollen die Requester Arbeit abnehmen und nicht welche machen :mrgreen: :allright:
Kinder an die Macht http://scratch.mit.edu/
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Dazu solltest du vielleicht einen kleine Testcode schreiben und es einfach ausprobieren genaues kann ich dir leider auch nicht sagen.

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
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 »

http://www.purebasic.fr/english/viewtop ... r+position
für Messageboxen, für ColorRequester usw. befindet sich alles im CodeArchiv,
einfach mal selber suchen
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
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Ich hab mal was geschrieben ...

Code: Alles auswählen

Procedure.l ColorNachfrage(x.l,y.l)
  OpenWindow(0,x,y,0,0,"",#PB_Window_BorderLess,WindowID(1))
  Farbe=ColorRequester()
  CloseWindow(0)
  ProcedureReturn Farbe
EndProcedure


OpenWindow(1,100,200,300,400,"Farbwahltest")

CreateGadgetList(WindowID(1))
  ButtonGadget(1,50, 50,100,50,"Eins")
  ButtonGadget(2,50,150,100,50,"Zwei")
  ButtonGadget(3,150,50,100,50,"Drei")
  ButtonGadget(4,150,150,100,50,"Vier")

CloseGadgetList()

Quit=0

Repeat
  Event= WaitWindowEvent()
  
  If Event = #PB_Event_Gadget
    GadgetNr=EventGadget()
    
    x=WindowX(1)
    y=WindowY(1)
    
    If GadgetNr=1
      ColorNachfrage(x,y)
    EndIf
    If GadgetNr=2
       ColorNachfrage(x+60,y+150)
    EndIf
    If GadgetNr=3
      ColorNachfrage(x+200,y+50)
    EndIf
    If GadgetNr=4
      ColorNachfrage(x+200,y+150)
    EndIf
    
    
    
  EndIf

  If Event=#PB_Event_CloseWindow
    Fenster=EventWindow() 
    
    If Fenster=1
      Quit=1
    EndIf
    
  EndIf
  
  
Until Quit

Bei dem CodeArchiv bin ich mir nicht sicher, was da funkioniert und was nicht. Es gibt doch noch keinen offiziellen Release für PB 4 oder doch?

Hab mir auch den Link durchgelesen. Hört sich interessant an, aber wenn es auch auf einem Mac laufen soll, der nun nicht gerade Windows XP installiert hat /:->


Also mein Code, ist die Praxis zur oben angekündigten Theorie.
Geht aber nur mit dem ColorRequester. MessageRequester ... ist wohl immer in der Mitte. :allright:
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 »

Den Code im CodeArchiv brauchste nur ausführen, dann weißte ob er geht :freak:
Wegen der MessageRequester lies einfach nochmal mein vorheriges Posting.
PS: Selber suchen macht schlank
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
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

Beitrag von Xaby »

Nee, selbst suchen höchstens :mrgreen:
Kinder an die Macht http://scratch.mit.edu/
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

wenn du dich selbst erst noch suchen musst, dann weiß ich ja nicht......
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
THEEX
Beiträge: 804
Registriert: 07.09.2004 03:13

Beitrag von THEEX »

*grinst*
Eine weitere Möglichkeit wäre, wenn Du dir dein Requester selbst bastelst, dann kannste die Fensterposition auf jeden Fall festlegen... 8)
Antworten