Currentpfad

Anfängerfragen zum Programmieren mit PureBasic.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Currentpfad

Beitrag von Kaeru Gaman »

die Arbeit einem Batch-Script ist nicht unbedingt eine schlechte Vorbereitung für
eine prozedurale Sprache wie Purebasic, auf jeden Fall besser als für OOP.
das bedeutet in gewissen Weise eine umgekehrte Einstiegsrichtung als für viele andere Neueinsteiger hier.

ich weiß nicht, in wieweit RapidBatch die Möglichkeit für Funktionen / Prozeduren / Unterprogramme bietet,
das wird eventuell was erstmal grundsätzlich verstanden werden muss.
aber die Schrittweise (Stapel-)Verarbeitung, die der Batch ihren Namen gibt,
entspricht der festen Reihenfolge bei einer prozeduralen Sprache,
die nur dann durchbrochen wird, wenn man Threads oder Callbacks verwendet.

... das mal als grundsätzliches Hintergrundwissen, was dir den Einstieg etwas erleichtern könnte.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
ToolBoy
Beiträge: 42
Registriert: 01.01.2010 16:19
Computerausstattung: Win 98ME, XP Home und Pro, Win2000 und WinVista32 Home Pre.
Wohnort: Duisburg

Re: Currentpfad

Beitrag von ToolBoy »

Hi Kaeru Gaman,
@ ALL

Soweit klappt es immer besser, nun stolpere ich über mouseXY.
Die Demo Help ist da mal wieder nicht zu verstehen.
Wie bekomme ich in die variable M1 und M2 die mouseposytion X und Y hinein.

Soll in mein erstes PB 4.40 Testprogramm eingefügt werden.

Code: Alles auswählen

[M1]= [mouse_x] 
[M2]= [mouse_y] 
if [M1]> '18' & [M1]< '38' & [M2]> '44' & [M2]< '66'
case help oder ähnlich
endif

Nur zur Info nicht aus PB:

Code: Alles auswählen

if [M1]> '18' & [M1]< '38' & [M2]> '44' & [M2]< '66'
if [Menu] ! '1' 
gosub 'help'
getdialog [hwnd] = 'P1', 'HWND'
ext [RetVal] = [_rbUtil2], 'rbxDlgSetStyle', [hwnd], 'Cursor', 'Hand'
[Menu] = '1'
endif

elseif  weiter in der schleife

else
if [Menu] ! '0'
getdialog [hwnd] = 'P1', 'HWND'
ext [RetVal] = [_rbUtil2], 'rbxDlgSetStyle', [hwnd], 'Cursor', 'Normal'
deldialog 'P2' rem Dialog help
[Menu] = '0'
endif
endif
MFG ToolBoy
Windows 7 U. Windows 10 pro.
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

Re: Currentpfad

Beitrag von ts-soft »

Code: Alles auswählen

#Window1 = 0

