AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Laufzeit-Themes verwenden

Ein Thema von musicman56 · begonnen am 8. Okt 2013 · letzter Beitrag vom 9. Okt 2013
Antwort Antwort
Seite 1 von 2  1 2      
musicman56
(Gast)

n/a Beiträge
 
#1

Laufzeit-Themes verwenden

  Alt 8. Okt 2013, 21:41
Hallo DP-Spezialisten,

vorab nochmals wie schon an manch anderer Stelle hier der Hinweis: ich hab noch keine Uni von innen gesehen und mir alles selber beigebracht. Also steinigt mich nicht gleich, wenn ich ein paar dumme Fragen von mir gebe.

Ausgangs-Situation: da ich den direkten Schritt von D7 auf XE2 gemacht habe, hat meine History über die VCL-Controls-Erweiterungen ein paar Löcher. Ich wollte jetzt mal den für mich neuen TButton mit dem Style "bsSplitButton" ausprobieren. Leere Form, Button drauf, Popupmenü dazu, als DropDownMenu des Buttons das Popupmenu zugewiesen, compiliert, die MiniApp laufen lassen, und....weit und breit kein TButton in Sicht.

Nach langem Ausprobieren habe ich dann festgestellt, es liegt an den Projekteigenschaften "Laufzeit-Themes". Wenn die aus sind, kein TButton in Sicht, sind sie aktiviert, ist der Button da. Online-Hilfe befragt und eine Menge Antworten gefunden, aber die Zusammenhänge irgendwie nicht kapiert.

In der Hilfe steht: Gibt an, ob die Anwendung, die Sie entwickeln, Laufzeit-Themes oder ein benutzerdefiniertes Manifest verwenden soll. Was zum Henker hat ein Manifest mit Laufzeit-Themes zu tun? Bzw. wie hängt das zusammen?

Ich dachte immer, ein Manifest brauche ich beispielsweise um eine App (die nicht "install", "setup" usw. im Exe-Namen enthält) als Admin auszuführen, bzw. über den UAC-Dialog dessen Ausführung als Admin zu bekommen.

"Laufzeit-Themes" und ähnliche Suchbegriffe bringen in der Delphi-Hilfe keine Erleuchtung. Himitsu's Manifest-Creator hab ich mir auch angesehen, aber nicht wirklich verstanden um was es geht.

Prinzipiell verstanden habe ich, wenn ich die Laufzeit-Themes aktiviere, dann sieht mein Programm nicht mehr nach "Old Style" aus, sondern wie ein aktuelles Windows-Programm. Dann kann ich auch problemlos Windows-Styles verwenden. Auch das Aktivieren von Windows-Styles zur Laufzeit klappt via

 TStyleManager.SetStyle(TStyleManager.LoadFromFile('meine_style_datei.vsf')); Aber dann - mein zweites Problem - sehen manche Formulare (die ich übrigens alle zur Laufzeit erzeuge) auf den ersten Blick richtig bescheiden aus. Labels sind nicht lesbar usw. siehe Bild. Wenn ich allerdings mit der Maus drüfer fahre, oder die [Alt]-Taste drücke, verschwindet das seltsame Verhalten. Aber wie gesagt nicht bei allen Formularen, sondern nur bei einigen wenigen.

Hat jemand ein paar Tipps/Links für mich, wo ich mich schlau lesen kann? Google spuckt soooo viel aus, das habe ich schon ein paar Stunden hinter mir.
Miniaturansicht angehängter Grafiken
scrn-shot.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.589 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Laufzeit-Themes verwenden

  Alt 8. Okt 2013, 22:06
Das Manifest beinhaltet welche Controls benutzt werden sollen. Ist so eine Angabe nicht da, werden die alten Controls benutzt, da Windows davon ausgeht, dass die Anwendung nicht kompatibel mit den aktuellen Windowsversionen ist. (Außerdem werden ohne Manifest auch die Umleitungen bei Schreibzugriffen auf c:\programme usw. aktiviert.)

Da es diverse Controls (so auch diesen Button) ausschließlich in den neuen Controls gibt, funktioniert der auch nur, wenn diese aktiv sind.

Was du mit Adminrechten meinst, kann mit in einem solchen Manifest stehen, muss aber nicht. Tipp: Schau dir ein solches Manifest einfach mal an, das ist eine simple XML-Datei, deren Inhalt mit Englischkenntnissen ganz gut lesbar ist.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#3

AW: Laufzeit-Themes verwenden

  Alt 8. Okt 2013, 23:07
Hallo Sebastian,

