Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Merkwürdiges Problem mit Manifest (https://www.delphipraxis.net/69076-merkwuerdiges-problem-mit-manifest.html)

DevilsCamp 9. Mai 2006 22:15


Merkwürdiges Problem mit Manifest
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich habe ein Programm geschrieben, dass eine Aktion zur einer bestimmten Uhrzeit oder nach Ablauf einer festgelegten Zeit ausführt.

Da ich WinXP benutze wollte ich nun die XP-Styles "einbinden". Dazu habe ich nach XP Design in Delphi Anwendungen eine Manifest-Datei in das Programm eingebunden. Allerdings habe ich nun das Problem, das Radiobuttons einen schwarzen Hintergrund bekommen (siehe Anhänge). Dies geschieht mit JEDEM Style ausser XP-Klassisch, da funktioniert es.

Sollten irgendwelche Code-Schnipsel von nöten sein, dann bitte sagen, ich poste sie dann.

Luckie 9. Mai 2006 22:26

Re: Merkwürdiges Problem mit Manifest
 
Ist das eine RadioGroup? Versuch es mal mit einer GroupBox und einzelnen RadioButtons.

DevilsCamp 9. Mai 2006 22:30

Re: Merkwürdiges Problem mit Manifest
 
Zitat:

Zitat von Luckie
Versuch es mal mit einer GroupBox und einzelnen RadioButtons.

Genauso habe ich es ja:

Delphi-Quellcode:
        hwndArray.Add('hwndGBArt', CreateWindowEx(0, 'BUTTON', 'Countdown Art',
          WS_VISIBLE or
          WS_CHILD or BS_GROUPBOX, 0, 0, 110, 105, hWnd, IDC_GBART, hInstance,
          nil));

        { Art: Zeit}
        hwndArray.Add('hwndArtZeit', CreateWindowEx(0, 'BUTTON', 'Zeit',
          WS_VISIBLE or
          WS_CHILD or BS_AUTORADIOBUTTON, 5, 25, 100, 25,
          hwndArray['hwndGBArt'],
          IDC_ZEIT, hInstance, nil));

        { Art: Countdown}
        hwndArray.Add('hwndArtCountDown', CreateWindowEx(0, 'BUTTON',
          'Countdown', WS_VISIBLE or
          WS_CHILD or BS_AUTORADIOBUTTON, 5, 60, 100, 25,
          hwndArray['hwndGBArt'],
          IDC_COUNTD, hInstance, nil));
(Die Klasse hwndArray verwaltet alle Handels im Programm, so brauche ich nicht für jedes neue Control eine neue Variable anlegen)

turboPASCAL 10. Mai 2006 12:26

Re: Merkwürdiges Problem mit Manifest
 
Mal darüber nachgedacht, Windows hat warscheinlich Probleme damit das passende Fensterhandle eines Controls zu ermittel und dann im XP-Style neu zu zeichnen.
Möglicherweise übergibt Win intern ein neues Handle an das Control (?).
Verwende einfach mal eine globale Variable für das Fenster und die Controls darauf.

DevilsCamp 10. Mai 2006 12:35

Re: Merkwürdiges Problem mit Manifest
 
hmm, aber weshalb sollte Windows dabei Probleme haben?
Ich benutze ja CreateWindowEx und es sollte keinen Unterschied machen ob ich die Rückgabe nun in eine Variable oder in ein Array speicher...

Tyrael Y. 23. Mai 2006 15:22

Re: Merkwürdiges Problem mit Manifest
 
...da es nicht hier steht, ob das Problem noch besteht

...einfach die Property "ParentBackground" des problematischen Controls in der IDE auf True setzen und wieder auf False, dann speichern, sollte danach gehen....ist ein Bug den man so umgehen kann


mfg

Tyrael

Luckie 23. Mai 2006 15:24

Re: Merkwürdiges Problem mit Manifest
 
Ich glaube kaum, dass dies bei nonVCL Anwendungen geht. ;)

DevilsCamp 23. Mai 2006 15:25

Re: Merkwürdiges Problem mit Manifest
 
Zitat:

Zitat von Tyrael Y.
...da es nicht hier steht, ob das Problem noch besteht

...einfach die Property "ParentBackground" des problematischen Controls in der IDE auf True setzen und wieder auf False, dann speichern, sollte danach gehen....ist ein Bug den man so umgehen kann


mfg

Tyrael

