Nach Jahrelanger Abstinenz habe ich wieder ein Delphi-projekt angefangen.
Das ganze läuft soweit ganz gut - nur habe ich jetzt ein Problem an dem ich schon seit 3 Tagen dran hänge und nicht weiter komme.
Ich entwickel gerade für mich eine Jukebox-Software welche auf einem Shuttle X50 laufen soll. Das Ding ist mit einem Touchscreen ausgerüstet und bietet keine sooo große Auflösung. Deswegen ist es für mich wichtig diverse Steuerkomponenten selbst zu erstellen damit die mit dem Finger bedienbar sind.
Nun nutze ich eine tListView um mir meine MP3-Titel anzeigen zu lassen. Die Anpassung habe ich soweit hinbekommen. Das einzige was mit nicht gelingen will ist die Benutzung einer eigenen Scrollbar.
Ich denke ich habe in diesem Forum jeden Thread zu dem Thema gelesen und die Lösung nicht gefunden. Auch die Schweitzer konnten mir nicht weiter helfen.
Ich nutze als alternative Scrollleiste eine eigene Ableitung der tALScrollbar. Das ist eine freie Scrollleisten-Komponente.
Nun gibt es zwei Sachen die ich nicht hin bekomme.
1. Das verstecken der "original" Scrollleisten.
Ich habe dafür zwar folgenden Code gefunden der auch "funktioniert":
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:
| type TForm1 = class(TForm) ListView1: TListView; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); private FListViewWndProc: TWndMethod; procedure ListViewWndProc(var Msg: TMessage); public FShowHoriz: Boolean; FShowVert: Boolean; end; var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ListViewWndProc(var Msg: TMessage); begin ShowScrollBar(ListView1.Handle, SB_HORZ, FShowHoriz); ShowScrollBar(ListView1.Handle, SB_VERT, FShowVert); FListViewWndProc(Msg); end;
procedure TForm1.FormCreate(Sender: TObject); begin FShowHoriz := True; FShowVert := False; FListViewWndProc := ListView1.WindowProc; ListView1.WindowProc := ListViewWndProc; end;
procedure TForm1.FormDestroy(Sender: TObject); begin ListView1.WindowProc := FListViewWndProc; FListViewWndProc := nil; end; |
Die Sache hat nur einen Haken. Das Scrollen mit dem Mausrad funktioniert dann nicht mehr.
2. Ich bekomme das Partout nicht sauber auf die Reihe mit meinem Scrollbar das Listview sauber zu steuern.
Sämtliche Versuche mit tListview.Scroll und SetScrollPos sind bisher fehlgeschlagen.
Ich weiß nicht was ich wo übersehe. Evtl. kann mit einer von Euch auf die Sprünge helfen.
Ich meine mal gelesen zu haben das man einem Listview ein eigenes Scrollbar zuweisen kann. Ich kann dazu nur nichts finden.
Besten Dank im Voraus.