AGB  ·  Datenschutz  ·  Impressum  







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

Crash beim VCL Stil Wechsel zur Laufzeit

Ein Thema von TurboMagic · begonnen am 7. Jan 2023 · letzter Beitrag vom 13. Jan 2023
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.094 Beiträge
 
Delphi 12 Athens
 
#1

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 11. Jan 2023, 07:21
Versuche einmal das Setzen des Styles von dem OnClick abzukoppeln:
Delphi-Quellcode:
  TThread.ForceQueue(nil, procedure
    begin
      TStyleManager.TrySetStyle(lb_Styles.Items[lb_Styles.ItemIndex]);
    end);
Danke für den Tipp, ist heute Abend einen Versuch wert!
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.079 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 11. Jan 2023, 07:59
Das mit den Repaint sieht komisch aus, brauchst du das zum aktualisieren?

Magst du uns nicht ein kleines Testprogramm stricken und als ZIP-Archiv anhängen?
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.094 Beiträge
 
Delphi 12 Athens
 
#3

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 11. Jan 2023, 18:43
Versuche einmal das Setzen des Styles von dem OnClick abzukoppeln:
Delphi-Quellcode:
  TThread.ForceQueue(nil, procedure
    begin
      TStyleManager.TrySetStyle(lb_Styles.Items[lb_Styles.ItemIndex]);
    end);
Danke für den Tipp, ist heute Abend einen Versuch wert!
Versuch erstmal am Compiler gescheitert
Der sagt E2003 Undeclared identyfier bei TThread.
Ich kann auch nicht Cltr-Click auf ForceQueue machen.
Unit System.CLasses ist aber eingebunden.
Rufe ich das fully quallyfied mittels System-CLasses.TThread auf, meint
der Compiler E2003 zu System, aber Ctrl-Click auf ForceQueue springt zu
deren Implementierung.

Kommentiere ich diese 3 Zeilen aus, gibt's kein Gemecker mehr...

Was nun?

Anbei mal das kleine Testprojekt. Wenn's dumm läuft hab' ich da ein paar Stile reingenommen die
ich aus GetIt nachinstalliert habe, aber über Projektoptionen/Erscheinung kann man beliebige
Stile wählen, das Problem tritt denke ich trotzdem auf.
Angehängte Dateien
Dateityp: zip Stiltest.zip (1,50 MB, 9x aufgerufen)

Geändert von TurboMagic (11. Jan 2023 um 18:45 Uhr)
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
483 Beiträge
 
#4

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 11. Jan 2023, 20:49
Zitat von TurboMagic:
Was nun?
Delphi-Quellcode:
const
  WM_FORMSTYLECHANGED = WM_USER + 779;

  Tf_SelectStyle = class(TForm)
  private
    procedure WMFormStyleChanged(var pmvMessage: TMessage);
      message WM_FORMSTYLECHANGED;

procedure Tf_SelectStyle.WMFormStyleChanged(var pmvMessage: TMessage);
begin
  StyleName := lb_Styles.Items[pmvMessage.LParam];
end;

procedure Tf_SelectStyle.lb_StylesClick(Sender: TObject);
begin
  PostMessage(Handle, WM_FORMSTYLECHANGED, 0, lb_Styles.ItemIndex);
end;
Sehen aufgestylte Oberflächen alle so gewöhnungsbedürftig aus? Da bleibe ich lieber bei der Windows Klötzchen-Optik.

Bis bald...
Thomas

Geändert von mytbo (11. Jan 2023 um 21:04 Uhr) Grund: Style Kommentar hinzugefügt
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.094 Beiträge
 
Delphi 12 Athens
 
#5

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 12. Jan 2023, 07:49
Zitat von TurboMagic:
Was nun?
Sehen aufgestylte Oberflächen alle so gewöhnungsbedürftig aus? Da bleibe ich lieber bei der Windows Klötzchen-Optik.

Bis bald...
Thomas
Die Bemerkung verstehe ich noch nicht ganz, speziell nicht ohne Screenshot.
Von welchem Stil redest du? Hast du verschiedene angeschaut? Was ist daran gewöhnungsbedürftig?

Gräüße
TurboMagic
  Mit Zitat antworten Zitat
mytbo

Registriert seit: 8. Jan 2007
483 Beiträge
 
