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
Seite 1 von 3  1 23      
TurboMagic

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

Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 7. Jan 2023, 18:13
Hallo,

in meinem D11.2 VCL Projekt gibt's manchmal einen Absturz im Dialog zur Stylauswahl wenn ich den Stil wechsle.

Mit folgendem Code wechsel ich den Stil, lb_Styles ist dabei eine Listbox die alle verfügbaren Stile enthält:

Delphi-Quellcode:
  Application.MainForm.ActiveControl := nil;
  TStyleManager.TrySetStyle(lb_Styles.Items[lb_Styles.ItemIndex]);
Leider passiert der Absturz nur in manchen Programmsitzungen und gerade mal wieder nicht, somit gibt's leider
keinen Stacktrace.

Irgendwer noch eine Idee woher das kommen könnte bzw. was man dagegen tun kann?
Ich glaube mich auch zu erinnern, dass das Thema schon mal diskutiert wurde, kann mich aber nicht mehr genau
erinnern wo und finde es somit gerade auch nicht mehr.

Grüße
TurboMagic

Geändert von TurboMagic ( 8. Jan 2023 um 10:12 Uhr)
  Mit Zitat antworten Zitat
TiGü

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

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 9. Jan 2023, 09:34
Steht die Property PopupMode eines deiner Formulare auf pmExplicit ?
Der https://quality.embarcadero.com/browse/RSP-39019 ist in 11.2 immer noch fehlerhaft und ungelöst.
Vgl: https://www.delphipraxis.net/211199-...-overflow.html
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 9. Jan 2023, 17:48
In meinem kzTheming Projekt nutze ich folgenden Code um ein Menu Eintrag automatisch mit Styles zu versorgen und ein Event zum wechseln aufzurufen.

Hiermit fülle ich einen Menü Eintrag mit allen Styles die ich mitgegeben habe:
Delphi-Quellcode:
procedure kzTheme.AddNativeStyle(const AMenuItem: TMenuItem);
  procedure AddMenuEntry(const ACaption: string; const AValue: Integer);
  var
    Item: TMenuItem;
  begin
    Item := TMenuItem.Create(FMenuItem);
    Item.Caption := ACaption;
    Item.OnClick := NativeStyleClick;
    Item.AutoCheck := False;
    Item.RadioItem := False;
    Item.Checked := TStyleManager.ActiveStyle.Name = ACaption;
    if ((AValue) mod 10) = 0 then
      Item.Break := mbBarBreak;
    FMenuItem.Add(Item);
  end;
var
  Arr: TArray<string>;
  SystemStyle: string;
  FoundStyle: String;
  i: Integer;
begin
  FMenuItem := AMenuItem;
  FMenuItem.Clear;
  FMenuItem.AutoLineReduction := maAutomatic;

  Arr := TStyleManager.StyleNames;
  TArray.Sort<string>(arr);
  SystemStyle := TStyleManager.SystemStyle.Name;
  AddMenuEntry(SystemStyle, 0);

  i := 1;
  for FoundStyle in Arr do
  begin
    if FoundStyle <> SystemStyle then
    begin
      AddMenuEntry(FoundStyle, i);
      Inc(i);
    end;
  end;
end;
Diese Methode wird für jeden Menu Eintrag aufgerufen:
Delphi-Quellcode:
procedure kzTheme.NativeStyleClick(Sender: TObject);
var
  StyleName: String;
  i: Integer;
begin
  StyleName := StripHotkey(TMenuItem(Sender).Caption);
  TStyleManager.SetStyle(StyleName);
  (Sender as TMenuItem).Checked := true;
  for i := 0 to Pred(FMenuItem.Count) do
    if (not FMenuItem.Items[i].Equals(Sender)) then
      FMenuItem.Items[i].Checked := false;
end;
Aufzurufen als AddNativeStyle(MeinMenu); .

Ich hoffe es hilft Dir weiter.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
TurboMagic

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

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 9. Jan 2023, 20:49
Steht die Property PopupMode eines deiner Formulare auf pmExplicit ?
Der https://quality.embarcadero.com/browse/RSP-39019 ist in 11.2 immer noch fehlerhaft und ungelöst.
Vgl: https://www.delphipraxis.net/211199-...-overflow.html
Muss ich prüfen, die Form ist modal.
  Mit Zitat antworten Zitat
TurboMagic

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

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 9. Jan 2023, 21:04
Diese Methode wird für jeden Menu Eintrag aufgerufen:
Delphi-Quellcode:
procedure kzTheme.NativeStyleClick(Sender: TObject);
var
  StyleName: String;
  i: Integer;
begin
  StyleName := StripHotkey(TMenuItem(Sender).Caption);
  TStyleManager.SetStyle(StyleName);
  (Sender as TMenuItem).Checked := true;
  for i := 0 to Pred(FMenuItem.Count) do
    if (not FMenuItem.Items[i].Equals(Sender)) then
      FMenuItem.Items[i].Checked := false;
end;
Ich hoffe es hilft Dir weiter.
Die ruft doch auch nur TStyleManager.SetStyle auf. Oder hab's ich was übersehen? Der Rest ist ja nur die Integration in ein TMenu...

Aber danke!
  Mit Zitat antworten Zitat
TurboMagic

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

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 9. Jan 2023, 22:34
Steht die Property PopupMode eines deiner Formulare auf pmExplicit ?
Der https://quality.embarcadero.com/browse/RSP-39019 ist in 11.2 immer noch fehlerhaft und ungelöst.
Vgl: https://www.delphipraxis.net/211199-...-overflow.html
Sowohl die Form zur Selektion des Stils als auch MainForm haben PopupMode = pmNone.
Die Stil Selektionsform hat FormStyle fsNormal und wird per ShowModal aufgerufen,
wobei das Hauptformular der Owner ist.

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

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

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 10. Jan 2023, 08:57
Hast du kein Logging drin, um den Stracktrace im Fehlerfall zu bekommen?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
880 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 10. Jan 2023, 09:44
Greifst du irgendwo auf die Handles der Form oder anderer Komponenten zu? Beim Wechsel des Styles werden ja alle Elemente neu erzeugt, wodurch die Handles ungültig werden ...
The angels have the phone box.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 10. Jan 2023, 10:12
Diese Methode wird für jeden Menu Eintrag aufgerufen:
Delphi-Quellcode:
procedure kzTheme.NativeStyleClick(Sender: TObject);
var
  StyleName: String;
  i: Integer;
begin
  StyleName := StripHotkey(TMenuItem(Sender).Caption);
  TStyleManager.SetStyle(StyleName);
  (Sender as TMenuItem).Checked := true;
  for i := 0 to Pred(FMenuItem.Count) do
    if (not FMenuItem.Items[i].Equals(Sender)) then
      FMenuItem.Items[i].Checked := false;
end;
Ich hoffe es hilft Dir weiter.
Die ruft doch auch nur TStyleManager.SetStyle auf. Oder hab's ich was übersehen? Der Rest ist ja nur die Integration in ein TMenu...

Aber danke!
Das ist korrekt, nur leider weiß ich nicht wie Du Deine ListBox füllst, deswegen mein detaillierter Kode.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
TurboMagic

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

AW: Crash beim VCL Stil Wechsel zur Laufzeit

  Alt 10. Jan 2023, 12:59
Hast du kein Logging drin, um den Stracktrace im Fehlerfall zu bekommen?
Doch, aber es tritt nicht jedes Mal oder auf allen Rechnern auf und beim letzten Crash hab' ich
leider den Trace nicht gespeichert, weil ich gedanklich da gerade an was anderem war.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 20:51 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