AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene "Listbox" - Scrollproblem

Ein Thema von Zerolith · begonnen am 7. Nov 2005 · letzter Beitrag vom 8. Nov 2005
Antwort Antwort
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#1

Eigene "Listbox" - Scrollproblem

  Alt 7. Nov 2005, 08:21
Hallo!

ich hab die letzten Tage damit verbracht mir eine art "Gästeliste" zusammenzubasteln.
einen eigenen Scrollbalken (für die Vertikale) hab ich schon länger. Hab allerdings noch nie versucht eine eigene scrollbare Komponente zu bauen.

das Scroll ereigniss habe ich folgendermaßen gedacht (und probiert):
Delphi-Quellcode:
  if Position = ActiveElement then
    Exit;
  i := 50 * FClients.Count;
  if i > Self.Height then
  begin
    FTop := 0 - (Position * 47);
  end;
  if Position = Clients.Count then
    Exit;
  ActiveElement := Position;
mit ActiveElement leg ich fest welches element "gehighlighted" wird. (in der Paint procedure)
mit FTop verringer ich den Top-Wert jedes Elements. 47 ist die höhe eines Elements.

Leider scrollt der Balken viel zu weit nach unten und ich weiß nicht wie und wo ich das beschränken kann (soll).

Meine nächstes Problem ist die OnMouseDown procedure:
Delphi-Quellcode:
procedure TZClientList.MouseDown(Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
var
  i, j: integer;
begin
  inherited;
  FMouseDown := TRUE;
  case ViewMode of
    zvReport:
      begin
        j := (FClients.Count * 47) + 25;

        if (x > 5) and (x < Width - 5) then
          if (y > 22) and (y < Height) then
          begin
            i := (FTop + y - 22) div 47;
            if i < FClients.Count then
              ActiveElement := i
            else
              Exit;
          end;
      end;
  end;
end;
ich hab (wie ihr seht) schon selber n bissl rumgespielt. Leider erreich ich nicht ganz was ich möchte: Beim klick sollte das darunterliegende element als ActiveElement gesetzt werden und es sollte zu diesem Element gescrollt werden (via SetActive):
Delphi-Quellcode:
procedure TZClientList.SetActive(const Value: Integer);
begin
  FActive := Value;
  if Assigned(FSlider) then
    if FClients.Count > 0 then
      if Value > -1 then
        Slider.Position := Value;
  Draw;
end;
(Draw ist ähnlich der Paint procedure (ich verwende allerdings ein Nachfahreobjekt von TWinControl)
ich habe beim OnMouseDown einen Boolschen wert gesetzt: FMouseDown. Damit erreiche ich schon dass man mit gedrückter Maustaste elemente markieren kann (und scrollen).


also nochmal kurz:
1. NEbeneffekt ist: Es wird viel zu weit nach unten gescrollt. Wie kann ich das beschränken?
2. Mit MouseDown möchte ich element markieren. Leider klappt das nicht mehr seit ich diese SCrollerei eingebaut habe.

Danke, Daniel
Daniel
  Mit Zitat antworten Zitat
Zerolith

Registriert seit: 12. Mär 2003
Ort: Kempten
188 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Eigene "Listbox" - Scrollproblem

  Alt 8. Nov 2005, 08:34
*push*

kann mir niemand helfen? oder hab ich mich doof ausgedrückt?
Daniel
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz