Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   VCL-Styles bei Delphi 10.4 (https://www.delphipraxis.net/204576-vcl-styles-bei-delphi-10-4-a.html)

Neumann 8. Jun 2020 11:53

VCL-Styles bei Delphi 10.4
 
Es gibt Probleme, wenn ich bei Programmstart einen Style setzte. Wirft dann Zugriffsverletzungen.

Bei 10.3.3 gab es keine Probleme.

TiGü 8. Jun 2020 11:55

AW: VCL-Styles bei Delphi 10.4
 
Ähm...Danke?

Warum steht das hier? Warum schreibst du das nicht direkt ins JIRA von Embarcadero?
Hast du tiefergehend debuggt und kannst die betreffenden (unterschiedlichen) Quelltextzeilen aufzeigen?

Was soll das denn werden, wenn jetzt jeder 10.4 Benutzer für sein eigenes kleines Problem einen eigenen Zweizeiler-Thread in der deutschsprachigen Delphi-Praxis eröffnet?

Bernhard Geyer 8. Jun 2020 12:19

AW: VCL-Styles bei Delphi 10.4
 
Es macht schon sinn sowas in einem Forum vorab zu klären ob es nur eine spezielle konstellation ist welche das Problem verursacht oder ein Problem ist das bei vielen Auftreten wird.

@Neumann:
Tritt das auch bei einem einfachen Testprojekt auf?

TiGü 8. Jun 2020 12:49

AW: VCL-Styles bei Delphi 10.4
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1466735)
Es macht schon sinn sowas in einem Forum vorab zu klären ob es nur eine spezielle konstellation ist welche das Problem verursacht oder ein Problem ist das bei vielen Auftreten wird.

@Neumann:
Tritt das auch bei einem einfachen Testprojekt auf?

Na eben, das reicht halt einfach nicht.
Zwei Zeilen hingeworfen und dann was?

Wenn er halt zumindest ein Testprojekt gezippt hochgeladen hätte a la: "Bitte guckt mal, ob ihr das auch habt oder ob ich einen grundlegenden Fehler mache".

Daniel 8. Jun 2020 13:12

AW: VCL-Styles bei Delphi 10.4
 
Ja, in der Sache ist das richtig - und es wäre schön gewesen, wenn Du das mit etwas mehr Gelassenheit hättest schreiben können. ;-)

Neumann 8. Jun 2020 13:15

AW: VCL-Styles bei Delphi 10.4
 
Der Quellcode ist der gleiche wie vorher bei 10.3.

Die Zeile, die den Fehler verursacht, ist:

tstylemanager.TrySetStyle(dm.astyle);

ist astyle= 'Windows' dann kommt kein Fehler,

sonst dies hier (Madexcept)


exec. date/time : 2020-06-08 12:43
version : 4.5.9.2
compiled with : Delphi 10.4 Sydney
madExcept version : 5.0.99
callstack crc : $1c288987, $4a9a983b, $4a9a983b
exception number : 1
exception class : EAccessViolation
exception message : Zugriffsverletzung bei Adresse 006CE0E0 in Modul 'MaxstorePos.exe'. Lesen von Adresse 00000000.

Ob ich das im Programmquelltext (wie vorher) aufrufe oder im Mainform.create oder Mainform.show spielt keiner Rolle, das habe ich schon versucht.

Ich frage eigentlich selten, da man mit suchen eigentlich hier für alle Probleme was brauchbares finden kann.

Vielleicht ist mein Problem ja auch ein neues Feature.

TiGü 8. Jun 2020 13:30

AW: VCL-Styles bei Delphi 10.4
 
Zitat:

Zitat von Daniel (Beitrag 1466745)
Ja, in der Sache ist das richtig - und es wäre schön gewesen, wenn Du das mit etwas mehr Gelassenheit hättest schreiben können. ;-)

Es ist zu warm! :firejump:

Ich versuche mich zu bessern!

michiww 30. Okt 2020 15:58

AW: VCL-Styles bei Delphi 10.4
 
Hallo Ralf,

ich habe das gleiche Problem wie Du, mein Programm lief und läuft noch unter 10.3.x einwandfrei.
Seit 10.4 (auch mit Patch 3) bringt es bevor OnShow aufgerufen wird eine Exception,
aber nur wenn ich als Style einen anderen als "Windows" auswähle.

Falls ich mit den Windows Style starte (was ja geht) und dann während das Programm läuft den Style wechsle geht alles,
außer wenn ich dann ein neues Fenster (Form) aufrufe dann kommt ebenfalls eine Exception.

D.h. die Exceptions kommen "nur" wenn ich einen anderen Style außer Windows vor dem Aufruf eines Fensters habe.
Aber ich möchte nicht erst das Fenster im Windows Style anzeigen und dann wechseln müssen, das schaut nicht gut aus,
außerdem ging es mit 10.3.x auch. Also definitiv ein Bug.
Hast Du schon was neues herausgefunden?

LG Michi

