Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi NonVCL - Hintergrundfarbe eines "Labels" ändern (https://www.delphipraxis.net/52618-nonvcl-hintergrundfarbe-eines-labels-aendern.html)

Flocke 1. Sep 2005 15:09

Re: NonVCL - Hintergrundfarbe eines "Labels" ände
 
Zitat:

Zitat von Luckie
An welcher Stelle sollte ich ihn denn wieder zerstören? Ich kenne die Stelle aus dem PSDK, nur wüßte ich nicht, wo ich ihn wieder zerstören sollte. :gruebel:

Also ich hab' dafür immer eine globale Variable genommen (so wie du auch, glaube ich), ganz am Anfang (oder bei der ersten Benutzung) einmal den HBRUSH erzeugt und beim Programmende wieder freigegeben. Ein Stock-Brush ist aber natürlich auch gut (sofern einer genau die Farbe trifft, die du haben willst).

Luckie 1. Sep 2005 15:29

Re: NonVCL - Hintergrundfarbe eines "Labels" ände
 
Ja hatte ich auch erst, aber am Ende ist es sowieso für den Popo. So bald der Prozess beendet wird, zerstört Windows auch den Speicherbereich und von dem Prozess ist nichts mehr im Speicher.

Jetzt sieht das bei mir so aus:
Delphi-Quellcode:
    WM_CTLCOLORSTATIC:
      begin
        case GetDlgCtrlId(lParam) of
          IDC_STC_BANNER: { color the banner white }
            begin
              result := BOOL(GetStockObject(WHITE_BRUSH));
            end;
        else
          Result := False;
        end;
      end;

Flocke 1. Sep 2005 15:39

Re: NonVCL - Hintergrundfarbe eines "Labels" ände
 
Zitat:

Zitat von Luckie
Ja hatte ich auch erst, aber am Ende ist es sowieso für den Popo. So bald der Prozess beendet wird, zerstört Windows auch den Speicherbereich und von dem Prozess ist nichts mehr im Speicher.

Bist du sicher, dass das auch für GDI-Handles gilt? Ich dachte bisher immer, die würden beim Prozessende nicht automatisch freigegeben. :gruebel:

Luckie 1. Sep 2005 15:43

Re: NonVCL - Hintergrundfarbe eines "Labels" ände
 
Der Richter sagt dazu nichts explizit, deswegen bin ich davon ausgegenagen, dass dies auch für GDI Handles gilt.

turboPASCAL 1. Sep 2005 16:02

Re: NonVCL - Hintergrundfarbe eines "Labels" ände
 
Liste der Anhänge anzeigen (Anzahl: 1)
:gruebel: Was hab ich da nur wieder für ein Thema angesprochen ? :zwinker:

Was spricht gegen:
Delphi-Quellcode:
WM_CTLCOLORSTATIC:
      begin
        case GetDlgCtrlId(lParam) of
          Edit5ID_RandomText: { Farbe des Editfeldes aendern }
            begin
              SetTextColor(wParam, clBlue);
              SetBkColor(wParam, clWhite);
            end;
          else Result := False;
        end;
      end;
...und wie kann man die Farbe zB. clBtnFace setzen (Ähm... ohne die Unit Graphics die Systemfarben setzen)

Zitat:

Zitat von Luckie
Delphi-Quellcode:
//..
case GetDlgCtrlId(lParam) of
  IDC_STC_BANNER: { color the banner white }
    begin
      result := BOOL(GetStockObject(DKGRAY_BRUSH {WHITE_BRUSH}));
    end;
  else //...

dann wird es bei mir so:

Flocke 1. Sep 2005 16:05

Re: NonVCL - Hintergrundfarbe eines "Labels" ände
 
Zitat:

Zitat von turboPASCAL
Edit5ID_RandomText: { Farbe des Editfeldes aendern }

Wenn das ein Edit-Feld ist, dann musst du MSDN-Library durchsuchenWM_CTLCOLOREDIT abfangen - es gibt für jede Control-Klasse eine eigene Meldung.

turboPASCAL 1. Sep 2005 16:35

Re: NonVCL - Hintergrundfarbe eines "Labels" ände
 
:gruebel: Äh...
Zitat:

Zitat von turboPASCAL
Edit5ID_RandomText: { Farbe des Editfeldes aendern }

Ne, Edit5ID_RandomText ist ein Textfeld (Copy&Paste Fehler :drunken: )

Was mich nun noch interesiert ist, wie man auf die Systemfarben ala clHighlight oder so zugreifen kann.
Die Systemfarben sind ja in der Unit Graphics def.
Delphi-Quellcode:
const
  clRed      = $000000FF;
  clGreen    = $0000FF00;
  clBtnFace  = ?
  clHighlight = ?

Olli 1. Sep 2005 16:49

Re: NonVCL - Hintergrundfarbe eines "Labels" ände
 
Zitat:

Zitat von Luckie
An welcher Stelle sollte ich ihn denn wieder zerstören? Ich kenne die Stelle aus dem PSDK, nur wüßte ich nicht, wo ich ihn wieder zerstören sollte. :gruebel:

Guckst du mal in meine Programme. Ich speicher die Brushes als Property des jeweiligen Fensters ab.

Zitat:

Zitat von Luckie
Der Richter sagt dazu nichts explizit, deswegen bin ich davon ausgegenagen, dass dies auch für GDI Handles gilt.

Sollte aber so sein.

@turbo: Wenn du ein readonly-EDIT hast, dann mußt du übrigens auch diese Nachricht verwenden (also WM_CTLCOLORSTATIC), wenn es read/write ist, nimmste die entsprechende (also WM_CTLCOLOREDIT).

Olli 1. Sep 2005 16:50

Re: NonVCL - Hintergrundfarbe eines "Labels" ände
 
Zitat:

Zitat von turboPASCAL
Die Systemfarben sind ja in der Unit Graphics def.
Delphi-Quellcode:
const
  clRed      = $000000FF;
  clGreen    = $0000FF00;
  clBtnFace  = ?
  clHighlight = ?

MSDN-Library durchsuchenGetSysColor und MSDN-Library durchsuchenGetSysColorBrush

turboPASCAL 1. Sep 2005 16:56

Re: NonVCL - Hintergrundfarbe eines "Labels" ände
 
Zitat:

Zitat von Olli

Ja, natürlich :wall: , so jetzt hab ich mich genug blamiert. :wink: THX.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:57 Uhr.
Seite 2 von 2     12   

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