Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Desktop in einem Fenster (https://www.delphipraxis.net/181539-desktop-einem-fenster.html)

Popov 22. Aug 2014 17:55

Desktop in einem Fenster
 
Aus technischen Gründen sind bei einem Monitor Teile des Monitors verdeckt (bzw. Ränder), somit kann man nicht der ganze Desktop sehen. Womit man sich zurzeit behilft ist die Programmfenster anzupassen. Das klappt, ist aber auf die Dauer keine Lösung.

Aus diesem Grund möchte einen nicht nutzbaren Rahmen für den Rechner, bzw. Desktop programmieren.

Mit welcher Technik kann ich das am besten lösen? Hat jemand einen Tipp? Es müssen alle Seiten des Monitors zugeschnitten werden.

Namenloser 22. Aug 2014 18:13

AW: Desktop in einem Fenster
 
Man kann unter Windows "Toolbars" für den Desktop registrieren. Die Taskbar selbst ist so eine, und die Sidebar bei Vista war auch eine solche. Es gibt auch verschiedene alternative Sidebars, Gadgets etc. im Internet, die diese API verwenden. Maximierte Anwendungen berücksichtigen diese Abstände. Ich weiß allerdings nicht auswendig, wie diese API-Funktionen heißen. Vielleicht hilft Google dir da weiter.

Aber die effizienteste Technik wäre wohl, sich zu überlegen, wie lange ein Programmierer braucht, bis dieser Software-Workaround einwandfrei läuft, dieses mit seinem Stundenlohn zu multiplizieren, und anschließend einen neuen Monitor zu kaufen ;)

jaenicke 22. Aug 2014 19:18

AW: Desktop in einem Fenster
 
Wenn es um XP geht, kann man auch einfach über das Kontextmenü der Taskleiste eine neue Symbolleiste erzeugen und die an den Bildschirmrand ziehen. Bei Windows 8 gibt es diese Möglichkeit allerdings nicht mehr.

Popov 23. Aug 2014 17:43

AW: Desktop in einem Fenster
 
@Namenloser

Das Problem liegt nicht am Monitor, sondern, dass er an den Rändern etwas verdeckt ist.


Ich hab etwas zu dem Thema gefunden und mir ist es auch gelungen paar Taskbars zu starten mit denen ich einen Rand bilden kann.

Das Problem was ich habe ist aber noch die Windows-Taskbar, denn die bleibt stets am äußersten Rand und läßt sich nicht nach innen verschieben. D. h. meine Taskbar ist über der Windows-Taskbar. Die anderen drei Seiten sind also nicht das Problem, aber mit dem Rand wo die Windows-Taskbar liegt klappt das nicht.

jaenicke 23. Aug 2014 19:17

AW: Desktop in einem Fenster
 
Suche dir das Handle mit FindWindow und verschiebe diese einfach selbst mit einem Programm. Das habe ich zwar nie ausprobiert, aber es könnte ja gehen.

Namenloser 23. Aug 2014 20:46

AW: Desktop in einem Fenster
 
Falls der Monitor per VGA angeschlossen ist, könntest du vielleicht auch im Monitor-Menü das Bild nach oben verschieben.

vagtler 23. Aug 2014 23:09

AW: Desktop in einem Fenster
 
Zitat:

Zitat von Popov (Beitrag 1269660)
[...] Das Problem liegt nicht am Monitor, sondern, dass er an den Rändern etwas verdeckt ist. [...]

Nun, dass ein Monitor zu groß ist liegt normalerweise schon am Monitor... :p

Popov 27. Aug 2014 02:00

AW: Desktop in einem Fenster
 
Natürlich kann man zu einem McDrive auch zu Fuß gehen, wenn die Frage aber ist wie man dahin mit dem Auto hin kommt, dann will man wohl dahin nicht gehen :-D Wenn nur ein Teil des Monitors sichtbar ist und die Frage lautet wie man die WorkArea anpassen kann, dann ist nicht Frage ob man sich auch ein kleineren Monitor besorgen kann ;)