Also
1. Ja, das Problem besteht noch,
2. Ich benutze keine einzige Komponente. Das Programm ist nur mit der Win-API geschrieben (sonst wäre der Thread in einem anderem Bereich des Forums ;) )

Luckie 23. Mai 2006 15:28

Re: Merkwürdiges Problem mit Manifest
 
Häng das Programm mal hier an. Das will ich mir mal näher angucken.

DevilsCamp 23. Mai 2006 15:34

Re: Merkwürdiges Problem mit Manifest
 
Willst du SC oder das Reptil?

Olli 23. Mai 2006 15:39

Re: Merkwürdiges Problem mit Manifest
 
Na sicher den Source ;)

Luckie 23. Mai 2006 22:28

Re: Merkwürdiges Problem mit Manifest
 
Und es hat doch was mit deinem Handle Array zu tun. Ändere ich in der WndProc das nämlich:
Delphi-Quellcode:
        { Art: Zeit}
        hwndArray.Add('hwndArtZeit', CreateWindowEx(0, 'BUTTON', 'Zeit',
          WS_VISIBLE or
          WS_CHILD or BS_AUTORADIOBUTTON, 5, 25, 100, 25,
          hwndArray['hwndGBArt'],
          IDC_ZEIT, hInstance, nil));

        { Art: Countdown}
        hwndArray.Add('hwndArtCountDown', CreateWindowEx(0, 'BUTTON',
          'Countdown', WS_VISIBLE or
          WS_CHILD or BS_AUTORADIOBUTTON, 5, 60, 100, 25,
          hwnd,
          IDC_COUNTD, hInstance, nil));
Ist der Countdown RadioButton sichtbar. Wozu eigentlich der ganze Kram mit der Handle Klasse? Du vergibst doch schon Konstanten für die Controll (IDC_ZEIT, IDC_COUNTDOWN, ..). Wenn du das Handle brauchst, hol es dir doch einfach mit MSDN-Library durchsuchenGetDlgItem.

DevilsCamp 24. Mai 2006 07:13

Re: Merkwürdiges Problem mit Manifest
 
Zitat:

Zitat von Luckie
Und es hat doch was mit deinem Handle Array zu tun. Ändere ich in der WndProc das nämlich:
Delphi-Quellcode:
        { Art: Zeit}
        hwndArray.Add('hwndArtZeit', CreateWindowEx(0, 'BUTTON', 'Zeit',
          WS_VISIBLE or
          WS_CHILD or BS_AUTORADIOBUTTON, 5, 25, 100, 25,
          hwndArray['hwndGBArt'],
          IDC_ZEIT, hInstance, nil));

        { Art: Countdown}
        hwndArray.Add('hwndArtCountDown', CreateWindowEx(0, 'BUTTON',
          'Countdown', WS_VISIBLE or
          WS_CHILD or BS_AUTORADIOBUTTON, 5, 60, 100, 25,
          [b]hwnd,[/b]
          IDC_COUNTD, hInstance, nil));
Ist der Countdown RadioButton sichtbar.

Und auch Child des Hauptfensters und nicht mehr eines der GroupBox. Und genau das soll der RadioButton ja sein.

Zitat:

Wozu eigentlich der ganze Kram mit der Handle Klasse? Du vergibst doch schon Konstanten für die Controll (IDC_ZEIT, IDC_COUNTDOWN, ..). Wenn du das Handle brauchst, hol es dir doch einfach mit MSDN-Library durchsuchenGetDlgItem.
Da ich MSDN-Library durchsuchenGetDlgItem nicht kannte, schien mir die Sache mit der Klasse am logischsten.

Luckie 24. Mai 2006 08:27

Re: Merkwürdiges Problem mit Manifest
 
Warum muss er ein Child der Groupbox sein? Rein optisch macht es doch keinen Unterschied.

DevilsCamp 24. Mai 2006 08:31

Re: Merkwürdiges Problem mit Manifest
 
Ich habe drei Gruppen von RadioButtons, die jeweils unabhängig von einander sein sollen, aber auch jeweils über deren GroupBox inaktiv gesetzt werden sollen/können (dadurch spare ich es mir, jeden einzelnen RadioButton zu deaktivieren.


Aber es sieht wohl so aus, als ob die GroupBoxen irgendwie die Radiobuttons nicht richtig aktualisieren (weshalb auch immer), da es auch so aussieht, wenn ich statt meiner Handle-Klasse den Rückgabe-Wert von GetDlgItem benutze.


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