![]() |
VCL Styles setzen verursacht ListIndex über Maximum Fehler
Hallo in die Runde,
ich habe hier ein etwas eigenartiges Problem. Ich versuche die neuen VCL Styles im Programm zu setzen und das Programm steigt mir mit einem Listindex größer als Maximum (1) komplett aus. Das Problem ist das ich das Verhalten in einem Testprogramm in dem ich exakt das selbe tue nicht nachstellen kann. Also 3 Probleme: 1. Warum schmiert mir die App bei einem TrySetStyle mit validem StyleName (ausgelesen aus TStylemanager) ab? Wenn sie den Style nicht setzen kann dann doch bitte ein FALSE zurückliefern. 2. Warum funktioniert es mir einer TestApp ohne Probleme? Ich verwende hier einige wenige TMS-Kompos (TSmoothTimeline, TSmoothCalendar) kann es daran liegen? Als ich sie in meiner Testapp hatte funktionierte alles perfekt. 3. Wenn ich unter OPTIONEN->Erscheinungsbild den Style von Anfang an auf einen nicht-Windows-Style setzte läuft die App ohne Probleme. Ich will aber dem Kunden die Wahl lassen. Hat irgendwer von Euch schon mit den Styles rum gespielt und hatte ähnliche Probleme oder eine Idee? Das lässt sich auch aber sowas von schlecht debuggen :evil: |
AW: VCL Styles setzen verursacht ListIndex über Maximum Fehler
Das Ergebnis meiner Spielereien um mal die VCl-Styles auszuprobieren:
Delphi-Quellcode:
dlgStyles ist einfach eine Dialogbox mit einer Listbox lbxVclStyles und zwei Buttons btnOk und btnCancel. Das Ganze wird in einer Action acStyles gepackt.
procedure TfrmMain.acStylesExecute(Sender: TObject);
var i: NativeInt; n: NativeInt; sl: TStringList; s: String; begin dlgStyles := TdlgStyles.Create(self); try sl := TStringList.Create; n := Length(TStyleManager.StyleNames) - 1; for i := 0 to n do begin sl.Add(TStyleManager.StyleNames[i]); end; n := sl.Count - 1; sl.Sort; s := TStyleManager.ActiveStyle.Name; dlgStyles.lbxVCLStyles.Items.Clear; for i := 0 to n do begin dlgStyles.lbxVCLStyles.Items.Add(sl[i]); end; i := dlgStyles.lbxVCLStyles.Items.IndexOf(s); dlgStyles.lbxVCLStyles.ItemIndex := i; if dlgStyles.ShowModal = mrOk then begin i := dlgStyles.lbxVclStyles.ItemIndex; TStyleManager.TrySetStyle(dlgStyles.lbxVclStyles.Items[i]); end; finally FreeAndNil(dlgStyles); end; end; Funktioniert bei mir ohne Probleme... Grüße Mikhal |
AW: VCL Styles setzen verursacht ListIndex über Maximum Fehler
Ja das klappt bei mir auch ohne Probleme in einer TestApp. In einer meiner realen App's geht das schief. Ich bekomme die Styles zur Laufzeit nicht gesetzt. Wie gesagt zum Start der App funktioniert alles wie erwartet.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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