Zurück zur Frage. Ich hab mich da in dieses Thema etwas eingearbeitet und kann inzwischen eine Leiste in der Art von Taskleiste erstellen, nur habe ich jetzt ein Problem. Nachdem ich zuerst alles von Hand gemacht habe, was auch klappte, verwarf ich zuletzt alles und nutze inzwischen die Unit AppBar (v. 1.4). Man spart sich etwas Schreibarbeit.

Das Problem ist, dass ich mit einem Programm vier Formulare erstelle, von denen jede eine Seite übernimmt. Somit kann ich - zumindest Theoretisch - jeder Seite einziehen. Nun erfüllt von den Formularen stets nur einer seinen Job, eben der erste der aufgerufen wird. Die restlichen Formulare werden wie normale Fenster behandelt.

Bevor ich mich nun in Versuche stürze und das bisherige Programm verwerfe, gibt es evtl. eine Einschränkung, wonach ein Programm nur eine AppBar liefern kann? Mit vier Programmen kann ich das erfüllen was ich benötige, aber nicht mit einem Programm mit vier Fenstern. Jetzt weiß ich nicht ob das an der Unit liegt oder Regel ist?

pelzig 27. Aug 2014 06:19

AW: Desktop in einem Fenster
 
Lass doch dein Programm den paramstr(1) auswerten. Ohne klebt es sich z.B. unten fest und startet sich dann dreimal neu mit /left, /top und /right. Läuft dann zwar 4x, ist aber nur ein Programm.

MfG

himitsu 27. Aug 2014 08:03

AW: Desktop in einem Fenster
 
Die Anzahl der AppBars sollte nicht beschränkt sein.

Da ich jetzt keine große Lust hab alles selber zu suchen und Google auf die Schelle nicht eindeutig etwas zeigte, daß eindeutig das ist, was du nutzt, und jemand nicht verlinkte was er meinte.
k.A. ob es an dieser Unit liegt.
Aber wenn es nicht geht, dann sollte eine ordentliche Fehlerbehandlung bei den APIs genau sagen warum was nicht ging.

Headbucket 27. Aug 2014 09:37

AW: Desktop in einem Fenster
 
Entweder habe ich dich falsch verstanden oder das ist eine "Mit Kanonen nach Spatzen schießen"-Aktion.
So wie ich dich verstanden habe: Der Monitor ist z.B. fest in einer Konstruktion eingebaut, welche den Monitor teilweise verdeckt.
(1) Lösung:
Kleinerer Monitor (willst du nicht)
(2) Lösung:
Monitor selbst skalieren, wie schon erwähnt wurde:
Zitat:

Zitat von Namenloser (Beitrag 1269669)
Falls der Monitor per VGA angeschlossen ist, könntest du vielleicht auch im Monitor-Menü das Bild nach oben verschieben.

Sollte das der Monitor nicht können, sollte das jeder Grafiktreiber können. Ich selbst nutze eine ATI-Grafikkarte und dort kann man das Bild einfach skalieren. Du kannst das Bild auch um 90° drehen und was auch immer. Hast du schon nach solchen Lösungen geschaut? Wieso ist es dort gescheitert? Das ganze sollte 2 Minuten dauern und du hast eine Lösung.

Vllt habe ich dich aber auch falsch verstanden.

Grüße
Headbucket

pelzig 27. Aug 2014 11:38

AW: Desktop in einem Fenster
 
Sollte es sich um Missverständnisse handeln, z.B. ein alter festeingebauter Röhrenmonitor: die Dinger haben oft auf der Rückseite versenkt eingebaute Stellschrauben, mit denen sich Bildgröße usw. verstellen lassen. Statt Dephi-Software reicht dann bereits ein Hardware-Schraubendreher :thumb:

Was ist das für ein Monitor, der sich nicht über die Systemsteuerung anpassen lässt :evil: ?

MfG

Popov 27. Aug 2014 15:52

