Hallo,
Zitat:
Vielleicht sollte ich mal schreiben, was ich überhaupt plane: Eine Zeitleiste in der Ereignisse der Geschichte aufgenommen werden und mit Klick nähere Details dargestellt werden [...]
Mit einer Listbox - hm? Ich weiß zwar nicht was Du genau vorhast, für mich wäre eine Listbox wohl nicht die erste Wahl. Ich denke, Dein Vorhaben ließe sich doch recht einfach Darstellen (siehe Grafiken im Anhang):
- Eine Klasse, die die Eckdaten der Ereignisse halten
- Eine Liste (z. B. TObjectList), die die Ereignisse enthält
- Eine TScrollBox aufs Formular
- In der ScrollBox eine TLine (Line1.Position.X := 0) mit einer Breite, die der Zeitspanne entspricht
- Für die "Einträge" zur Laufzeit z. B. ein TCalloutRectangle mit einer TText Komponente (und ein TImage) drauf erzeugen und alles entsprechend positionieren
- Einen "fixen" OnClick Handler den TCalloutRectangle und TText Komponenten einhängen (der sucht dann den entsprechenden Eintrag in der Listen und zeigt die zugehörigen Details an)
Wenn das für Dich eine Option ist, dann solltest Du Dir dafür besser eigene Klassen ableiten.
Zitat:
Eine Frage habe ich noch. Warum muss am Anfang TListBox = class (FMX.Listbox.TListbox); end; hinzugefügt werden? [...]
Das ist kein Muss. Wenn nur auf die public deklarierte Eigenschaften und Methode bzw. published deklarierte Eigenschaften programmseitig zugegriffen wird, dann ist es unsinnig.
Ich wollte aber auf die Scrollbars der ListBox zugreifen. Die sind aber in der Klasse TScrollBox als protected deklariert (und werden weder in TCustomListBox noch TListBox published), daher ist Zugriff nicht möglich (Stichwort Sichtbarkeit von protected Eigenschaften/Mehtoden: von Aussen nein, innerhalb der
Unit ja).
Du kannst Dir den Zugriff auf die Scrollbars auch über einen class helper (in der
OH unter: Unterstützende Klassen) bauen, das geht z. B. so:
Delphi-Quellcode:
type
TListBoxHelper = class helper for FMX.ListBox.TListBox
private
function GetVertScrollBar : TScrollBar;
published
property VertScrollBar : TScrollBar read GetVertScrollBar;
end;
function TListBoxHelper.GetVertScrollBar;
begin
Result := Self.VScrollBar
end;
und der Zugriff dann so:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
ListBox1.VertScrollBar.Value := 40
end;
Gruß