Frage

In Delphi, ich habe eine Scrollbar Komponente (orientierte vertikal) auf die rechte Seite meiner Form hinzugefügt.

Ich habe ein Scrollbar OnChange-Ereignis hinzugefügt, damit ich die Ansicht des Formulars ändern kann und die Position des Scrollbar Daumens, wenn der Benutzer klickt auf der UpArrow oder Unten-Taste mit seiner Maus, und das funktioniert gut.

Aber das OnChange-Ereignis scheint nur ausgelöst werden, wenn die Maustaste zunächst auf dem Pfeil gedrückt wird.

Ich stelle fest, alle Regler steuert den Befehl und weiter Scrollen wiederholen, während die Maus auf den Pfeil gedrückt bleibt, und ich möchte dieses Verhalten implementieren.

Wie kann ich leicht erkennen, wenn der Benutzer die Maus nicht bewegt hat und weiterhin die Maustaste drücken, während die Maus über den Pfeil bleibt?


Fazit. Irgendwie etwas in der Scrollbar in meinem Projekt wurde beschädigt. Nachdem ich die ScrollBar gelöscht und hinzugefügt, um es wieder, verschwand das Problem.

Dies ist eine jener heikel diejenigen, die viel Zeit in Anspruch nahm mich zu lösen. Danke für Ihre Hilfe. Ich schließe diese Frage.

War es hilfreich?

Lösung

Mit dem OnScroll Ereignisse.

Der folgende Code fügt ‚xxx‘ zu einem Memo, solange die Maus auf der Scrollbar Pfeiltaste gedrückt gehalten wird. Getestet mit Delphi 6.

procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
  var ScrollPos: Integer);
begin
    Memo1.Lines.Add( 'xxx' );
end;

Andere Tipps

Die übliche Art und Weise Auto-Wiederholung zu handhaben ist, einen TTimer zu aktivieren, und aktivieren Sie im OnTimer () Event-Handler, ob die Aktion erneut durchgeführt werden muss, und den Timer deaktivieren, wenn nicht. Wenn Sie Beispielcode benötigen, scheine ich zu bedenken, dass die SynEdit Steuerung eine ähnliche Technik für Autoscrolling in Drag verwendet und Drop-Operationen.

Wenn eine Komponente einkapseln nicht das Verhalten, das Sie suchen und Sie können das Verhalten mit den verfügbaren Methoden nicht leicht simulieren sollte wirklich die nächste Komponente Unterklasse, die die meisten tut, was Sie brauchen, und das Verhalten hinzufügen, die fehlen.

Ich weiß, dass einige zusätzliche Arbeit beteiligt ist, aber es ist wirklich der bessere Weg zu gehen. Jetzt mit Delphi, ich glaube mich zu erinnern, dass Unterklasse Komponenten ein bisschen mehr Arbeit benötigt auch in der Lage sein von der IDE für Formularentwurf verwendet werden, vielleicht hat sich das geändert seit Version 7.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top