AW: Desktop in einem Fenster
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke für die Tipps bezüglich Hardwarelösungen, aber wie ich schon erwähnt habe, dass ist nicht der Lösungsweg. Wäre es ein Hardwareproblem, würde ich nicht hier Hilfe suchen, sondern in einem Hardware-Forum. Klar, man muss kein Textverarbeitungsprogramm programmieren, man kann einen Brief auch mit einem Bleistift schreiben. Aber Programmierer sind da eigen. Statt den Bleistift zu nutzen, schrieben sie lieber ein Programm mit dem sie ihn schrieben können. Bevor es aber weiter zu Missverständnissen und Hardwaretipps kommt, es geht hier um ein Softwareproblem. Sorry wenn ich einen falschen Eindruck hinterlassen habe, ich dachte die Details des Problems sind für die Lösung nicht so wichtig. Es geht hier um Präsentationssoftware mit der man auf auf einem fremden Rechner seinen Desktop im Vollbildmodus darstellen kann. In der Regel klappt das, aber bei einigen wenigen Rechner wird kein Vollbildmodus erzeugt, warum auch immer. Stattdessen sieht man das Fenster nur maximiert. Teile des Desktops (also Bildes) sind also verdeckt, von Fensterrahmen, Titelleiste, Bildlaufleisten, usw.

Und nein, ich werde mich nicht in den Flieger schwingen und rüberfliegen um den technisch unkundigen Kunden bei ihren Problemen helfen. Auch werde ich keine andere Software nehmen, denn die ist vorgegeben. Da habe ich keinen Einfluss drauf. Was ich aber machen kann ist die WorkArea das präsentierenden Rechners verkleinern.

Und ja, ich man kann die Programmfenster so verkleinernden, dass man sie auf der anderen Seite sieht, auf Dauer ist das ständige Anpassen aber doch anstrengend. Auch das ständige Fragen: "Können Sie es jetzt sehen? Nein? Noch etwas mehr links?". Da investiere ich lieber ein mal die Zeit in ein Programm das die WorkArea verkleinert.

Ich hoffe jetzt alle Fragen geklärt zu haben warum ein neuer Monitor nicht die Lösung ist.


Zurück zum Thema. Ich hab das Projekt vereinfacht und gekürzt und als Beispiel in den Anhang gestellt. Man kann daran erkennen, dass immer nur eine AppBar ihren Dienst macht. Ich verstehe nicht warum. Ich kann mir das nur so vorstellen, dass eine AppBar nur pro Programm möglich ist. Oder ich mache etwas falsch. Nur was?

Die Idee mit vier einzelnen Programmen habe ich auch schon gehabt, und falls ich keine andere Lösung finden werde, werde ich es wohl machen müssen, aber damit ergeben sich andere Probleme. Keine unlösbaren Probleme, aber am liebsten würde ich alles zentral steuern, was mit einem Programm leichter ist.

jaenicke 27. Aug 2014 22:55

AW: Desktop in einem Fenster
 
Zitat:

Zitat von Popov (Beitrag 1270014)
Zurück zum Thema. Ich hab das Projekt vereinfacht und gekürzt und als Beispiel in den Anhang gestellt. Man kann daran erkennen, dass immer nur eine AppBar ihren Dienst macht.

Bei mir zeigt dein Beispielprogramm (kompiliert mit Delphi XE6) unter Windows 8.1 alle vier Leisten an.

// EDIT:
In einer VM mit XP funktioniert es genauso, auch wenn ich es mit Delphi 7 kompiliere.

Popov 27. Aug 2014 23:10

AW: Desktop in einem Fenster
 
Alle vier Leisten werden auch bei mir angezeigt, aber nur eine davon hat Auswirkung auf WorkArea, ist also eine echte AppBar. Die restlichen drei sind nur normale Fenster.

Luckie 28. Aug 2014 00:03

AW: Desktop in einem Fenster
 
Könnte nicht eine dieser API Funktionen dein Problem lösen: SetWindowExtEx und/oder SetViewportExtEx

vagtler 28. Aug 2014 03:38

AW: Desktop in einem Fenster
 
Für mich klingt das alles nach Rumdoktern an Symptomen statt nachhaltiger Ursachenbekämpfung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz