Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Berlin: TListViewItem Parent? (https://www.delphipraxis.net/188970-berlin-tlistviewitem-parent.html)

greenmile 22. Apr 2016 20:51

Berlin: TListViewItem Parent?
 
Hallo,

ich muss zur Laufzeit den Parent eines TListViewItem's vergleichen, blöderweise hat ein TListViewItem unter Berlin keine .Parent Eigenschaft mehr. Oder habe ich etwas übersehen? Momentan löse ich es so, aber vielleicht gibt es etwas ab Werk? Und wieso verschwindet so eine meiner Meinung nach wichtige Eigenschaft einfach so aus?

Code:
  Function GetParent(const AListItem: TListViewItem): TListview;
    var Count, Count2: Integer;
  begin
    Result := nil;
    for Count := 0 to Self.ComponentCount-1 do begin
      if not(Self.Components[Count] is TListview) then Continue;
      for Count2 := 0 to TListView(Self.Components[Count]).Items.Count-1 do begin
        if (TListView(Self.Components[Count]).Items[Count2]=AListItem) then begin
          Result := TListView(Self.Components[Count]);
          Break;
        end;
      end;
    end;
  end;

Rollo62 23. Apr 2016 07:50

AW: Berlin: TListViewItem Parent?
 
Gibts vielleicht noch einen Owner ?

Rollo

Uwe Raabe 23. Apr 2016 08:40

AW: Berlin: TListViewItem Parent?
 
Zitat:

Zitat von greenmile (Beitrag 1336411)
ich muss zur Laufzeit den Parent eines TListViewItem's vergleichen,

Kannst du erklären, wozu du diesen Vergleich brauchst? Vielleicht kann man das ja auch auf andere Art erreichen.

greenmile 23. Apr 2016 12:40

AW: Berlin: TListViewItem Parent?
 
Nein, einen Owner gibt es auch nicht mehr.
Ich erstelle ein Bitmap und einen Text zur Laufzeit. Den fülle ich anschließend und blende dann ggf. das Bitmap ein und den Text aus:

ShowText(const AListItem: TListViewItem; DoShow: Boolean);

In manchen Situationen möchte ich Teile aber nicht ausblenden, dazu muß ich prüfen, welche Listview der Besitzer des Listitem's ist.

Uwe Raabe 23. Apr 2016 13:05

AW: Berlin: TListViewItem Parent?
 
Du könntest mal folgenden Code versuchen (kann das gerade nicht selbst probieren). Kann man vielleicht auch noch eleganter gestalten.

Delphi-Quellcode:
type
  TAppearanceObjectsHelper = class helper for TAppearanceObjects
    function GetParentControl: TControl;
    property ParentControl: TControl read GetParentControl;
  end;

function TAppearanceObjectsHelper.GetParentControl: TControl;
begin
  Result := OwnerControl;
end;

Function GetParent(const AListItem: TListViewItem): TListView;
begin
  result := AListItem.Objects.Appearance.ParentControl as TListView;
end;

greenmile 24. Apr 2016 19:43

AW: Berlin: TListViewItem Parent?
 
Habe es mit obiger Funktion gelöst. Bin nur sehr verwundert, dass diese nicht unwichtige Eigenschaften komplett weggefallen ist.

Uwe Raabe 24. Apr 2016 21:08

AW: Berlin: TListViewItem Parent?
 
Da es sich bei TListViewItem formell nicht um ein TControl handelt, finde ich ein property
Delphi-Quellcode:
Parent: TControl
hier allerdings wirklich etwas irreführend. Ich stimme dir aber zu, daß ein property wie
Delphi-Quellcode:
ParentView
(ob nun als
Delphi-Quellcode:
TListView
oder eine der Vorfahrenklassen) sicher sinnvoll und nützlich wäre. Es steht dir natürlich frei, ein diesbezügliches Feature-Request zu erstellen. Meine Stimme hätte es.


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