Einzelnen Beitrag anzeigen

MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#9

AW: Scrollbar Design

  Alt 14. Jun 2018, 09:18
An TE, es wäre generell immer hilfreich etwas Code von sich zu zeigen damit jeder sehen kann wie Du vorgehst um da etwas starthilfe leisten zu können.

So gebe ich Dir ein simples Beispiel, da ich Dein Code nicht kenne wird vieles anders sein als wie bei Dir.
Delphi-Quellcode:
 TForm1 = class(TForm)
  ScrollBar1: TScrollBar; // <- auf das bezieht es sich
  protected
    procedure WMCtlColorScrollbar(var Message: TWMCtlColorScrollbar);
    message WM_CTLCOLORSCROLLBAR;
  end;

procedure TForm1.WMCtlColorScrollbar(var Message: TWMCtlColorScrollbar);
begin
  if Message.ChildWnd = ScrollBar1.Handle then
    Message.Result := CreateSolidBrush(RGB(255, 255, 0)); // <- hier die Farbe
end;
Es entsteht ein Speicherleck da ich nirgendwo das Create wieder freigebe das dient nur als Beispiel wie man Farbe ändert.

Danke für den Code und das raussuchen. Hast recht, etwas Code von meiner Seite aus wäre nicht verkehrt gewesen.
Obigen Code habe ich auch schon getestet. Auch "DeleteObject" genutzt wegen CreateSolidBrush. Auch so etwas hier für die Komponente selbst probiert.
Code:
type TScrollbar = Class(vcl.StdCtrls.TScrollbar)
  protected
  procedure WMCtlColor(var Message: TWMCtlColorScrollbar); message CN_CTLCOLORSCROLLBAR;
End;
Es wird auch in diesem Fall etwas Gelb, bekomme aber dann immer den Fehler "Fehler bei Bereichsprüfung". Hört sich irgendwie nach nem Array an. Nutze Arrays in meinem Programm. Vielleicht verträgt sich irgendwas nicht zusammen. Versteh ich zwar jetzt nicht aber abgesehen davon, mir ist nicht klar, wie von der ScrollBar andere Elemente auch geändert werden können. Wie ich oben schon schrieb, gibt es auch verschiedene Zustände (Mausfang, gedrückter Zustand usw.). Darauf muss man ja auch reagieren. Auf MSDN habe ich dazu nichts für diese CTLCOLOR_ Sachen gefunden.

Ich probiere es jetzt mit TPanels, da die VCL-Stile auch ein Problem haben (siehe eine Nachricht weiter oben).

Michael
  Mit Zitat antworten Zitat