| |
|
|
Alfred Wagner | Hallo Leute
Zuerst mal der Code KompilierenMarkierenSeparieren $P+
SET(ERRORLEVEL,0)
DEF GETSYSCOLOR(1) !USER32,GetSysColor
DECLARE ENDE%,BUTTON1&,CB1&,CB2&,CB3&
WINDOWSTYLE 63
WINDOWTITLE Neues Fenster
WINDOW 22,20-550,250
SET(TRUECOLOR,1)
CLS GETSYSCOLOR(1)
USEFONT MS Sans Serif,13,0,0,0,0
SETDIALOGFONT 1
BUTTON1& = CREATE(BUTTON,%HWND,Ende,400,190,70,22)
CB1& = CREATE(CHECKBOX,%HWND,Test Checkbox_1,20,60,200,15)
CB2& = CREATE(CHECKBOX,%HWND,Test Checkbox_2,50,80,300,15)
CB3& = CREATE(CHECKBOX,%HWND,Test Checkbox_3,230,60,200,15)
Hauptschleife
SETFOCUS(%HWND)
WHILENOT ENDE%
WAITINPUT
Erster Wert ( hier 20 ) + länge der Checkbox = dritter Wert
aber woher kommt der vierte Wert ? ( hier 70 )
If mouse(20,60,220,70)
If @IsKey(2)
Sleep 100
@MessageBox(Checkbox_1 Meldung,Meldung,16)
EndIf
Endif
Erster Wert ( hier 50 ) + länge der Checkbox = dritter Wert
aber woher kommt der vierte Wert ? ( hier 90 )
If mouse(50,80,350,90)
If @IsKey(2)
Sleep 100
@MessageBox(Checkbox_2 Meldung,Meldung,16)
EndIf
Endif
Erster Wert ( hier 230 ) + länge der Checkbox = dritter Wert
aber woher kommt der vierte Wert ? ( hier wiederum 70 )
If mouse(230,60,430,70)
If @IsKey(2)
Sleep 100
@MessageBox(Checkbox_3 Meldung,Meldung,16)
EndIf
Endif
If %KEY=2
ENDE%= 1
ELSEIF %KEY=4
ELSEIF GETFOCUS(BUTTON1&)
Ende%=1
ELSEIF GETFOCUS(CB1&)
ELSEIF GETFOCUS(CB2&)
ELSEIF GETFOCUS(CB3&)
ENDIF
ENDWHILE
Jetzt meine Frage dazu ? Woher kommt bei den 3 Checkboxen jeweils der vierte Wert her ? Der Code funktioniert zwar einwandfrei ,aber das mit dem vierten Wert lässt mir keine Ruhe .Ich möchte zugerne wissen wo dieser Wer herkommt.Wenn ich was anderes einsetze funktioniert das ganze nicht mehr,so wie es soll.
Übrigen das Beispiel lässt sich wunderbar als Kontexthilfe umbauen.
Weiß jemand von euch wie sich der vierte Wert ergiebt ? Oder ist etwa ein Fehler meinerseits im Spiel.
Grüße Alfred mit Familie |
|
|
| |
|
|
|
| Na der Vierte Wert sollte immer der Zweite Wert Plus (bei Dir 15) die Höhe des Controls sein. Ich finde Deinen Source aber sehr - sehr UnXProfan10nisch. |
|
|
| |
|
|
|
Jörg Sellmeyer | Der vierte Werte ist z. B. im ersten Fall nicht 70 sondern 75. Nämlich Oberkante der Checkbox + Höhe = Unterkante (60 + 15 = 75) Kannst Du leicht testen, indem Du bevor Du was änderst Dein Programm laufen läßt und mal im unteren Pixelbereich einer Checkbox klickst. Da passiert nix, weil 5 Pixel fehlen. Gruß Jörg
[offtopic]na, da war der iF wieder schneller...[/offtopic] |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 31.05.2007 ▲ |
|
|
|
|
Alfred Wagner | Aha jetzt hab ichs danke euch beiden
übrigens IF was meinst du mit - sehr UnXProfan10nisch. |
|
|
| |
|
|
|
| |
|
| |
|
|
|
Alfred Wagner | Aha danke für die Aufklärung nur das mit den
mouse statt usermessages , if-Verschachtelung statt select , declare statt var ,
bekäme ich so auf Anhieb nicht gebacken
Frage dazu : hätte das auch Vorteile für das Programm,wen ja welche ? |
|
|
| |
|
|
|
| Schneller, stabiler, übersichtlicher.
Schau mal so müsste Dein Code aussehen: KompilierenMarkierenSeparierendef getsyscolor(1) !user32,GetSysColor
set(errorlevel,0)
set(truecolor,1)
windowstyle 63
windowtitle neues fenster
window 22,20-550,250
cls getsyscolor(1) warum syscolor 1? msdn2.microsoft.com/en-us/library/ms724371.aspx
var myfont&=create(font,MS Sans Serif,10,0,0,0,0)
var button1& = create(button,%hwnd,ende,400,190,70,22)
var cb1& = create(checkbox,%hwnd,test checkbox_1,20,60,200,15)
var cb2& = create(checkbox,%hwnd,test checkbox_2,50,80,300,15)
var cb3& = create(checkbox,%hwnd,test checkbox_3,230,60,200,15)
setfont button1&,myfont&
setfont cb1&,myfont&
setfont cb2&,myfont&
setfont cb3&,myfont&
setfocus(%hwnd)
usermessages 123 WM_CONTEXTMENU = { $7B | 123 }
while 1
waitinput
select %key
caseof 2
break
caseof 4
nix?
endselect
select %umessage
caseof 123
select &uwparam
caseof cb1&
messagebox checkbox1,,0
caseof cb2&
messagebox checkbox2,,0
caseof cb3&
messagebox checkbox3,,0
endselect
endselect
case clicked(button1&) : break
endwhile
deleteobject myfont&
end
Und wenn Du XPSE nutzen würdest hättest Du auch noch folgende Vorteile denn Dein Code könnte so aussehen: KompilierenMarkierenSeparieren {$cleq}
set(errorlevel,0)
set(truecolor,1)
windowstyle 63
windowtitle neues fenster
window 22,20-550,250
cls getsyscolor(1)
long myfont=create(font,MS Sans Serif,10,0,0,0,0)
long button1 = create(button,hwnd,ende,400,190,70,22)
long cb1 = create(checkbox,hwnd,test checkbox_1,20,60,200,15)
long cb2 = create(checkbox,hwnd,test checkbox_2,50,80,300,15)
long cb3 = create(checkbox,hwnd,test checkbox_3,230,60,200,15)
setfont button1,myfont
setfont cb1,myfont
setfont cb2,myfont
setfont cb3,myfont
setfocus(hwnd)
usermessages WM_CONTEXTMENU
while 1
waitinput
select key
caseof 2
break
caseof 4
nix?
endselect
select umessage
caseof WM_CONTEXTMENU
select uwparam
caseof cb1
messagebox checkbox1,,0
caseof cb2
messagebox checkbox2,,0
caseof cb3
messagebox checkbox3,,0
endselect
endselect
case clicked(button1) : break
endwhile
deleteobject myfont
end
|
|
|
| |
|
|
|
| @Alfred: Seite Site ist down. [...] Schau Dir mal das kostenlose Communityangebot an [...] ich finde das ist mir sehr gelungen. |
|
|
| |
|
|
|
Alfred Wagner | oh danke If
das mit der Seite hab ich gar nicht gewusst ,muss mal schauen was da los ist
Nachtrag
cls getsyscolor(1) warum syscolor 1?
damit ich besser nachvollziehen konnte ab wo die Meldefenster reagierten |
|
|
| |
|
|