Uwe Raabe 30. Okt 2020 16:27

AW: VCL-Styles bei Delphi 10.4
 
Wir warten immer noch auf das Testprojekt...

michiww 30. Okt 2020 17:26

AW: VCL-Styles bei Delphi 10.4
 
Hallo Uwe,
danke für die Rückmeldung, aber das ist leider grad nicht so einfach,
ich hab schon ein Testprojekt für 10.4 gebaut, das funktioniert.
Mein Programm wo es nicht geht hat ein paar tausend Zeilen und ich hab noch keine Ahnung warum hier eine Exception kommt.
Wie gesagt bei 10.3 kommt keine und wenn ich als Style Windows nehme läuft es wie bisher.
Die Exception hab ich versucht zu debuggen aber sie tritt zwischen OnCreate (läuft durch) und OnShow auf,
d.h. kurz bevor das MainForm aufgebaut wird.

Wenn ich die Reihenfolge in der dproj Datei wie folgt ändere startet das Programm ohne Fehler,
aber sobald ich dann ein anderes neues Fenster öffne (z.B. mit ZweitesForm.Show) kommt wieder die Exception

Hier mit Exception
TStyleManager.TrySetStyle('Emerald Light Slate');
Application.Title := 'Testproject';
Application.CreateForm(TMainForm, MainForm);

Hier keine beim Start
Application.Title := 'Testproject';
Application.CreateForm(TMainForm, MainForm);
TStyleManager.TrySetStyle('Emerald Light Slate');


Danke für jede Idee und Hilfe
LG Michi

himitsu 30. Okt 2020 20:04

AW: VCL-Styles bei Delphi 10.4
 
und jetzt noch ein Stacktrace, wo genau es im TForm.Create knallt

Reinhold 2. Nov 2020 06:15

AW: VCL-Styles bei Delphi 10.4
 
Hallo an Alle.

Dieses Problem hatte Ich auch schon, da dachte ich auch erst an einen Fehler von Delphi.
Aller Dings war es nicht so, sondern ich hatte einfach vergessen Delphi 10.4 bekannt zugeben,
das ich den Style aus 10.3 verwenden möchte. Also rein in die Projektoptionen den Style dem Project
bekannt geben, neu compilieren und fertig.
Warum ist das so, wenn Delphi nichts von diesen Style weis, kann es den Style nicht in die Resourcen laden.
Somit kracht es beim Start des Programmes, da Delphi den Style aus der Resource laden will.

gruß Reinhold

dummzeuch 2. Nov 2020 08:01

AW: VCL-Styles bei Delphi 10.4
 
Zitat:

Zitat von michiww (Beitrag 1476460)
ich hab schon ein Testprojekt für 10.4 gebaut, das funktioniert.
Mein Programm wo es nicht geht hat ein paar tausend Zeilen und ich hab noch keine Ahnung warum hier eine Exception kommt.

üblicherweise kommt man bei sowas weiter, in dem man das Programm abspeckt. Erstmal großzügig alles rauswerfen, was in OnShow sowieso nicht benötigt wird. Schauen, ob der Fehler weg ist und dann weiter machen. Dabei nicht vergessen, auch Units rauszuwerfen.

Ich gehe davon aus, Du hast ein SCM, so dass dies gefahrlos möglich ist. Ein Backup der Original-Sourcen vorher kann natürlich trotzdem nicht schaden.

michiww 3. Nov 2020 17:09

AW: VCL-Styles bei Delphi 10.4
 
Hallo Reinhard,

das ist leider nicht das Problem, ich habe alle Styles entfernt und nochmal neu alle hinzu, aber egal mit welchen Style kommt eine Exception, nur mit dem Windows Style nicht.

himitsu 4. Nov 2020 12:22

AW: VCL-Styles bei Delphi 10.4
 
Auf der EKON gelernt, dass es einen oder besser mehrere geile Bugs gibt.

Jedesmal wenn du diese (vielleicht auch egal welche) Option anschaust, mußt du danach alle Haken raus und neu reinmachen, weil Delphi zwar die haken anzeigt, aber es eigentlich vergessen hat.
Schön zu sehn auch unten an der ComboBox mit dem aktiven Style, die beim Neuöffnen nur "Windows" drin hat, was "kein Style" heißt.

Und während des Öffnens einer Form darf kein globaler Style zugewiesen sein.
Nach dem Öffnen und kurzem anzeigen des OhneStyle könnte man einen Style der Form zuweisen
und es ging auch irgendwie vorher, aber hab grade nicht genau im Kopf wie das ging und ich muß nochmal kurz los meine Pizza holen, bevor die EKON weitergeht. :oops:

michiww 5. Nov 2020 12:26

AW: VCL-Styles bei Delphi 10.4
 
Hi miteinander,

ich hab gestern Abend Delphi 10.4 mit Patch 1,2,3 deinstalliert und Delphi 10.4.1 installiert.
Problem ist weg, alles geht mit den Styles wie zuvor mit 10.3

