Themen mit Manifestdatei einschalten

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Themen mit Manifestdatei einschalten

Beitrag von siro »

Hallo zusammen,

da ich in einem Thread hier bei euch auf das Thema aufmerksam gemacht wurde,
dass man da ein "Häkchen" setzen kann in der Entwicklungsumgebung,
wäre es natürlich sinnvoll zu erforschen, wozu das gut sein soll.

Ich habe aber nur 9 Einträge hier im Forum gefunden,
die mir jetzt nicht wirklich weiterhelfen, davon sind ja schon 2 aus meinem vermeintlichen Bugreport,
der vermutlich mit diesem Thema zu tun hat.

So stelle ich mal in den Raum, was sind Manifestdateien/Themes.
Ich habe noch nie in meinem Leben was davon von gehört, seit MSDOS mit einem PX XT-Rechner 4,77 MHz
und das ist schon ne Weile her.....

Googel sagt mir, das diese Dateien eine Endung .Manifest haben, so habe ich mal auf
meinem Rechner danach gesucht mit erstaunlichem Ergebnis:
59.959 Einträge mit .Manifest gefunden. :shock:

Zudem habe ich gefunden, dass sie für die Darstellung unter Windows gedacht sind,
wobei ich das nicht verstehe, da ich ALLE meine Komponenten ja selbst zeichne,
da hat doch Windwws "glücklicherweise" gar keinen Einfluß drauf.

Durch das Anklicken des Häkchens scheint sich aber irgend etwas im Programmcode zu ändern,
was wiederum "sichtbar" Auswirkungen auf das Zeichnen (paint,invalidate usw.) hat.

Dann hab ich gelesen, daß man diese Manifest Datei in den Code direkt mit reincompilieren kann,
wie soll das Windows denn wieder auseinanderbasteln ?

Zunächst müst ich vermutlich mal klären was "Themes" sind.
Sind damit die verschiedenen Einstellungen "Farben usw." unter Windows gemeint ?

Naja, man sieht schon, dass ich mit disem Thema eigentlich garnichts anfangen kann. :roll:

Aber Wissen heisst ja : Wissen wo es steht oder wissen wen man fragen kann, der es wissen könnte.... :wink:

Vielleicht habe ich noch nicht den richtigen LINK gefunden, wo dies erklärt ist, dann könnt Ihr mir sicher weiterhelfen.

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Themen mit Manifestdatei einschalten

Beitrag von Michl »

Siehe dazu: https://de.wikipedia.org/wiki/Manifest-Datei

Empfohlen wird, aufgrund der schwierigeren Manipulierbarkeit, keine externe Manifestdatei mitzugeben, sondern als Resource in der Exe. Dies macht der Haken bei den Projekteinstellungen.

Wichtig für Windows 7 und noch wichtiger Windows 10: Mit den Einstellungen in der Manifestdatei wird unter anderem geregelt, wie das Programm bezüglich der vom Benutzer eingestellten DPI-Einstellungen reagieren soll:

Not DPI–aware applications
System–DPI aware applications
Per monitor–DPI aware applications

Siehe https://msdn.microsoft.com/de-de/library/windows/desktop/dn469266(v=vs.85).aspx

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Themen mit Manifestdatei einschalten

Beitrag von siro »

Vielen Dank Michl,

der zweite Link ist supi, da taucht ein Thema auf, worüber ich mir noch nie Gedanken gemacht macht:
Die Auflösung bzw. DPI für die Darstellung auf dem Ausgabegerät (Monitor)
Genau hier passieren vermutlich die Ungereimtheiten. Da hab ich mir noch nie einn Kopf drüber gemacht.
Ein Pixel war halt immer ein Pixel für mich, dass der Benutzer evtl. eine andere DPI Einstellung hat und Windows "umskaliert"
stellt natürlich auch eine ganz andere Anforderung an die Software. Man kann dies dann anscheinend steuern, das gibt jetzt langsam, Sinn für mich.
Wenn ich also mit Not DPI–aware applications arbeite, könnte es sein, daß der Nutzer mit der Lupe auf dem Monitor agieren muss... :)
Er kann das dann nicht hochskalieren. Wie dann was getätigt wird, steht dann vermutlich in der sogenanten Manifestdatei, so jetzt mein Verständnis.
ich bin aber noch am Lesen, auf jeden Fall vielen Dank für die sehr nützliche Info.

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

wwerner
Beiträge: 2
Registriert: Mo 8. Mai 2017, 21:49

