Einzelnen Beitrag anzeigen

mjenke

Registriert seit: 28. Mär 2003
Ort: Bonn
131 Beiträge
 
#1

Array-Eigenschaften in eigenen Komponenten? Wie?

  Alt 21. Okt 2003, 07:12
Guten Morgen, alle miteinander!

Ich habe da ein kleines Problem, was Array-Eigenschaften innerhalb einer eigenen Komponente angeht, bei dem ich aus der Delphi-Hilfe nicht schlau werde (stehe vielleicht nur auf dem Schlauch). Vielleicht könnt Ihr mir helfen.

Hier das Problem:
Ich habe eine Komponente, die ich TsvListe nenne, die von der standardmässigen TListBox abgeleitet ist. Ich möchte den Inhalt der Liste in mehreren Spalten anzeigen, was auch gut funktioniert. Irgendwo hier aus dem Forum habe ich mir mal einen OnDrawItem-Routine herausgesucht, mit der ich genau das realisieren kann. Allerdings brauche ich dafür die Breiten der einzelnen Spalten, und genau die möchte ich in einem eigenen Feld dieser Klasse ablegen und als Eigenschaft zur Entwurfszeit setzen können. Mit anderen Worten, was ich brauche ist eigentlich folgendes:

Delphi-Quellcode:
type
  TsvListe = class (TListBox)
    protected
      FColWidths: ARRAY OF INTEGER;
      ...
    published
      property ColWidths: ARRAY OF INTEGER read FColWidths write SetColWidths
      ...
   end;
Grundsätzlich zumindest einmal. Aus der Delphi-Hilfe habe ich entnommen, dass ich das so nicht realisieren kann, sondern nur über indizierte Properties, die dann wohl irgendwie folgendermassen eingebaut werden:

Delphi-Quellcode:
public
  property ColWidths[Index: Integer]: INTEGER read getColWidths write setColWidths
Aber daraus werde ich nicht so wirklich schlau. Zumindest habe ich es nicht hinbekommen, dass es auch nur irgendwie funktioniert hat. Vor allem: wie spreche ich das Array FColWidths innerhalb der Methoden getColWidths und setColWidths an? Wie stelle ich sicher, dass der übergebene Index innerhalb der Grenzen des Arrays liegt? Wie kann ich das Array dynamisch anpassen, oder muss ich ein Array fester Grösse vorgeben?

Wie Ihr seht hat mich dieses Thema ein wenig verwirrt, und ich stehe im Augenblick wie der sprichwörtliche "Ox vorm Berg".

Zusammendfassend gesagt: Wie erstelle ich eine Array-Eigenschaft (Integer), die ich zur Entwurfszeit mit Werten füllen kann?

Wäre klasse, wenn Ihr mir helfen könntet!


Matthias
Matthias Jenke
  Mit Zitat antworten Zitat