bedeutet das, eine Komponente kann "nicht kompatibel" mit Laufzeit-Themes sein? Mein Hauptprogramm ist eine MDI-Anwendung, deren MdiChilds schon seit Jahren mit denselben Routinen erzeugt und wieder freigegeben werden. Da dürfte also normalerweise kein Fehler versteckt sein, und trotzdem habe ich ein Problem, das nur bei aktivierten Laufzeit-Themes auftritt. Hab's vorhin nicht dazu geschrieben, weil's ja kein Roman werden sollte.

In der Screen.OnActiveFormChange zugewiesenen prozedur werden abhängig von MdiChildCount auf dem Desktop befindliche Panels ein- bzw. ausgeblendet (Visible := MdiChildCount = 0). Funktioniert auch wunderbar, nur nicht bei einem einzigen Mdi-CHild. Da wird nach dem Erzeugen und Anzeigen des Formulares "Screen.OnActiveFormChange" nicht ausgelöst. Ursache könnte also ein "inkompatibles control" sein? Und womöglich auch das Phänomen auslösen, welches ich im Screenshot beschrieben habe?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.589 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Laufzeit-Themes verwenden

  Alt 8. Okt 2013, 23:22
Und womöglich auch das Phänomen auslösen, welches ich im Screenshot beschrieben habe?
Das sieht für mich eher danach aus, dass sich da Komponenten überlagern. Hast du vielleicht einen Text im RadioButton und daneben zusätzlich ein Label oder so?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#5

AW: Laufzeit-Themes verwenden

  Alt 8. Okt 2013, 23:38
Nein, da überlagert sich (ganz sicher) nichts. Und wie gesagt, 1x [Alt] und alles ist ganz normal. Ich komme langsam zu der Überzeugung, dass irgendeine Komponente das Abarbeiten einiger Messages unterbricht/behindert. Es sind so viele unterschiedliche Phänomene in unterschiedlichen Formularen, da muss etwas gewaltig stinken.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Laufzeit-Themes verwenden

  Alt 9. Okt 2013, 00:16
Ich hatte das auch mal im zusammenhang mit MouseWheel.
Allerdings ohne Themes zu verwenden.

Es scheint bei dir dann ein problem mit "GetDlgItem" vorzuliegen.
Die Controls werden in dem Fall nicht richtig enumeriert..
Denke mal da kannst du selbst nichts fixen.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:42 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Laufzeit-Themes verwenden

  Alt 9. Okt 2013, 00:29
1/2 h gesucht ... und gefunden: http://www.delphipraxis.net/162251-d...n7-64-pro.html
Ich wusste nur noch, dass da mal etwas ähnliches war.

Ist zwar etwas älter, aber vielleicht hilft ja etwas davon.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Laufzeit-Themes verwenden

  Alt 9. Okt 2013, 00:33
Zitat:
Ist zwar etwas älter, aber vielleicht hilft ja etwas davon.
Kann man nur hoffen denn das hat ja etwas mit der IDE zu tun in deinem verlinkten link..
Während bei ihm das bei einer kompilierten Exe auftritt. (So wie bei mir damals (DLL)).

gruss
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Laufzeit-Themes verwenden

  Alt 9. Okt 2013, 07:20
Kann man nur hoffen denn das hat ja etwas mit der IDE zu tun in deinem verlinkten link..
Während bei ihm das bei einer kompilierten Exe auftritt. (So wie bei mir damals (DLL)).
Die Delphi-IDE ist ja auch zu großen Teilen mit der VCL entwickelt, also mit dem gleichen GUI-Code der auch bei den mit der IDE erstellten Exes/DLLs verwendet wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
musicman56
(Gast)

n/a Beiträge
 
#10

AW: Laufzeit-Themes verwenden

  Alt 9. Okt 2013, 12:00
Hallo zusammen,

erst mal vielen Dank für die Rückmeldungen.

JVCL: hatte ich installiert. Jetzt mal testweise deinstalliert, brachte aber nichts.

IDE: In der IDE gibt's keinerlei (Anzeige-)Probleme

Auch das Deaktivieren einiger Packages die ich als potentiellen Verursacher in Verdacht hatte (Abbrevia, AsyncPro, dclAsyncPro, List&Label) hat nichts gebracht. Daraufhin habe ich mir mal einen Großteil der älteren Projekte (überwiegend kleinere Tools und Hilfsprogramme) vorgenommen und dort Laufzeit-Themes aktiviert. Bei einigen hatte ich ähnliche Effekte. Die Logik dahinter ist mir noch nicht klar, es sieht aber derzeit so aus, als wären nur Projekte betroffen, die mit einer älteren Delphi-Version (überwiegend D7) erstellt wurden. Ich ahne nichts Gutes

Derzeit bin ich dabei eines der MdiChilds neu zu erstellen, mit den selben Komponenten der ursprünglichen Form. Noch ein paar Stunden, dann werde ich mehr wissen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:40 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