Re: Themen mit Manifestdatei einschalten

Beitrag von wwerner »

Aber eine Frage habe ich noch: Warum zeichnest du ALLES selbst?

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Themen mit Manifestdatei einschalten

Beitrag von siro »

Warum ich alles selber zeichne:

Ich benutze fast ausschliesslich eigene Komponenten, weil die originalen
leider nicht so funktionieren wie ich es gern hätte.
Alle Tasten und Checkboxen usw. funktionierten nicht richtig:
Man drückt rauf und es passiert: NICHTS.....man muss sie erst loslassen,
ich stell mir grad so einen Notausknopf vor oder wenn das bei meinem E-Piano so funktionieren würde..

Also hatte ich angefangen die Funktionalität zu ändern und das bisschen Malen
für einen Button ist dann eher Nebensache.

Dann kommt die sogenante visuelle Rückmeldung dazu.
Schaut euch mal die die Buttons bei einer ToggleBox an,
Man kann eigentlich garnicht erkennen ob die nun gedrückt sind oder nicht.
Der bläuliche Schatten erscheint nämlich auch wenn der Button den Focus bekommt
wenn man mit der Maus drüber fährt. Finde ich unmöglich. Also auch wieder selber machen.

Heute brauchte ich einen Scrollbalken um eine Pulsbreite einzustellen.
Die funktionieren auch alle nicht wie gewollt.
Ich kann nicht an eine beliebige Position anklicken, dass der Schieber da auch landet.
Er zuppelt dann so langsan dort hin und sendet ständig eine PWM.
Wie soll ich da eine Sprungantwort beobachten
So habe ich wieder angefangen mit einer neuen Komponente.

Das ist ja das Schöne an Lazarus, man kann das recht komfortabel alles seinen Wünschen anpassen,
so liebe ich es. :wink:

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Themen mit Manifestdatei einschalten

Beitrag von siro »

Um nochmal aufs eigentliche Thema zurück zukommen:

Ich habe heute mal mein Kurvenfenster mir angeschaut unter Windows mit "klassischer Ansicht"
Hier wird der Bildaufbau anscheinend nicht doppelt gepuffert, das sieht sehr flackerig aus.
Wenn ich dann die Standard Windows Ansicht nehme, ist das Bild wieder ruhig.
Ich hab dann mal manuell "DoubleBuffered" auf TRUE gesetzt dann läuft es in beiden Versionen ohne Flackern.
Ich vermute mal das ist mit den Themes gemeint ?
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: Themen mit Manifestdatei einschalten

Beitrag von Michl »

siro hat geschrieben:Ich vermute mal das ist mit den Themes gemeint ?
Nein. Unter Windows 7 gab/gibt es die Themes Classic und Aero. Ab Windows 8 gibt es das klassische Theme nicht mehr. Ich persönlich mag keine durchleuchtenden Fensterrahmen oder Animationen, daher arbeite ich unter Windows 7 mit einem klassischen Theme (bin da aber wahrscheinlich eher eine Ausnahme). Unter Windows 7 kann man in der Systemsteuerung oder mit einem Rechtsklick auf den Desktop auf die Einstellung "Anpassen" gehen und ein enstprechendes Theme wählen.

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Themen mit Manifestdatei einschalten

Beitrag von compmgmt »

siro hat geschrieben:[...] Man drückt rauf und es passiert: NICHTS.....man muss sie erst loslassen [...]

OnMouseDown???

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

siro
Beiträge: 730
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: Themen mit Manifestdatei einschalten

Beitrag von siro »

OnMouseDown geht, stimme ich Dir voll zu.
OnClick und OnChange jedoch nur beim Loslassen.

Aber irgend eine Ausrede brauche ich doch, warum ich eigene Komponenten benutze... :oops:

@Michl, jetzt hab ich verstanden was mit Themes gemeint ist, dauert bei mir halt etwas länger.
Durch die Benutzung meiner eigenen Paint Methoden habe ich dem Benutzer natürlich die Freiheit genommen, die Optik durch Themes zu verändern.
Das Ist sicher nicht professionell, aber die Software ist seit jahrzehnten immer nur für mich gewesen, von daher finde ich das auch okay.

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: Themen mit Manifestdatei einschalten

Beitrag von compmgmt »

siro hat geschrieben:OnClick und OnChange jedoch nur beim Loslassen.
Das ist ja der Sinn davon ;)

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Antworten