AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Farbe eines Buttons mit WndProc ändern
Thema durchsuchen
Ansicht
Themen-Optionen

Farbe eines Buttons mit WndProc ändern

Ein Thema von landsc · begonnen am 2. Apr 2004 · letzter Beitrag vom 2. Apr 2004
Antwort Antwort
landsc

Registriert seit: 23. Mai 2003
3 Beiträge
 
#1

Farbe eines Buttons mit WndProc ändern

  Alt 2. Apr 2004, 12:32
Hallo!

Ich hab mal ne Frage. Ich weiß, das Thema wurde schon oft erläutert, nur nicht zu meiner Zufriedenheit.
Ich bin schon lange auf der Suche nach einer Möglichkeit die Farbe eines Button zu ändern.
Ich weiß, daß mit WndProc alles möglich ist und ich möchte auch keine eigene Komponente schreiben, ich
möchte das Problem mit WndProc lösen. Ich war soweit, daß ich die Farbänderung gesehen habe, die aber gleich
durch BtnFace wieder überschrieben wurde. Könnt Ihr mir bitte eine Beispiel posten, wie ich das mit WndProc
lösen kann? Oder ergänzt einfach den untenstehenden Quelltext.
Vielen Dank schonmal im vorraus.

Gruß

landsc

mein Quelltext soweit:

Delphi-Quellcode:
procedure TfrmMain.WndProc(var msg: TMessage);
begin
  inherited WndProc(msg);
  if msg.Msg = WM_CTLCOLORBTN then
  begin
    Button1.Brush.Color := clRed;
    msg.LParam := Button1.Handle;
    msg.WParam := GetDC(Button1.Handle);
    msg.Result := Button1.Brush.Handle;
  end;
end;
[edit=Admin]Delphi-Tags korrigiert. Mfg, Daniel[/edit]
  Mit Zitat antworten Zitat
AlphaBug

Registriert seit: 2. Mär 2004
Ort: hinterm Transistor 246 gleich links
46 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Farbe eines Buttons mit WndProc ändern

  Alt 2. Apr 2004, 12:58
Hi,

hab dieses Beispiel aus einer ComboBox:

Delphi-Quellcode:
  inherited WndProc(Message);
  if Message.Msg = WM_CTLCOLORLISTBOX then
  begin
    SetBkColor(Message.wParam, ColorToRGB(Color));
    Message.Result := CreateSolidBrush(ColorToRGB(Color));
  end;
und Dieses direkt von TCustomCombo:

Delphi-Quellcode:
  with Message do
    case Msg of
      WM_CTLCOLORMSGBOX..WM_CTLCOLORSTATIC:
        begin
          SetTextColor(WParam, ColorToRGB(Font.Color));
          SetBkColor(WParam, ColorToRGB(Brush.Color));
          Result := Brush.Handle;
          Exit;
        end;
    end;
  inherited WndProc(Message);
Könnten funktionieren,
hab' sie aber nicht ausprobiert !

[edit/:]
bin mir nicht sicher obs im TfrmMain.WndProc funktioniert, da das die WinProc-Methode von
(vermute ich mal) TForm ist.
Ansonsten muss wohl ein Abgeleteter Button her
[/edit]

Viel Glück!
Delphi 4ever !
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Farbe eines Buttons mit WndProc ändern

  Alt 2. Apr 2004, 13:48
Die Wndproc hat damit gar nichts zu tun bzw. nur am Rande. Willst du einen Button anders färben, heißt das Zauberwort Subclassing. Die nachticht WM_CTLCOLORBUTTON gibt es zwar nützt dir aber nichts. Da immer nur ein Brush zurückgegeben werden kann, ein Button aber aus mehreren Farben besteht wegen des 3D Effektes usw. Nähres dazu um MSDN oder PSDK. Zu Hause hab eich noch das beispiel für einen gesubclassed Button, weiß aber noch nicht, wann ich dadran komme.

@AlphaBug: Eine Combobox hat damit gar nichts am Hut und dein Beispiel dürfte ihm nichts nützen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
AlphaBug

Registriert seit: 2. Mär 2004
Ort: hinterm Transistor 246 gleich links
46 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Farbe eines Buttons mit WndProc ändern

  Alt 2. Apr 2004, 13:57
@Luckie

Ist mir schon klar, das 'ne ComboBox nichts mit 'nem Button zu tun hat ,
aber als ich 'ne ComboBox selbst zeichnen wollte,
stieß ich halt im WndProc halt auf dieses Beispiel,
obwohl der eigentliche Zeichenvorgang in der Paint-Methode und im DrawItem-Event lag,
aber 'ne ComboBox stammt halt auch von TWinControl ab.

Im übrigen war's nur 'ne flüchtige Idee.
Delphi 4ever !
  Mit Zitat antworten Zitat
landsc

Registriert seit: 23. Mai 2003
3 Beiträge
 
#5

Re: Farbe eines Buttons mit WndProc ändern

  Alt 2. Apr 2004, 14:04
Danke erstmal für Eure Mühe.

@Luckie

Währe echt cool, wenn Du da was finden würdest und mir schicken könntest, wenn Du zeit hast.
Danke schonmal.

Gruß
landsc[dp][df]
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:47 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