Einzelnen Beitrag anzeigen

Alex_ITA01

Registriert seit: 22. Sep 2003
1.115 Beiträge
 
Delphi 12 Athens
 
#6

Re: neue ListBox abgeleiten (OOP)

  Alt 5. Jan 2005, 13:14
Ich habe es dann auch mit dem Left := 0 gemerkt
Folgende Lösung habe ich jetzt:

Delphi-Quellcode:
unit HeaderListe;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, Types, Windows, Graphics, ComCtrls;

type
  THeaderListBox = class(TListBox)
  private
    { Private-Deklarationen }
    FHeaderControl : THeaderControl;
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
    constructor Create(AOwner:TComponent); override;
    destructor Destroy; override;
  published
    { Published-Deklarationen }
  end;
{ ---------------------------------------------------------------------------- }
procedure Register;
{ ---------------------------------------------------------------------------- }
implementation
{ ---------------------------------------------------------------------------- }
procedure Register;
begin
  RegisterComponents('Test', [THeaderListBox]);
end;
{ ---------------------------------------------------------------------------- }
{ THeaderListBox }
{ ---------------------------------------------------------------------------- }
constructor THeaderListBox.Create(AOwner: TComponent);
var
  HS: THeaderSection;
begin
  inherited Create(AOwner);
  Self.Left := 248;
  Self.Width := 249;
  Self.Height := 185;
  Self.Top := 100;
  Self.Style := lbOwnerDrawFixed;

  FHeaderControl := THeaderControl.Create(AOwner);
  FHeaderControl.Parent := TWinControl(AOwner);
  FHeaderControl.Align := alCustom;
  FHeaderControl.Left := 248;
  FHeaderControl.Width := 249;
  FHeaderControl.Height := 20;
  FHeaderControl.Top := 81;
  FHeaderControl.Style := hsButtons;
  FHeaderControl.Show;

  with FHeaderControl do
  begin
    HS := Sections.Add;
    HS.Text := 'Item1';
    HS.Width := Width div 2;

    HS := Sections.Add;
    HS.Text := 'Item2';
    HS.Width := Width div 2;
  end;
end;
{ ---------------------------------------------------------------------------- }
destructor THeaderListBox.Destroy;
begin
  FHeaderControl.Free;
  inherited;
end;
{ ---------------------------------------------------------------------------- }
end.
Wenn ich die Kompo zur Laufzeit anzeige funktioniert es.Wenn ich sie aber installiere, dann habe ich auf dem Formular 2Kompo's die ich einzeln anwählen kann und wenn ich F9 drücke kommt ein Fehler:
Exception EClassNotFound in Modul .....
Klasse THeaderControl nicht gefunden.

Wenn ich im Contructor aber folgendes schreibe, dann kommt der Fehler nicht aber ich sehe die HeaderKompo dann zur Designzeit nicht:

Delphi-Quellcode:
  inherited Create(AOwner);
  Self.Left := 248;
  Self.Width := 249;
  Self.Height := 185;
  Self.Top := 100;
  Self.Style := lbOwnerDrawFixed;
  Self.OnDrawItem := DrawAllItem;
 
  if ComponentState = [csDesigning] then Exit;
  begin
    FHeaderControl := THeaderControl.Create(AOwner);
    FHeaderControl.SetSubComponent(True);
    FHeaderControl.Parent := TWinControl(AOwner);
    FHeaderControl.Align := alCustom;
    FHeaderControl.Left := 248;
    FHeaderControl.Width := 249;
    FHeaderControl.Height := 20;
    FHeaderControl.Top := 81;
    FHeaderControl.Style := hsButtons;
    FHeaderControl.Show;
    FHeaderControl.OnSectionResize := SectionResize;
  end;
Ich hoffe ihr könnt mir helfen...
MFG Alex
Let's fetz sprach der Frosch und sprang in den Mixer
  Mit Zitat antworten Zitat