| |
|
|
p.specht
| Bei manchen Programmen begegnet man Fenster-Stilen, die einem im ersten Moment exotisch vorkommen. Bekommt man die Steuerungsnummer des gewählten Stiles heraus, dann ist die Frage, welche Steuerelemente dabei überhaupt angesprochen werden (und wie). Umgekehrt ist es eine ziemliche Rechnerei, sich einen eigenen Fensterstil zu basteln. Obwohl das nachstehende Machwerk noch grobe Macken hat - die Eingabe "t" (= Fenstertest im gewählten Stil) will noch nicht so recht klappen - , so hat es doch einige recht nützliche Funktionen.
WindowTitle upper$(" Windowstyle auswerten \\ ermitteln (V 11.2a)")
'(S) Spaghettiware A.D.2017-01 by P.Specht, Wien/Ösiland. Keine Gewähr, für nichts!
CLS : font 2 : usepen 0,2,255:rectangle 257,344-370,374
declare i&, WS$, fs&, tmp$, mb&, mausabfr&, bit&, the_cows_come_home&
fs&=%windowstyle
WS$=" 0,Keine Größenänderung\\kein Systemmenü, 1,Vergrößerungspfeil (in Verbindung mit 8),"+\
" 2,Verkleinerungspfeil zu Icon (in Verbindung mit 8), 4,Größe änderbar,"+\
" 8,Autom. Systemmenü, 16,kein Autom. Menü, 32,Bildschirmhintergrund, 64,keine Titelleiste,"+\
" 128,kein Abbruch m.Strg+Esc\\Alt+F4 + kein Wechsel\\Alt+Tab,"+\
" 256,kein Abbruch doch Wechsel mit Alt+Tab\MenuItem,"+\
" 512,Hauptfenster reagiert wie Dialogfenster,1024,Tool-Window: Klein\\nicht in Taskleiste,;"+\
"Kombinationen werden durch Addition der einzelnen Werte erreicht.;"+\
"Damit der Befehl Wirkung zeigt, muss er VOR dem ersten Öffnen des Programmfensters erfolgen!;"+\
"Bildschirmhintergrund klappt nicht wenn Erstfenster mit CLS geöffnet wird.;"+\
"Ideal für Bildschirmschoner ist Stil 240.;"+\
"Der Stil 512 ist dann zu verwenden, wenn ein Programm auf dem Hauptfenster Dialogelemente anlegt.;"+\
"Die Stile 256 und 128 sind nicht mit dem neuen Stil 512 zusammen zu verwenden.;"+\
"Dialogfenster-Stil 512 lässt Dialogelemente auf dem Hauptfenster gem. Standard reagieren, ...;"+\
"ad 512: - mit TAB kann zwischen den Dialogelementen umgeschaltet werden, ...;"+\
"ad 512: - Buttons reagieren nur beim Loslassen des Knopfes, ...;"+\
"ad 512: - Hauptfenster reagiert nicht selbst auf Schließen, sondern es wird %Key=2 gesetzt."
REPEAT
AppendMenuBar 100,substr$(ws$,mb&+2,";")
locate 3,1
whileloop 24:i&=&Loop:print " ";
case (i& mod 2) and testbit(fs&,&Loop\2-1):color 15,1
print " ";substr$(ws$,i&,",");
if i& mod 2: print " ";:color 0,15
else:print:print
endif
endwhile:print
huh:
Print " ==== Stil: ";right$(" "+str$(fs&),4);
print " Abfrage: Bsp.: 123, %10, $1F, ";
color 0,14:print "m > Maus":color 0,15
ifnot mausabfr&
locate %csrlin-1,35:input tmp$:case tmp$>"":fs&=val(tmp$)
if lower$(left$(trim$(tmp$),1))="t"
TESTWINDOW()
endif
if lower$(left$(trim$(tmp$),1))="m":mausabfr&=1
usepen 0,2,$FFFFFF:usebrush 0,0:rectangle 257,344-370,374
usepen 0,2,255:rectangle 2,23 - 100,333
: goto "skip":endif
if (fs&>=2048) or (fs&<-1):locate %csrlin-1,1:beep:goto "huh":endif
case fs&=-1:end
endif
skip:
print "\n ";right$(" "+str$(fs&),4);" = ";
:Whileloop 10,0,-1:print testbit(fs&,&Loop);" ";:endwhile:print
if mausabfr&
waitinput
if (%mousekey=1) AND mouse(0,24-100,333)
bit&=int((%mousey-23)/26):case bit&=0:fs&=0
'locate 1,1:print bit&-1;" ";
if testbit(fs&,bit&-1)=0
fs&=fs& | (2^(bit&-1))
else
fs&=(fs&) & (2^31-1-2^(bit&-1))
endif
else
mausabfr&=0:sound 100,30
cls:usepen 0,2,255:rectangle 257,344-370,374
endif
endif
RemoveMenu 100:inc mb&:case mb&>9:mb&=0
UNTIL the_cows_come_home&
Proc TestWindow
var Thdl&=@Create("Window",%HWnd,"SO SIEHT DAS LEIDER NOCH NICHT AUS!",100,100,300,200)
SetStyle Thdl&,1,GetStyle(Thdl&) | FS&
waitinput 2000
if destroywindow(Thdl&)<>1:cls:print "\n\n\n SORRY, DA LIEF JETZT WAS SCHIEF!"
sound 2000,200:waitinput:end:endif
EndProc
PROGEND
|
|
|
| Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 24.05.2021 ▲ |
|
|
|
|
Michael W. | Ich weiß nicht, was da nicht stimmen sollte.
Vor UNTIL fehlt ein Doppelpunkt.
Sonst sieht das gut aus. |
|
|
| |
|
|
|
p.specht
| Danke für den Hinweis, Michael - oben korrigiert. |
|
|
| XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 07.06.2021 ▲ |
|
|
|