LG Michi

TurboMagic 5. Nov 2020 20:09

AW: VCL-Styles bei Delphi 10.4
 
Super!

t2000 20. Feb 2021 11:56

AW: VCL-Styles bei Delphi 10.4
 
Ich häng mich hier mal dran.
Ich habe einen fast identischen Fehler.

Beim Setzen des Styles eine Exception. Aber das genaue Umfeld ist jetzt hier nicht so wichtig.
Abstürzen tut das Programm an dieser Stelle in der Datei ...21.0\source\vcl\StyleAPI.inc Zeile 10948

neuste Version: Delphi 10.4.1 inkl. Patches

Dort ist eine solche Abfrage:

if StyleObject <> nil then
begin
... mach was
end
else
StyleObject.Draw( ...) !!! Das Objekt ist doch NIL !!

Hier der Original Sourcecode

Delphi-Quellcode:
  if StyleObject <> nil then
  begin
    StyleObject.Active := kwdsActive in AWindow.State;
    StyleObject.BoundsRect := AWindow.Rect;
    if (ADPI > DPI_DEFAULT) and (AObject = 'Title') then
    begin
      StyleObject := StyleObject.FindObjectByName('Image');
      if StyleObject <> nil then
      begin
        StyleObject := StyleObject.FindObjectByName('Title');
        if StyleObject <> nil then
        begin
          R := StyleObject.BoundsRect;
          R.Bottom := MulDiv(AWindow.ClipRect.Bottom, ADPI, DPI_DEFAULT);
          SaveBoundsRect := StyleObject.BoundsRect;
          StyleObject.BoundsRect := R;
          StyleObject.FStopDrawChilds := True;
          if (StyleObject.MarginLeft + StyleObject.MarginRight = 0) or
             (StyleObject.MarginTop + StyleObject.MarginBottom = 0) then
          begin
            Buffer := TBitmap.Create;
            try
              Buffer.SetSize(R.Width, AWindow.ClipRect.Height);
              R := Rect(0, 0, Buffer.Width, Buffer.Height);
              StyleObject.BoundsRect := R;
              StyleObject.Draw(Buffer.Canvas, R);
              R := AWindow.ClipRect;
              R.Bottom := MulDiv(R.Bottom, ADPI, DPI_DEFAULT);
              DrawStretchBitmap(Buffer, Canvas, R);
            finally
              Buffer.Free;
            end;
          end
          else
            StyleObject.Draw(Canvas, R, ADPI);
          StyleObject.FStopDrawChilds := False;
          StyleObject.BoundsRect := SaveBoundsRect;
        end
        else
          StyleObject.Draw(Canvas, AWindow.ClipRect, ADPI);   //  Hier der Absturz. Bzw. steht hier der Cursor bei der Exception, wenn ich "Anhalten" drücke. StyleObject = nil
      end
      else
        StyleObject.Draw(Canvas, AWindow.ClipRect, ADPI);
    end
    else
      StyleObject.Draw(Canvas, AWindow.ClipRect, ADPI);
  end;
Hab ich gerade einen Aussetzer oder läuft hier was falsch.
Es ist ja nicht nur eine Stelle im Sourcecode, die genau so geschrieben ist.

.

t2000 20. Feb 2021 12:37

AW: VCL-Styles bei Delphi 10.4
 
Der Auslöser ist gefunden.
In dem Style gibt es nicht den Eintrag: Objects - Form - Image - Title (siehe Bitmap-Stil-Designer)
Diese Feld fehlt bei allen "Windows modern" Stilen. Und die setze ich ein.

Inzwischen kann ich auch zur Laufzeit den Stil nicht mehr wechseln. Bis gestern lief noch alles einwandfrei.
Es laufen alle Stile, die das besagte Feld haben, aber alle anderen nicht. Aber das auch erst seit heute. (habe nur die Mainform ausgetauscht.)
Teste jetzt nochmal ein Mini-Programm.

Aber der merkwürdige Quelltext dort oben ist mir weiterhin suspekt.

Uwe Raabe 20. Feb 2021 14:49

AW: VCL-Styles bei Delphi 10.4
 
Der Code ist definitiv falsch und er ist auch erst in 10.4 reingekommen, wo die Styles High-DPI unterstützen. Das ist doch einen QP-Eintrag wert.

Uwe Raabe 20. Feb 2021 14:54

AW: VCL-Styles bei Delphi 10.4
 
Und bitte gib den betreffenden Style exakt an. "Windows modern" kommt in einer Standard-Installation offenbar nicht vor.

KodeZwerg 20. Feb 2021 19:45

AW: VCL-Styles bei Delphi 10.4
 
Habe mit den rruz style units auch viele Probleme. Da weiß ich nicht mal wo ich anfangen sollte mich zu beschweren... zu viel geht schief bzw an Windows vorbei... was der so alles intercepted... da gestalte ich mir lieber mein eigenes style von Null auf und weiß worauf ich mich einlasse... mfg :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:03 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