OpenWindow(#Window1, #PB_Ignore, #PB_Ignore, 640, 480, "Titel", #PB_Window_SystemMenu)

Define.i M1, M2, M3, M4
M1 = WindowMouseX(#Window1) ; x-koordinate im Fenster
M2 = WindowMouseY(#Window1) ; y-koordinate im Fenster

M3 = DesktopMouseX() ; x-koordinate auf dem Desktop
M4 = DesktopMouseY() ; y-koordinate auf dem Desktop
Sag lieber was Du erreichen möchtest!
Ich vermute mal ein "HyperLinkGadget()", siehe Hilfe, Mauszeiger wechselt automatisch.
Für ein Menü benötigst Du die Mauskoordinaten auch nicht.

Gruß
Thomas
ToolBoy
Beiträge: 42
Registriert: 01.01.2010 16:19
Computerausstattung: Win 98ME, XP Home und Pro, Win2000 und WinVista32 Home Pre.
Wohnort: Duisburg

Re: Currentpfad

Beitrag von ToolBoy »

Hallo,

danke, das ist klar und zu verstehen.
Mit den "HyperLinkGadget()" habe ich mir ein RollOver Menü in farbe gemacht.

Auszug:

Code: Alles auswählen

  HyperLinkGadget(4, 385, 12, 50,18," EXIT", RGB(255,0,0))
  SetGadgetFont(4, LoadFont(0, "Arial", 12))
  SetGadgetColor(4, #PB_Gadget_BackColor,  RGB(0,0,0))
  SetGadgetColor(4, #PB_Gadget_FrontColor,   RGB(178,178,178))

  HyperLinkGadget(5, 205, 12, 50,18," START", RGB(0,255,0))
  SetGadgetFont(5, LoadFont(0, "Arial", 12))
  SetGadgetColor(5, #PB_Gadget_BackColor,  RGB(0,0,0))
  SetGadgetColor(5, #PB_Gadget_FrontColor,  RGB(178,178,178))     
   
  HyperLinkGadget(6, 305, 12, 50,18," STOP", RGB(0,255,0))
  SetGadgetFont(6, LoadFont(0, "Arial", 12))
  SetGadgetColor(6, #PB_Gadget_BackColor,  RGB(0,0,0))
  SetGadgetColor(6, #PB_Gadget_FrontColor,  RGB(178,178,178))
Hier meckert zwar der Debugger bei SetGadgetColor, aber eine Compilierte Exe läuft stabil.

Mit mouse X,Y will ich erreichen das, wenn der Mauszeiger über ein image.bmp fährt, ohne ein Mausklick, ein Unterfenster geöffnet wird und wenn die Maus vom image.bmp entfernt wird das Unterfenster (HELP, INFO oder ähnlich) automatisch wieder schließt. So habe ich das in fast allen meiner RB5.2 Pragramme.

MFG ToolBoy
Windows 7 U. Windows 10 pro.
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

Re: Currentpfad

Beitrag von ts-soft »

Reicht da nicht ein Tooltip, der macht alles automatisch:

Code: Alles auswählen

GadgetToolTip(#Gadget, Text$) 
Der Compiler mecker zu Recht :)
Hyperlinkgadget unterstützt nur #PB_Gadget_FrontColor
ToolBoy
Beiträge: 42
Registriert: 01.01.2010 16:19
Computerausstattung: Win 98ME, XP Home und Pro, Win2000 und WinVista32 Home Pre.
Wohnort: Duisburg

Re: Currentpfad

Beitrag von ToolBoy »

Hallo,

ich nehme an, dass im GadgetToolTip(#Gadget, Text$) keine halbe DINA4 Seite passt.
Da wäre mir ein zweites Unterfenster lieber. Eines habe ich als ProgressBar eingebaut was automatisch einen Ladevorgang anzeigt.

Code: Alles auswählen

If OpenWindow(14, 0, 0, 240, 16, "Progress", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
StickyWindow(14, 1)
Richtig der Debugger unterstützt keine Hyperlinkgadget mit BackColor, unterstützt nur #PB_Gadget_FrontColor. Der Compiler aber wohl, sonst würde eine Exe mit diesem Inhalt ja nicht bei mir laufen. Schönes Rollover Menü mit BackColor, FrontColor und Border in Farbe.

Auszug aus AUTO PLAYER 2010:

Code: Alles auswählen

BUT= 1000 : BX=20 : BY=10 : BL=60 : BH=22: BS=1 : Gosub BUT
#F1 = 178 : #F2 = 178 : #F3 = 178 : Gosub FAR
  HyperLinkGadget(2, 25, 12, 50,18, Chr(32) +"OPEN", RGB(0,255,0))
  SetGadgetColor(2, #PB_Gadget_BackColor,  RGB(0,0,0))
  SetGadgetColor(2, #PB_Gadget_FrontColor,  RGB(178,178,178))
  SetGadgetFont(2, LoadFont(0, "Arial", 10))

BUT= 1010 : BX=20 : BY=10 : BL=60 : BH=22: BS=1 : Gosub BUT
#F1 = 178 : #F2 = 178 : #F3 = 178 : Gosub FAR
  HyperLinkGadget(2, 25, 12, 50,18, Chr(32) +"EXIT", ;.......
;………… und weitere HyperLinkGadget

; =================================================

; Zeichnet einen Rahmen in Farbe.
BUT:
TextGadget(BUT+1, BX,BY,BL,BS,"")
TextGadget(BUT+2, BX,BY+BH-2,BL,BS,"")
TextGadget(BUT+3, BX,BY,BS,BH,"")
TextGadget(BUT+4, BX+BL-2,BY,BS,BH,"")
Return
FAR:
SetGadgetColor(BUT+1, #PB_Gadget_BackColor,  RGB(#F1,#F2,#F3))
SetGadgetColor(BUT+2, #PB_Gadget_BackColor,  RGB(#F1,#F2,#F3))
SetGadgetColor(BUT+3, #PB_Gadget_BackColor,  RGB(#F1,#F2,#F3))
SetGadgetColor(BUT+4, #PB_Gadget_BackColor,  RGB(#F1,#F2,#F3))
Return
MFG ToolBoy
Windows 7 U. Windows 10 pro.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Currentpfad

Beitrag von Kaeru Gaman »

ich hab jetzt bei deinen Postings mal die Code-Tags ergänzt, mach das zukünftig bitte selber:
click im Antworten-Fenster auf den Button wo Code draufsteht.


Was ts nicht explizit erwähnt hat:
MouseX() und MouseY() sind für Mauskoordinaten auf einem Spielescreen, deswegen hat er dir auch WindowMouseX() und DesktopMouseX() gezeigt.

wenn du mehrere Fenster baust, denke dran, bei der Eventverarbeitung auch abzufragen von welchem Fenster das Event kommt.
und durchlaufe die Eventabfrage immer regelmäßig, sonst taucht über deinem Fenster die Sanduhr auf.

hier mal ein billiges Beispiel mit mehreren Fenstern:
http://www.purebasic.fr/german/viewtopi ... =8&t=20152
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
ToolBoy
Beiträge: 42
Registriert: 01.01.2010 16:19
Computerausstattung: Win 98ME, XP Home und Pro, Win2000 und WinVista32 Home Pre.
Wohnort: Duisburg

Re: Currentpfad

Beitrag von ToolBoy »

Hallo Kaeru Gaman,

Danke für den Code Tipp.
Die Sanduhr hatte ich heute schon bei MouseX() und MouseY().
Wollte mir die MouseX und Y dauerhaft anzeigen lassen.

Code: Alles auswählen

#Window1 = 0
If OpenWindow(0,0,0,702,80,"AUTO PLAYER 2010", #PB_Window_BorderLess) ;  | #PB_Window_ScreenCentered)

; Programm
Repeat
Define.i M1, M2, M3, M4
M1 = WindowMouseX(#Window1) ; x-koordinate im Fenster
M2 = WindowMouseY(#Window1) ; y-koordinate im Fenster
M3 = DesktopMouseX() ; x-koordinate auf dem Desktop
M4 = DesktopMouseY() ; y-koordinate auf dem Desktop

  TextGadget(30, 250, 50, 100,18, Str(M3)  + "  \  " +Str(M4))
  SetGadgetColor(30, #PB_Gadget_BackColor,  RGB(255,255,255))
  SetGadgetColor(30, #PB_Gadget_FrontColor,  RGB(0,0,0))
  SetGadgetFont(30, LoadFont(0, "Arial", 10))  
  ; weiter im Programm.
Sieht richtig nach Anfänger aus.
PB4.40 gefällt mir immer besser, überlege schon es zu kaufen.
Dein link ist auch gut, kann es aber wegen der Demoversion nur lesen.

MFG ToolBoy
Windows 7 U. Windows 10 pro.
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

Re: Currentpfad

Beitrag von ts-soft »

ToolBoy hat geschrieben:Dein link ist auch gut, kann es aber wegen der Demoversion nur lesen.
Ersetz mal die beiden Zeilen mit MessageBeep_() durch z.B. Debug "irgendwas", dann klappts auch
mit der Demo, denke ich mal.
ToolBoy
Beiträge: 42
Registriert: 01.01.2010 16:19
Computerausstattung: Win 98ME, XP Home und Pro, Win2000 und WinVista32 Home Pre.
Wohnort: Duisburg

Re: Currentpfad

Beitrag von ToolBoy »

Hallo,

werde ich versuchen und ich vermute mal, dass MessageBeep_() ein Infoton oder ähnliches ist?
Obwohl ich den Haken bei Angemeldet bleiben gesetzt habe, muss ich mich hier alle 10 Minuten neu anmelden, warum?

MFG ToolBoy
Windows 7 U. Windows 10 pro.
Antworten