Benutzer mit den meisten Antworten
anzeigen eines Bildes ohne Formulargebundenheit

Frage
-
Hallo Liebe Community..
Ich will ein Bild anzeigen lassen. Aber nicht auf dem Formular, sondern auf dem screen selber. Aber es soll in der Objekt -reihenfolge ganz nach oben, so dass es die geöffneten Formulare verdeckt.
Ich habe das Bild mit _Screnn.addobject hinzugefügtaber ich kann die ZOrder nicht verändern
Wie kriege ich das hin, das nur das bild über den Formularen liegt oder dass es zumindest so aussieht??
Donnerstag, 11. Juli 2013 14:30
Antworten
-
Also,
_SCREEN ist ein Form, siehe _SCREEN.Classs oder _SCREEN.BaseClass.
Genauso wie Controls auf einem Formular nicht vor andere Formulare positionierbar sind, sondern nur das gesamte Formular, genauso ist das Image, was Du per AddObject auf den _Screen aufbringst eben nicht vor anderen Forms sichtbar, und den _SCREEN ganz nach vorne zu bringen wäre nutzlos, selbst wenn es ginge.
Nur Formulare innerhalb des _SCREEN können vor anderen Formularen im _SCREEN positioniert werden, nicht Controls, das ist der Riesenunterschied.
Du kannst ja auch mal probieren zwei Formulare Form1 und Form2 zu starten, und auf Form1 ein Bild per Addobject zu ergänzen, dass dann vor Form2 erscheint, obwohl sich Form2 vor Form1 schiebt.
Tschüß, Olaf.
Olaf Doschke (Setmics)
PS: Du kannst ja auch mal probieren, per AddObject ein Formular in den Screen zu ergänzen: _screen.AddObject("form1","form"). Siehst Du den Unterschied?- Bearbeitet Olaf Doschke Montag, 15. Juli 2013 15:58 PS ergänzt
- Als Antwort markiert Schosch93 Montag, 19. August 2013 11:43
Montag, 15. Juli 2013 15:50
Alle Antworten
-
Der _screen ist immer im Hintergrund.
Objekte auf Formularen, egal welchen, können nicht vor anderen Formularen sein, das Formular selbst aber dahinter, sowas gibt's nicht.
Es gibt durchsichtige Formulare, Regionen, die durchsichtig sein können, runde Formulare, was Du willst, aber der _SCREEN ist der Hintergrund (TOP LEVEL - also Wurzelelement - ist es nur in Bezug auf die "enthält" Hierarchie, alle anderen Formulare sind Childs, enthalten in und sinnvollerweise in ZORDER davor)
In Deinem Fall würde man das Bild auf ein neues Formular setzen, dass Du mit BorderStyle=0, TitleBar=0 zum reinen Canvas machst, dann kannst Du auch Form.Picture nutzen und hast ein "reines Bild". Übrigens gibt's auch ein sample was zeigt, wie man sogar vor allen Applikationen auf den Desktop schreibt. Schau mal in die solutions.app unter Creating Irregularly shaped windows.
Tschüß, Olaf.
Olaf Doschke (Setmics)
PS: Das Sample zum Schreiben auf den Desktop findet man wohl eher be GDIPLUSX unter Codeplexs VFPX, aber ich hab's jetzt auf Anhieb auch nicht gefunden, vielleicht auch unter nws2news.
Das Sample für irregular shaped windows ist insofern auch hilfreich, weil ein spezialfall davon auch sein kann ein nicht rechteckiges Bild oder ein PNG mit transparenz anzuzeigen.
Eine Messagebox wäre auch eine Lösung, die immer vor allem anderen entsteht.
- Bearbeitet Olaf Doschke Montag, 15. Juli 2013 06:00 PS additional infos
Samstag, 13. Juli 2013 08:17 -
Ja eben.. Wenn ich sage _screen.adobject("bild1","image") dann wird dem screen ein image-objekt hinzugefügt.. ein zwei weitere codes um das objekt anzupassen und gut is.. Ein Formular ist doch auch "nur" ein Objekt, welches genau wie das image den _screen als parent hat. folglich müssten dann das bild und das formular genauso manipulierbar sein wie z.B. ein textfeld und ein butten auf einem Formular.. Bei dem Formular kann mann dann sagen Thisform.txt1.zorder(0) um das textfeld über den button zu legen (oder drunter, weiß grade nich 100%ig, aber egal)
genauso müsste sich das doch dann auch mit dem bild-objekt und dem Formular-objekt verhalten, und genau das tut es nicht..
Ich wollte halt, das "NUR" das Bild im vordergrund steht. Das heißt wenn ich das nicht über zorder, sondern nur mit einem zweiten Formular, welchen das bild enthält regeln kann, dann stört mich immernoch der hintergrund des Formulars, weil ich kein fensterhaben will, sondern nur das bild. Da das bild 3-eckig ist, kann ich auch nicht einfach nur die title-bar und den border wegmachen, weil ich dann immer noch den grauen hintergrund des formulars habe. Ich habe auch nichts gefunden, wie man den backstyle vom formular auf tranzparent setzen könnte (oder etwas ähnliches imitieren)
Ich weiß, dass man das ich mich auch mit dem Fenster zufrieden geben könnte, aber ich bin ein wenig perfektionistisch, was meine Layouts und die Bedienung meiner Anwendungen angeht :D :D
also ist es irgentwie möglich NUR das 3eckige bild ohne etwas rahmen-ähnliches in den vordergrund zu hohlen??
PS.: wenn es nicht geht, dann geht es halt nich, dann muss ich halt mit dem formular arbeiten, aber glücklicher wäre ich wenn es irgentwie klappt ^^Montag, 15. Juli 2013 06:39 -
Also,
_SCREEN ist ein Form, siehe _SCREEN.Classs oder _SCREEN.BaseClass.
Genauso wie Controls auf einem Formular nicht vor andere Formulare positionierbar sind, sondern nur das gesamte Formular, genauso ist das Image, was Du per AddObject auf den _Screen aufbringst eben nicht vor anderen Forms sichtbar, und den _SCREEN ganz nach vorne zu bringen wäre nutzlos, selbst wenn es ginge.
Nur Formulare innerhalb des _SCREEN können vor anderen Formularen im _SCREEN positioniert werden, nicht Controls, das ist der Riesenunterschied.
Du kannst ja auch mal probieren zwei Formulare Form1 und Form2 zu starten, und auf Form1 ein Bild per Addobject zu ergänzen, dass dann vor Form2 erscheint, obwohl sich Form2 vor Form1 schiebt.
Tschüß, Olaf.
Olaf Doschke (Setmics)
PS: Du kannst ja auch mal probieren, per AddObject ein Formular in den Screen zu ergänzen: _screen.AddObject("form1","form"). Siehst Du den Unterschied?- Bearbeitet Olaf Doschke Montag, 15. Juli 2013 15:58 PS ergänzt
- Als Antwort markiert Schosch93 Montag, 19. August 2013 11:43
Montag, 15. Juli 2013 15:50