Einzelnen Beitrag anzeigen

Benutzerbild von Gina
Gina

Registriert seit: 23. Dez 2004
Ort: Berlin
161 Beiträge
 
Delphi 6 Professional
 
#7

Re: Zwei ListBoxen gleichzeitig scrollen?

  Alt 5. Mär 2005, 11:14
Hallo,

sorry, ich hätte vielleicht noch dazu sagen sollen, für welche Variante ich mich entschieden habe...

http://www.delphipraxis.net/internal...=311415#311415

Zu dieser kleinen Komponente wollte ich gerne das Scrollen per Rad ergänzen, aber ich finde einfach nicht die richtigen Messages...

Hier mal mein bisheriger Code:

Delphi-Quellcode:
unit scrolllist;

interface

uses
  Messages, Classes, StdCtrls;

type
  ListScrollBox = class(TListBox)
  private
    FOnScroll: TScrollEvent;
    procedure WMMouseWheel(var Message: TWMMOUSEWHEEL); message WM_MOUSEWHEEL;
    procedure WMHScroll(var Message: TWMHScroll); message WM_HSCROLL;
    procedure WMVScroll(var Message: TWMVScroll); message WM_VSCROLL;
  published
    property OnScroll: TScrollEvent read FOnSCroll write FOnScroll;
  end;

  procedure Register;

implementation

uses Controls;

procedure ListScrollBox.WMMouseWheel(var Message: TWMMOUSEWHEEL);
begin
  if Message.WheelDelta > 0 then
    Perform(WM_VSCROLL, SB_LINEUP, 0) ---> hier bekomme ich eine Fehlermeldung wegen SB_LINEUP
  else
    Perform(WM_VSCROLL, SB_LINEDOWN, 0); ---> hier bekomme ich eine Fehlermeldung wegen SB_LINEDOWN
  Message.Result := 0;
end;

procedure ListScrollBox.WMHScroll(var Message: TWMHScroll);
var
  ScrollPos: Integer;
begin
  inherited;
  ScrollPos := Message.Pos;
  if Assigned(FOnScroll) then
    if TScrollCode(Message.ScrollCode) in [scLineUp, scLineDown,
     scPageUp, scPageDown, scPosition, scTop, scBottom] then
      FOnScroll(Self, TScrollCode(Message.ScrollCode), ScrollPos);
end;

procedure ListScrollBox.WMVScroll(var Message: TWMVScroll);
var
  ScrollPos: Integer;
begin
  inherited;
  ScrollPos := Message.Pos;
  if Assigned(FOnScroll) then
    if TScrollCode(Message.ScrollCode) in [scLineUp, scLineDown,
     scPageUp, scPageDown, scPosition, scTop, scBottom] then
      FOnScroll(Self, TScrollCode(Message.ScrollCode), ScrollPos);
end;

procedure Register;
begin
  RegisterComponents('Samples',[ListScrollBox]);
end;

end.
Wo liegt mein Fehler please?

Tausend Dank, Gina.
Mein Lieblings-Spiele-Laden in Berlin: www.cometgames-store.de

{KDT}
.
  Mit Zitat antworten Zitat