2012-07-16 12 views
9

Produkuję filmy wideo na temat używania komponentów delphi na mojej stronie internetowej LearnDelphi.tv. Chciałbym objąć THeaderControl, ale nie mogę znaleźć dla niego żadnego pożytku - czy ten komponent nie jest teraz wymagany - przewyższany przez inne komponenty, takie jak TListView (z stylem widzenia raportu), czy jest jakiś sposób użycia tego, którego przeoczyłem ?Czy istnieje zastosowanie dla TheaderControl w Delphi

Edytuj: Nagrałem odcinek na TheaderControl dla jednego z moich komercyjnych filmów, ale zdecydowałem się zwolnić tę małą sekcję (20 minut z 6 godzin) za darmo. Obejrzyj go na YouTube. Dziękujemy wszystkim, którzy przyczynili się do tego.

+1

Kiedyś było dobre dla nagłówka na liście normalnych z kartami, ale to jest rzeczywiście mniej używanych teraz. Nie jestem pewien, czy jest to dobre miejsce, aby zadać takie pytanie. (Nie upadłem!) – mj2008

+1

@ TLama Spojrzałem na pomoc i wykonałem całkiem sensowną wyszukiwarkę Google. Przykład ciągle pojawia się w nagłówkach na TListBox, który jest dość skomplikowany do implementacji - a korzystanie z TListView jest znacznie łatwiejsze - zastanawiałem się, czy ktoś go użył do zrobienia czegoś pożytecznego. – Alister

+1

Nie rozumiem tego pytania. Wygląda na to, że szukasz przyczyny używania kontrolki nagłówka. Czy masz określony problem z kontrolką widoku listy? –

Odpowiedz

11

Ogólnie: THeaderControl może być używany jako nagłówek danych tabelarycznych. Oczywiście często wykorzystuje się widok listy. Ale dla egzotycznego układu różnych komponentów w każdej kolumnie, które nie byłyby łatwe do stworzenia przy użyciu widoku listy lub podobnego, lub nawet dla kompletnych różnych układów dla każdej kolumny, kontrola nagłówka mogłaby być użyteczna. Po prostu oferuje większą elastyczność tam, gdzie jest potrzebna. Porównaj to z TPageControl, oferując większą elastyczność niż TTabControl.

I o konkretnym przypadku niszowym: na przykład używam kontrolki nagłówka jako części składowej siatki planowania. Formant nagłówka otrzymuje jego podpisy za pośrednictwem źródła danych, a sekcje nagłówka są zsynchronizowane z kolumnami i paskiem przewijania. Rzeczywiście, to wymaga trochę kodu, ale nie więcej niż przy wdrażaniu różnych wydarzeń designtime:

TPlanGridHeader = class(TCustomHeaderControl) 
    private 
    FSectionWidth: Integer; 
    procedure SetSectionWidth(Value: Integer); 
    procedure WMMouseMove(var Message: TWMMouseMove); message WM_MOUSEMOVE; 
    protected 
    function CreateSection: THeaderSection; override; 
    procedure SectionResize(Section: THeaderSection); override; 
    procedure SectionTrack(Section: THeaderSection; Width: Integer; 
     State: TSectionTrackState); override; 
    property SectionWidth: Integer read FSectionWidth write SetSectionWidth; 
    public 
    procedure AddSection(const AText, AHint: String); 
    constructor Create(AOwner: TComponent); override; 
    end; 

enter image description here

Powiązane problemy