#6

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 12. Jan 2023, 19:12
Zitat von TurboMagic:
Die Bemerkung verstehe ich noch nicht ganz, speziell nicht ohne Screenshot.
Bei mir sehen die Elemente auf der gestylten Oberfläche zu dominant aus. Die Images wirken unproportional, viel zu groß und das Symbol Halteverbot ist unten gekappt. Vielleicht muss es auch so sein. Das Thema VCL Styling ist für mich Neuland. Für externe Arbeiten war Stylen noch nicht gefordert und für eigene Projekte schreibe ich die Oberflächen mit Hilfe eines Layout-Builders. Der ordnet automatisch alles pixelgenau an. Mein bevorzugter Stil ist Flat Style mit 3D-Effekt für das aktive Element. Man hängt am lieb Gewonnenen.

PS: Ich hoffe, du hast meinen Kommentar als Verwunderung und nicht als Beurteilung aufgefasst.

Bis bald...
Thomas
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.094 Beiträge
 
Delphi 12 Athens
 
#7

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 13. Jan 2023, 07:06
Aha, du bewertest die Stile anhand meiner kleinen Testanwendung?
Naja, die wurde nur schnell "zusammengenagelt" um das Problem zu zeigen.
Da wurde nicht wirklich drauf geachtet, dass Buttongrößen etc. zu den Icongrößen
passen etc., das liegt also nicht am Stil.

Du kannst ja deine VCL-Anwendung mal mit einem anderen Stil testhalber ausführen.
Projekt/Optionen/Erscheinungsbild. Dort einen Stil ankreuzen und unten in der Combobox
auswählen. Dann Programm starten. Im Dialog gibt's glaube ich auch eine Vorschau, bzw.
Delphi 11.2 kann jetzt einen Stil im FOrm Designer nutzen, dann sieht man's gleich beim
Designen.

Grüße

TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.757 Beiträge
 
Delphi 12 Athens
 
#8

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 11. Jan 2023, 21:18
Versuch erstmal am Compiler gescheitert
Der sagt E2003 Undeclared identyfier bei TThread.
Anstatt den Code per Copy-Paste aus dem Forum zu nehmen, gib ihn doch besser mal von Hand ein. Manchmal kommt irgendwelcher Müll aus dem Browser. Alternativ kannst du auch die führenden Leerzeichen löschen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
10.055 Beiträge
 
Delphi 12 Athens
 
#9

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 11. Jan 2023, 21:24
Der sagt E2003 Undeclared identyfier bei TThread.
Du hast da Leerzeichen, die keine sind.
Schau mal im Hexeditor:
Screenshot 2023-01-11 222446.png

Ach ja, und wegen dem cChangeInThread:
ForceQueue sorgt dafür, dass der Code wie aus einem Thread kommend in die Warteschlange kommt und abgekoppelt abgearbeitet wird, obwohl man schon im Hauptthread ist. Es wird also nichts in einem anderen Thread gemacht.
Sebastian Jänicke
AppCentral

Geändert von jaenicke (11. Jan 2023 um 21:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#10

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 11. Jan 2023, 22:02
Ja, aktuelle Browser (z.B. Firefox) kopieren Tabulatoren und NonBreakingSpaces seit einer Weile nicht mehr als Leerzeichen, sondern als das was sie sind. (obwohl sie immernoch als Leerzeichen im Browser angezeigt werden)

Leider muß das Forum aber die mit diesem Zeichen auffüllen, da der Browser sonst mehrere Leerzeichen wie EINES behandelt und dann die Einrückung hier nicht mehr stimmt.


Bissl blöd das Ganze, wenn man es direkt aus dem Thread kopiert.
Zitieren (nicht absenden) und daraus kopieren geht aber.


Zitat:
Ich kann auch nicht Cltr-Click auf ForceQueue machen.
Natürlich nicht,

Wenn bereits die Klasse/Namespace nicht gefunden wurde, woher soll jemand dann wissen worin ForceQueue gesucht werden soll?

Wenn, dann auf TThread klicken, was aber auch nicht geht weil er kennt es ja nicht.
* z.B. weil die nötige Unit nicht im USES steht
* oder weil durch blöde unsichtbare Sonderzeichen, welche zufällig als "Buchstabe" behandelt werden, es nicht 'TThread' heißt, sondern #160'TThread' und das gibt es natürlich nicht, selbst wenn die vermeintlich richtige Unit eingebunden ist
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (11. Jan 2023 um 22:12 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz