Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi ändern des ComponentCount??? (https://www.delphipraxis.net/39333-aendern-des-componentcount.html)

Barret 1. Feb 2005 09:31


ändern des ComponentCount???
 
Hi!
Also wie schon im Thema zu erkennen wollt ich mal fragen, ob man den "ComponentCount" von Objekten verändern kann. Ich meine jetz nich die TabOrder.
Fals das möglich sein sollte würd ich mich über eine kleine Anregung freuen.

mfg Barret

alcaeus 1. Feb 2005 09:33

Re: ändern des ComponentCount???
 
Hallo Barret,

die Frage ist, WARUM du das ändern möchstest? Sobald du eine Kompo auf ein Objekt setzt, wird dessen ComponentCount automatisch aktualisiert.

Greetz
alcaeus

Barret 1. Feb 2005 09:46

Re: ändern des ComponentCount???
 
Ja und genau da ligt mein Problem. Ich hab eine Procedure die die Componenten duchgeht und die Eigenschaften dieser verändert. Wenn ich dan die Eingaben speichern will überprüft er diese erst (ob ein Eintrag vorgenommen wird oder nicht). Soweit so gut. Wenn die Componente keinen Eintrag besitzt gibt das Programm eine Hinweis-Meldung aus und setzt dan den Focus auf diese Componente. Das gilt für mehrere Componenten. Wenn ich den ComponentCount nicht verändern kann muss ich die Objekte umschreiben oder ich muss es in kauf nehmen, dass der User keine lineare Reihenfolge der Meldungen erhält.

alcaeus 1. Feb 2005 09:53

Re: ändern des ComponentCount???
 
Hallo Barret,

dann musst du nicht ComponentCount, sondern die Reihenfolge der Komponenten ändern. Wie man das aber am Besten macht, weiß ich jetzt auch nicht.

Greetz
alcaeus

urs.liska 1. Feb 2005 11:02

Re: ändern des ComponentCount???
 
Hallo Barret,

Jede Komponente verfügt über die Eigenschaft ComponentIndex, die die Reihenfolge der Komponente innerhalb der übergeordneten Komponente angibt (von 0 bis ComponentCount-1).
Laut Hilfe ist ComponentIndex keine Nur-Lesen-Eigenschaft, kann also von Hand geändert werden.

Du müsstest aber sicher aufpassen, was Du tust, wenn Du da eingreifst. Ich weiß z.B. nicht, was die übergeordnete Komponente sagt, wenn während des Sortierens zwei Komponenten den gleichen ComponentIndex hätten.

Ich würde einmal probieren, einen Sortieralgorithmus für ComponentIndex zu entwickeln - und das ganze schön in einen try..except-Block verpacken (vielleicht zuerst einmal den Ausgangszustand zwischenspeichern und im Exceptblock wieder zuweisen).

Wie gesagt: Ich weiß nicht, welche Risiken das birgt.

Viel Glück
Urs

IngoD7 1. Feb 2005 12:44

Re: ändern des ComponentCount???
 
Zitat:

Zitat von urs.liska
Ich weiß z.B. nicht, was die übergeordnete Komponente sagt, wenn während des Sortierens zwei Komponenten den gleichen ComponentIndex hätten.

Das passiert nicht.

Zitat:

Zitat von urs.liska
Wie gesagt: Ich weiß nicht, welche Risiken das birgt.

Meines Erachtens keine. Die Komponenten werden in einer TList geführt, in eben der Liste Components[]. Eine Zuweisung auf ComponentIndex hat zur Folge, dass die Komponente mittels einem TList.Delete an alter Stelle gelöscht und mittels einem TList.Insert an zugewiesener Stelle eingefügt wird. Dahinter liegende Komponenten werden also entsprechend verschoben.

urs.liska 1. Feb 2005 13:13

Re: ändern des ComponentCount???
 
@IngoD7:
Danke für die Aufklärung

@Barret:
Dann kannst Du einfach Folgendes machen:
Delphi-Quellcode:
NameDerErstenKomponente.ComponentIndex := 0;
NameDerZweitenKomponente.ComponentIndex := 1;
//usw.
Viel Erfolg
Urs


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 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