Windows Taskleiste Position,Grösse, ausblenden ?
Moderator: Moderatoren
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
Windows Taskleiste Position,Grösse, ausblenden ?
moin,
Frage :
1.) Wie kann ich die Position der Taskleiste bestimmen ?
(oben, unten, rechts, links)
2.) Wie bekomme ich die "Grösse" der Taskleiste ?
3.) wie kann ich die Taskleiste "automatisch" ausblenden lassen.
Problem :
mit o:setFrameState(XBPDLG_FRAMESTAT_MAXIMIZED) nimmt Xbase++
ja immer die "volle Grösse" ( AppDesktop:CurrentSize() ). Wenn nun der
User seine Taskbar z.B. "unten" hat und das noch über 2 oder 3 Zeilen
dann "verdeckt" es ja die Xbase++ Application ...
gruss by OHR
Jimmy
Frage :
1.) Wie kann ich die Position der Taskleiste bestimmen ?
(oben, unten, rechts, links)
2.) Wie bekomme ich die "Grösse" der Taskleiste ?
3.) wie kann ich die Taskleiste "automatisch" ausblenden lassen.
Problem :
mit o:setFrameState(XBPDLG_FRAMESTAT_MAXIMIZED) nimmt Xbase++
ja immer die "volle Grösse" ( AppDesktop:CurrentSize() ). Wenn nun der
User seine Taskbar z.B. "unten" hat und das noch über 2 oder 3 Zeilen
dann "verdeckt" es ja die Xbase++ Application ...
gruss by OHR
Jimmy
- Jan
- Marvin
- Beiträge: 14641
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 87 Mal
- Kontaktdaten:
Jimmy,
ich bin mir nicht sicher, ob ich Dein Problem verstanden habe. Du möchtest Deinen Dialog immer so groß haben, daß der User seinen Bildschirm komplett gefüllt hat, aber auch nichts verdeckt wird, egal wie der User seine Taskleiste eingestellt hat?
Das wäre relativ einfach. Schau Dir mal mein Beispiel an, daß Du runtergeladen hast. Ich schreibe meine Programme grundsätzlich so, daß sie sich der Bildschirmgröße anpassen. Egal welche Bildschirmauflösung, egal wie die Taskleiste eingestellt ist.
Ich lese am Programmbeginn die zur Verfügung stehende Bildschirmgröße in eine Private-Variabe gaBildschirmgroesse := SetAppWindow():currentSize() (in dem Beispiel noch aBildschirmgroesse) ein, die ich immer wieder auslesen kann. Dadurch kann ich die Dialoggröße variieren. Was natürlich auch bedeutet, das der Dialoginhalt dynamisch verwaltet wird. Das ist bei Browses relativ einfach, da kann man einfach die Spaltenbreite und die Browsehöhe variieren. Bei reinen Eingabemasken ist das schon aufwändiger.
Jan
ich bin mir nicht sicher, ob ich Dein Problem verstanden habe. Du möchtest Deinen Dialog immer so groß haben, daß der User seinen Bildschirm komplett gefüllt hat, aber auch nichts verdeckt wird, egal wie der User seine Taskleiste eingestellt hat?
Das wäre relativ einfach. Schau Dir mal mein Beispiel an, daß Du runtergeladen hast. Ich schreibe meine Programme grundsätzlich so, daß sie sich der Bildschirmgröße anpassen. Egal welche Bildschirmauflösung, egal wie die Taskleiste eingestellt ist.
Ich lese am Programmbeginn die zur Verfügung stehende Bildschirmgröße in eine Private-Variabe gaBildschirmgroesse := SetAppWindow():currentSize() (in dem Beispiel noch aBildschirmgroesse) ein, die ich immer wieder auslesen kann. Dadurch kann ich die Dialoggröße variieren. Was natürlich auch bedeutet, das der Dialoginhalt dynamisch verwaltet wird. Das ist bei Browses relativ einfach, da kann man einfach die Spaltenbreite und die Browsehöhe variieren. Bei reinen Eingabemasken ist das schon aufwändiger.
Jan
-
- Rekursionen-Architekt
- Beiträge: 194
- Registriert: Fr, 24. Feb 2006 8:09
- Kontaktdaten:
Hallo Jimmy,
Ich starte manche Applikationen im Modus "XBPDLG_FRAMESTAT_MAXIMIZED". Dabei berechnet Xbase automatisch die Größe der Taskbar (egal ob sie 1, 2, ... Zeilig ist; links, rechts, oben, unten) und zieht diese entsprechend in der Applikation ab.
Dies auch wenn die Applikation im Maxi Modus ist und ich die Taskbar dann von rechts nach links, etc. verschiebe.
Woran das nun liegt dass es bei dir nicht so ist?
Evtl. der Parent? Bei mir ist es AppDesktop() - für das Hauptfenster.
Gruß,
Notloesung
Das habe ich mich auch schon öfters gefragt. Bisher leider erfolglos.Wie bekomme ich die "Grösse" der Taskleiste ?
Dem kann ich so nicht zustimmen.mit o:setFrameState(XBPDLG_FRAMESTAT_MAXIMIZED) nimmt Xbase++
ja immer die "volle Grösse" ( AppDesktop:CurrentSize() ). Wenn nun der
User seine Taskbar z.B. "unten" hat und das noch über 2 oder 3 Zeilen
dann "verdeckt" es ja die Xbase++ Applikation ...
Ich starte manche Applikationen im Modus "XBPDLG_FRAMESTAT_MAXIMIZED". Dabei berechnet Xbase automatisch die Größe der Taskbar (egal ob sie 1, 2, ... Zeilig ist; links, rechts, oben, unten) und zieht diese entsprechend in der Applikation ab.
Dies auch wenn die Applikation im Maxi Modus ist und ich die Taskbar dann von rechts nach links, etc. verschiebe.
Woran das nun liegt dass es bei dir nicht so ist?
Evtl. der Parent? Bei mir ist es AppDesktop() - für das Hauptfenster.
Gruß,
Notloesung
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
hi,
geb mal :
in der CMD Box ein und "check" mal die 2st Checkbox
( Taskleiste automatisch ausblenden ). Danach Maus "weg"
von der Taskliste und schon hast du "volles Bild" Format.
genau diesen "Vorgang" möchte ich direkt aus Xbase++
"kontrollieren" können ("check" setzen/nicht setzten )
gruss by OHR
Jimmy
das liegt daran das deine Taskbar nicht "ausgeblendet" wird.notloesung hat geschrieben: Dem kann ich so nicht zustimmen.
geb mal :
Code: Alles auswählen
rundll32.exe shell32.dll,Options_RunDLL 1
( Taskleiste automatisch ausblenden ). Danach Maus "weg"
von der Taskliste und schon hast du "volles Bild" Format.
genau diesen "Vorgang" möchte ich direkt aus Xbase++
"kontrollieren" können ("check" setzen/nicht setzten )
gruss by OHR
Jimmy
- Jan
- Marvin
- Beiträge: 14641
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 87 Mal
- Kontaktdaten:
Jimmy,
verstehe ich das richtig: Du möchtest dynamisch feststellen, ob gerade in diesem Moment die Taskleiste angezeigt wird und im nächsten nicht mehr? Weil die Maus die "rauslockt" bzw. wieder verschwinden lässt?
Ich muß gestehen daß mir persönlich das vollkommen egal ist. Denn auch ich habe meine Rechner alle so eingestellt, das die Taskleiste normalerweise weg ist, und nur beim Hingehen mit der Maus wieder erscheint. Aber dann ist die Taskleiste immer nur so kurz da, daß sie nicht wirklich im Dialog stört.
Oder habe ich da etwas falsch interpretiert?
Jan
verstehe ich das richtig: Du möchtest dynamisch feststellen, ob gerade in diesem Moment die Taskleiste angezeigt wird und im nächsten nicht mehr? Weil die Maus die "rauslockt" bzw. wieder verschwinden lässt?
Ich muß gestehen daß mir persönlich das vollkommen egal ist. Denn auch ich habe meine Rechner alle so eingestellt, das die Taskleiste normalerweise weg ist, und nur beim Hingehen mit der Maus wieder erscheint. Aber dann ist die Taskleiste immer nur so kurz da, daß sie nicht wirklich im Dialog stört.
Oder habe ich da etwas falsch interpretiert?
Jan
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
hi,
da ich mit dem RunDLL32.EXE Befehl ja schon die "Karte" aufrufen kann
frage ich mich wie ich "direkt" an die SHELL32.DLL rankomme ( API ?),
um damit "Kontrolle" über die 2st "Checkbox" (automatisch ausblenden)
zu bekommen ?
beim googlen hab ich was mit CreateObject("W..Shell..") gefunden
sowie den Hinweis auf "autoIt" ( Scriptsprache ) womit man direkt
an die 2st "Checkbox" rankommt. ( Activex ? )
was ich dann mit der "Kontrolle" mache hängt ganz von der Situation ab.
XbpDialog "unten" eine Statusbar und da sind "Tasten" drin. Wenn man
nun "unten" die Taskliste hat und kein "Thema" (Classic) unter W2K und
die nicht automatisch ausblendet, dann liegt die Taskliste "über" der
Xbase++ Application bei XBPDLG_FRAMESTAT_MAXIMIZED.
also versuche ich jetzt über API oder ActiveX was zu machen um irgndwie
"Kontrolle" über die Taskliste zu bekommen.
gruss by OHR
Jimmy
yup, noch besser die "Kontrolle".Jan hat geschrieben: Du möchtest dynamisch feststellen, ob gerade in diesem Moment die Taskleiste angezeigt wird und im nächsten nicht mehr? Weil die Maus die "rauslockt" bzw. wieder verschwinden lässt?
da ich mit dem RunDLL32.EXE Befehl ja schon die "Karte" aufrufen kann
frage ich mich wie ich "direkt" an die SHELL32.DLL rankomme ( API ?),
um damit "Kontrolle" über die 2st "Checkbox" (automatisch ausblenden)
zu bekommen ?
beim googlen hab ich was mit CreateObject("W..Shell..") gefunden
sowie den Hinweis auf "autoIt" ( Scriptsprache ) womit man direkt
an die 2st "Checkbox" rankommt. ( Activex ? )
was ich dann mit der "Kontrolle" mache hängt ganz von der Situation ab.
mich auch nicht, den ich habe die "oben". Nun hab ich aber in meinemJan hat geschrieben: Ich muß gestehen daß mir persönlich das vollkommen egal ist. Denn auch ich habe meine Rechner alle so eingestellt, das die Taskleiste normalerweise weg ist, und nur beim Hingehen mit der Maus wieder erscheint. Aber dann ist die Taskleiste immer nur so kurz da, daß sie nicht wirklich im Dialog stört.
XbpDialog "unten" eine Statusbar und da sind "Tasten" drin. Wenn man
nun "unten" die Taskliste hat und kein "Thema" (Classic) unter W2K und
die nicht automatisch ausblendet, dann liegt die Taskliste "über" der
Xbase++ Application bei XBPDLG_FRAMESTAT_MAXIMIZED.
also versuche ich jetzt über API oder ActiveX was zu machen um irgndwie
"Kontrolle" über die Taskliste zu bekommen.
gruss by OHR
Jimmy
- Jan
- Marvin
- Beiträge: 14641
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 87 Mal
- Kontaktdaten:
Hallo Jimmy,
irgendwie begreife ich das nicht. Vielleicht bin ich noch nicht ganz wach
Aber wenn Du doch die zur Verfügung stehende Bildschirmgröße ermitteln kannst, dann kannst Du doch Deinen Dialog genau so groß oder klein machen, daß die Taskleiste Deine Statusleiste eben nicht überdeckt.
Denn Die Taskleiste komplett verschwinden lassen zu können kann ja nicht wirklich der Sinn der Sache sein. Ebenso eine Dir passende Position dafür festzulegen bei einem User, der das genau anders haben möchte.
Ich arbeite auch mit Win2000Pro bzw. XP, grundsätzlich immer auf 2000-Look ohne optische Mätzchen eingestellt. und wie oben schon mal erwähnt - durch die dynamische Größe der Dialoge habe ich da nie ein Problem mit. Auch nicht mit Statusleisten, die ich allerdings bislang nur in einem einzigen Projekt eingebaut habe.
Jan
irgendwie begreife ich das nicht. Vielleicht bin ich noch nicht ganz wach
Aber wenn Du doch die zur Verfügung stehende Bildschirmgröße ermitteln kannst, dann kannst Du doch Deinen Dialog genau so groß oder klein machen, daß die Taskleiste Deine Statusleiste eben nicht überdeckt.
Denn Die Taskleiste komplett verschwinden lassen zu können kann ja nicht wirklich der Sinn der Sache sein. Ebenso eine Dir passende Position dafür festzulegen bei einem User, der das genau anders haben möchte.
Ich arbeite auch mit Win2000Pro bzw. XP, grundsätzlich immer auf 2000-Look ohne optische Mätzchen eingestellt. und wie oben schon mal erwähnt - durch die dynamische Größe der Dialoge habe ich da nie ein Problem mit. Auch nicht mit Statusleisten, die ich allerdings bislang nur in einem einzigen Projekt eingebaut habe.
Jan
- AUGE_OHR
- Marvin
- Beiträge: 12903
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 44 Mal
hi,
1280x768. Wenn ich nun den XbpDialog maxmiere dann liegt die
Statusbar bei {0,22,1280,22). Hat nun jemand die Taskliste "unten" und
"automatisches Ausblenden" oder "immer im Vordergrund" dann kann ich
mit der Maus nicht in den Bereich {0,22,1280,22) weil ich dann immer
auf der Taskleiste lande.
Nur wenn die Taskliste "fixiert" ist reduziert sich die Grösse um die "Höhe"
oder "Breite" der Taskliste.
einzubauen, aber beim Mediaplayer wird immer nach maximalen
"Fenstern" gefragt und im "FullScreen" Modus sieht der User den
Desktop gar nicht mehr.
als Programmierer interessiert es mich nun wie ich per API oder
aktiveX an solche Sachen rankomme um möglichst alles aus meiner
Application herraus zu "steuern".
gruss by OHR
Jimmy
AppDeskTop:currentSize() gibt ja den ganzen Desktop zurück z.b.Jan hat geschrieben: Aber wenn Du doch die zur Verfügung stehende Bildschirmgröße ermitteln kannst, dann kannst Du doch Deinen Dialog genau so groß oder klein machen, daß die Taskleiste Deine Statusleiste eben nicht überdeckt.
1280x768. Wenn ich nun den XbpDialog maxmiere dann liegt die
Statusbar bei {0,22,1280,22). Hat nun jemand die Taskliste "unten" und
"automatisches Ausblenden" oder "immer im Vordergrund" dann kann ich
mit der Maus nicht in den Bereich {0,22,1280,22) weil ich dann immer
auf der Taskleiste lande.
Nur wenn die Taskliste "fixiert" ist reduziert sich die Grösse um die "Höhe"
oder "Breite" der Taskliste.
deshalb "Kontroll" um es save/restoren zu können.Jan hat geschrieben: Denn Die Taskleiste komplett verschwinden lassen zu können kann ja nicht wirklich der Sinn der Sache sein. Ebenso eine Dir passende Position dafür festzulegen bei einem User, der das genau anders haben möchte.
sicherlich ist es nicht die beste Lösung "Buttons" in die StatusbarJan hat geschrieben: Ich arbeite auch mit Win2000Pro bzw. XP, grundsätzlich immer auf 2000-Look ohne optische Mätzchen eingestellt. und wie oben schon mal erwähnt - durch die dynamische Größe der Dialoge habe ich da nie ein Problem mit. Auch nicht mit Statusleisten, die ich allerdings bislang nur in einem einzigen Projekt eingebaut habe.
einzubauen, aber beim Mediaplayer wird immer nach maximalen
"Fenstern" gefragt und im "FullScreen" Modus sieht der User den
Desktop gar nicht mehr.
als Programmierer interessiert es mich nun wie ich per API oder
aktiveX an solche Sachen rankomme um möglichst alles aus meiner
Application herraus zu "steuern".
gruss by OHR
Jimmy
- Jan
- Marvin
- Beiträge: 14641
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 87 Mal
- Kontaktdaten:
Jimmy,
aahhhh, jetzt kommen wir der Sache schon näher.
Dann hast Du den wirklich "brauchbaren" Platz und nicht die gesamte Monitorgröße.
Jan
aahhhh, jetzt kommen wir der Sache schon näher.
Das muß seinAppDeskTop:currentSize()
Code: Alles auswählen
SetAppWindow:currentSize()
Jan
-
- Rekursionen-Architekt
- Beiträge: 315
- Registriert: Mo, 16. Okt 2006 13:04
- Wohnort: Region Stuttgart
Hallo Jimmy,
ich habe ein kleines Beipielprogramm dafür in die Wissensbasis gestellt.
Viele Grüße,
Günter
Jimmy hat geschrieben:1.) Wie kann ich die Position der Taskleiste bestimmen ?
(oben, unten, rechts, links)
2.) Wie bekomme ich die "Grösse" der Taskleiste ?
3.) wie kann ich die Taskleiste "automatisch" ausblenden lassen.
ich habe ein kleines Beipielprogramm dafür in die Wissensbasis gestellt.
Viele Grüße,
Günter