AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Eigene Scrollbar bei Treeview / List usw. verwenden...
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Scrollbar bei Treeview / List usw. verwenden...

Ein Thema von Bernd Höhner · begonnen am 29. Aug 2003 · letzter Beitrag vom 1. Sep 2003
Antwort Antwort
Bernd Höhner

Registriert seit: 29. Aug 2003
Ort: Darmstadt
4 Beiträge
 
Delphi 6 Enterprise
 
#1

Eigene Scrollbar bei Treeview / List usw. verwenden...

  Alt 29. Aug 2003, 11:33
Hallo Zusammen!
Anlass für diesen ganzen Leidweg war, das ich die Farben der Scrollbars verändern wollte. Bis auf IE und globale Farbeinstellungen kann das wohl keiner, weil ich schon ziemlich lange suche. Also: Eigene Scrollbar programmiert! Jetzt möchte ich die Kommunikation zwischen einer Control und meinem Scrollbar aufbauen. Über Messages. Den Control eigenen Scrollbar, der standardmässig auftaucht, zu unterdrücken, habe ich mit Hilfe von DP hingekriegt. Wie kann ich aber die Nachrichten, (SBM_SET_SCROLLINFO / SBM_SETRANGE / SBM_SETPOS usw...) in meiner Scrollbar wirken lassen ?

Am Beispiel von einem TreeView (ohne Scrollbars) bin ich soweit:

Delphi-Quellcode:
  TNoScrollTreeView = class( TTreeView )
  private
    :
    procedure SBMSetRange ( var msg: TMessage ); message SBM_SETRANGE;
    procedure SBMSetRangeRedraw ( var msg: TMessage ); message SBM_SETRANGEREDRAW;
    procedure SBMSetScrollInfo ( var msg: TMessage ); message SBM_SETSCROLLINFO;
    : usw...
  end;
Sagen wir, ich hätte SB : TMyScrollbar auf Form1...

Delphi-Quellcode:
procedure TNoScrollTreeView.SBMSetScrollInfo ( var msg: TMessage);
var
  si : PSCROLLINFO;
  rf : Boolean;
begin
  rf := (msg.wParam > 0);
  si := PSCROLLINFO(msg.lParam);
  if (si.fMask = SIF_PAGE) then Form1.SB.Page := si.nPage;
  if (si.fMask = SIF_POS ) then Form1.SB.Position := si.nPos;
  if (si.fMask = SIF_RANGE) then
  begin
    Form1.SB.Min := si.nMin;
    Form1.SB.Min := si.nMax;
  end;
  inherited;
end;
Das geht aber nix. Ich habe gedacht, der TreeView, wirft mit SBM_..messages um sich. Scheinbar ist die Richtung aber ne andere...

Kann jemand helfen ?

Danke & Schönen Tag
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#2

Re: Eigene Scrollbar bei Treeview / List usw. verwenden...

  Alt 29. Aug 2003, 12:34
Der IExplorer kann die Farbe der ScrollBar verändern da er FlatScrollBar installiert.
via FlatSB_EnableScrollBar(hwnd, true);

schau mal unter diesen Stichwort.


Frabe ändert man via
FlatSB_SetScrollProp
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Bernd Höhner

Registriert seit: 29. Aug 2003
Ort: Darmstadt
4 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Eigene Scrollbar bei Treeview / List usw. verwenden...

  Alt 29. Aug 2003, 14:27
Danke. das ist nicht schlecht, aber ich bekomme das Message Handling noch nicht richtig hin.
Man muss alle Calls an die FlatSB_... Calls weiterleiten.

Ein Memofeld mit neuem Scrollbar sollte so aussehen:
Delphi-Quellcode:
ScrollWnd := Memo1.Handle
if (InitializeFlatSB(ScrollWnd)) then
  begin
    FlatSB_SetScrollProp(ScrollWnd, WSB_PROP_HBKGCOLOR,$00FF0000,false);
    oldproc := Memo1.WindowProc;
    Memo1.WindowProc := NewMethod;
  end;
In New Method wird auf Messages wie WM_HSCROLL, SBM_ENABLE_ARROWS, SBM_GETSCROLLINFO usw.. reagiert, um nach FlatSB_... weiterzuleiten. Das ist doch richtig, oder ?

Der Effekt ist, das die Scrollbars zwar flat sind (der untere ist auch blau), aber irgendwie funktionieren sie nicht, und werden von std.-sb's überdeckt..

Hast Du vielleicht ein Beispiel zur Hand ?

Gruss,
bErnd
  Mit Zitat antworten Zitat
neolithos

Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
 
Delphi 7 Architect
 
#4

Re: Eigene Scrollbar bei Treeview / List usw. verwenden...

  Alt 29. Aug 2003, 14:42
Hast du InitializeFlatSB gerufen?

Eigentlich müssen keine Nachrichten weitergeleitet werden, so steht es in der MSDN?

Ach noch ein Tip:

Im ListView (bzw. alle CommCtrl's) unter Win2k (andere OS weiß ich es noch nicht) gibt es einen Fehler.

Ist leider schlecht zu erklären. aber da tauchen auf einmal die standard Thumb's wieder auf.
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
  Mit Zitat antworten Zitat
Bernd Höhner

Registriert seit: 29. Aug 2003
Ort: Darmstadt
4 Beiträge
 
Delphi 6 Enterprise
 
#5

Re: Eigene Scrollbar bei Treeview / List usw. verwenden...

  Alt 29. Aug 2003, 14:56
ja, hab ich (siehe Source). Ach, wenns unter W2k mal ein bischen hapert ist das nicht schlimm. Besser, als die Standard Scrollleisten zu haben.
Ich werde es einfach noch weiterversuchen...
Danke trotzdem!
  Mit Zitat antworten Zitat
Bernd Höhner

Registriert seit: 29. Aug 2003
Ort: Darmstadt
4 Beiträge
 
Delphi 6 Enterprise
 
#6

Re: Eigene Scrollbar bei Treeview / List usw. verwenden...

  Alt 1. Sep 2003, 11:35
Hi.
Ich habe jetzt eine Weile versucht mit FlatSB's umzugehen.
So richtig funktionierts ja noch nicht.

Ich hatte aber folgende Idee:
Die Komponente TScrollBox ermöglicht, FlatScrollbars auszuwählen.
Darin ist dann ein (grössere) Memo oder Treeview oder so enthalten.

Wenn ich aber dann schon FlatScrollbars habe, sollte ich doch auch die Funktionen (FLatSB_...) auf die Scrollbox anwenden können, oder ?

Mein Ur-Problem, ist immer noch die Farben zu ändern.
Weiss jemand, wie die WSB_PROP_PALETTE Funktion in Delphi benutzt wird ?
Also so, dass ich auch weiss, welche Teile der SB welche Farbe bekommen ??

Gruss,
Bernd
  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 01:55 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