Bonjours
J'ai cherche a avoir une Scrollbar avec une bande qui se colore avant la position du curseur, j'y suis parvenu, il me reste un probleme si le curseur est clique et deplace la bande reprend sa couleur d'origine et se recolore au relachement du click
le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { //On enregistre la valeur initial la fonction WindowProc du Panel //Puis on lui assigne notre fonction NewWndProc FOriginalProc = ScrollBar1->WindowProc; ScrollBar1->WindowProc = NewWndProc; } //--------------------------------------------------------------------------- void __fastcall TForm1::ScrollBar1Scroll(TObject *Sender, TScrollCode ScrollCode, int &ScrollPos) { TControlCanvas * pcn = new TControlCanvas; pcn->Control = ScrollBar1; pcn->Brush->Color = clRed; int a = ((ScrollBar1->Width - 60)); pcn->FillRect(Rect(20,0,20 + (((ScrollBar1->Position * a)-1)/100),ScrollBar1->Height)); delete pcn; } //--------------------------------------------------------------------------- void __fastcall TForm1::ScrollBar1Change(TObject *Sender) { TControlCanvas * pcn = new TControlCanvas; pcn->Control = ScrollBar1; pcn->Brush->Color = clRed; int a = ((ScrollBar1->Width - 60)); pcn->FillRect(Rect(20,0,20 + (((ScrollBar1->Position * a)-1)/100),ScrollBar1->Height)); delete pcn; } //--------------------------------------------------------------------------- void __fastcall TForm1::NewWndProc(TMessage& Message) { TControlCanvas * pcn = new TControlCanvas; pcn->Control = ScrollBar1; pcn->Brush->Color = clRed; int a = ((ScrollBar1->Width - 60)); pcn->FillRect(Rect(20,0,20 + (((ScrollBar1->Position * a)-1)/100),ScrollBar1->Height)); delete pcn; FOriginalProc(Message); } //---------------------------------------------------------------------------
Partager