Einzelnen Beitrag anzeigen

Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#25

AW: TGrid in FM mit Daten füllen

  Alt 26. Jan 2014, 21:01
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ß
Miniaturansicht angehängter Grafiken
timeline1.jpg   timeline2.jpg  
Volker Zeller
  Mit Zitat antworten Zitat