Announcement

Collapse
No announcement yet.

ScrollBox-Fehler in Delphi 5?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • ScrollBox-Fehler in Delphi 5?

    Hallo!
    Ich möchte per Code das Scrollen (vertikal) einer TScrollBox steuern, ohne daß der Anwender eingreifen kann und ohne Anzeigen der ScrollBars. Laut Delphi-Hilfe ist die möglich, indem die Eigenschaft visible der VertScrollBar auf FALSE gesetzt wird. Wenn ich nun z.B. in einer Button-OnClick-Methode die Scrollbar mit "MyScrollBox.VertScrollBar.Position := MyScrollBox.VertScrollBar.Position + 10" scrollen möchte, passiert nichts! Wird die ScrollBar angezeigt (Visible := True) funktioniert es. Der Schalter "AutoScroll" hat auf das Ergebnis keinen Einfluß. Jetzt könnte man einen Trick anwenden (sehr unschön, da die Anzeige flackert!) und VOR dem Scrollen Visible auf TRUE und danach wieder auf FALSE setzen. ABER: beim Ausschalten wird die Position gleich wieder auf 0(Null) gesetzt!?
    Stimmt mein Delphi nicht oder ist die Hilfe falsch oder (am wahrscheinlichsten :-( ) mache ich was falsch?
    Vielen Dank!

    Terry

  • #2
    Hallo,

    ich verwende <b>ScrollBy</b>, um einen als Grafik gestalteten Text in einer TScrollBox ohne Scrollbars zu scrollen:
    <pre>
    procedure TFormAbout.Timer1Timer(Sender: TObject);
    begin
    if bRetour then ScrollBox1.ScrollBy(0, 1)
    else ScrollBox1.ScrollBy(0, -1);
    Inc(iPos);
    if iPos > 220 then
    begin
    bRetour := not bRetour;
    iPos := 0
    end;
    Application.ProcessMessages;
    end;
    </pre&gt

    Comment


    • #3
      Hallo Herr Kosch!
      Vielen Dank für Ihre prompte Hilfe. Es hat auch bei mir funktioniert, jedoch hat diese Lösung einen kleinen Schönheitsfehler. In Ihrem Beispiel unterbinden Sie das Scrollen durch den festgelegten Wert iPos (max. 220). In meine ScrollBox werden dynamisch und quasi ohne mein Wissen zur Laufzeit Controls (Buttons) unterschiedlicher Größe eingebunden. Wenn ich mit ScrollBy scrolle, wird bleibt die Eigenschaft Position auf 0 (Null) und Range läuft ins unendliche. Natürlich könnte man mit for "Componentcount-1 downto 0" die Position und Höhe aller Controls ermitteln und hätte somit den max. Scrollbereich. Dies dauert aber unter Umständen sehr lange und stört den Refresh erheblich (zumindest ab einer bestimmten Anzahl Countrols). Kennen Sie/jemand eine elegantere Lösung?
      Danke und schönes Wochenende!

      Terr

      Comment

      Working...
      X