Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TCollection = not TCollection ? (https://www.delphipraxis.net/161506-tcollection-%3D-not-tcollection.html)

EWeiss 6. Jul 2011 14:33

TCollection = not TCollection ?
 
Erst mal vorab habe noch keine Erfahrungen mit TCollection in Delphi gesammelt.
Erst mal was code

Delphi-Quellcode:
    for ICtrl := 0 to FParentObj.ComponentCount - 1 do
    begin
      Ctrl := FParentObj.Components[ICtrl];
      sCtrl := Ctrl.ClassName;

      If (sCtrl = 'TComboBox') or
         (sCtrl = 'TComboBoxEx') or
         (sCtrl = 'TDBLookupCombo') or
         (sCtrl = 'TDriveComboBox') then
      begin
         CtrHwnd := FindWindowEx(FParentObj.Handle, 0, PWideChar(sCtrl), nil);
      end;

    end;
Ich enumeriere alle Komponente die sich in der Anwendung befinden.
Da ich nicht ohne weiteres an das Handle der Combo komme hole ich es unter verwendung von FindWindowEx erst ein.
Nun möchte ich dieses einer Collection hinzufügen. (erste bzw. Aktuelle Idee)

Aber eine TCollection in Delphi kennt keine Identifikationsnummer bei der verwendung von Add
Ist es überhaupt sinnvoll dafür TCollection zu verwenden?Oder einfach über ne einfache Liste..

Delphi-Quellcode:
CtrlType: TCollection;
CtrlType.Add(1, CtrHwnd);// <<< schade geht nicht!
Ich wollte quasi die Combos anhand der Nummer später identifizieren.

gruss

Deep-Sea 6. Jul 2011 14:37

AW: TCollection = not TCollection ?
 
TCollection lohnt sich hauptsächlich dafür, wenn sie zu einer Komponente gehört deren Kindelemente ebenfalls im OI bearbeitet werden sollen.

EWeiss 6. Jul 2011 14:43

AW: TCollection = not TCollection ?
 
Zitat:

Zitat von Deep-Sea (Beitrag 1110325)
TCollection lohnt sich hauptsächlich dafür, wenn sie zu einer Komponente gehört deren Kindelemente ebenfalls im OI bearbeitet werden sollen.

Wenn ich das richtig verstehe meinst du so etwas wie "BackColor" der jeweiligen komponente?
Das ist auch noch eins meiner problem da ich ja so ohne weiteres nicht an die Hintergrundfarbe komme bzw.. setzen kann.

Daher wollte ich über TCollection gehen um die Eigenschaften der Combo verändern zu können.
So wie ich gelesen habe beinhalten diese ja selbst Collection ... oder hab ich da was falsch verstanden?

So wie hier von Luckie schon gesagt
Zitat:

Zitat von Luckie (Beitrag 1110152)
Moment. Deine DLL kennt doch das Form-Objekt gar nicht, weil sie einen anderen Speichermanager hat. Das heißt du kannst kein Objekt an einer DLL übergeben. Es sei denn du nutz die Sharemem.dll von Borland als Speichermanager.

Komme ich so ohne weiteres nicht an die objeke ran.

gruss

Deep-Sea 6. Jul 2011 14:51

AW: TCollection = not TCollection ?
 
Kann es sein, dass du das mit Property-Editoren verwechselst?

Beispiel Property-Editor: TForm.Color
Beispiel Collection: TListView.Columns

EWeiss 6. Jul 2011 15:00

AW: TCollection = not TCollection ?
 
Zitat:

Zitat von Deep-Sea (Beitrag 1110331)
Kann es sein, dass du das mit Property-Editoren verwechselst?

Beispiel Property-Editor: TForm.Color
Beispiel Collection: TListView.Columns

Nein!

Manchmal wenn ich eine Idee habe und diese nicht umsetzbar ist (Delphi) vergleiche ist das schon mal gerne mit
meiner Muttersprache (VB) Hehehehee.... :thumb: :)

Meine also nicht den Property Editor.
Was eine Collection ist ist mir also schon klar.
Aber so wie es ausschaut macht es dann wohl keinen sinn :?

Muss diese idee dann wohl verwerfen.
Danke.

gruss

Namenloser 6. Jul 2011 16:05

AW: TCollection = not TCollection ?
 
Kann es sein, dass du eigentlich eine Hashmap/Dictionary suchst? Neuere Delphi-Versionen mit Generics haben glaube ich von Haus aus eine Implementierung dabei (TDictionary wenn ich mich nicht irre), bei älteren Versionen musst du selbst was basteln oder finden (von mir schwirrt hier im Forum glaube ich auch noch eine Hashmap herum).

EWeiss 6. Jul 2011 16:24

AW: TCollection = not TCollection ?
 
Zitat:

Zitat von NamenLozer (Beitrag 1110352)
Kann es sein, dass du eigentlich eine Hashmap/Dictionary suchst? Neuere Delphi-Versionen mit Generics haben glaube ich von Haus aus eine Implementierung dabei (TDictionary wenn ich mich nicht irre), bei älteren Versionen musst du selbst was basteln oder finden (von mir schwirrt hier im Forum glaube ich auch noch eine Hashmap herum).

Ich werd mal suchen und schauen ob es das ist.
Hab mir gestern mal ein handbuch mit TDictionary von Embarcadero runtergeladen wurde aber nicht so recht schlau daraus.

EDIT:

Hmm ..
Delphi-Quellcode:
procedure Add(const Key: TKey; const Value: TValue);

Sieht danach aus als wenn es das ist was ich suche bzw. umsetzen möchte.

Muss mich noch schlau machen wie das funktioniert.
Von dir habe ich leider nichts gefunden

gruss

Stevie 6. Jul 2011 16:48

AW: TCollection = not TCollection ?
 
TCollection.Add erzeugt eine neue Instanz von der Klasse, die du beim TCollection.Create angegeben hast.

Namenloser 6. Jul 2011 16:52

AW: TCollection = not TCollection ?
 
Zitat:

Zitat von EWeiss (Beitrag 1110354)
Muss mich noch schlau machen wie das funktioniert.
Von dir habe ich leider nichts gefunden

Wenn du eine Version mit integriertem TDictionary besitzt, gibt es eigentlich eh keinen Grund, etwas anderes zu benutzen...

Stevie 6. Jul 2011 16:53

AW: TCollection = not TCollection ?
 
Zitat:

Zitat von NamenLozer (Beitrag 1110358)
Zitat:

Zitat von EWeiss (Beitrag 1110354)
Muss mich noch schlau machen wie das funktioniert.
Von dir habe ich leider nichts gefunden

Wenn du eine Version mit integriertem TDictionary besitzt, gibt es eigentlich eh keinen Grund, etwas anderes zu benutzen...

Ab Delphi 2009 siehe Generics.Collections.pas


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 Uhr.
Seite 1 von 4  1 23     Letzte »    

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