AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Wie baue ich eine Klasse die zwei Listviews enthält?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie baue ich eine Klasse die zwei Listviews enthält?

Ein Thema von backdraft · begonnen am 12. Apr 2006 · letzter Beitrag vom 13. Apr 2006
Antwort Antwort
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
333 Beiträge
 
Delphi 11 Alexandria
 
#1

Wie baue ich eine Klasse die zwei Listviews enthält?

  Alt 12. Apr 2006, 22:29
Hallo,

ich brauche eine Klasse die zwei Listviews enthält. Wie kann ich verhindern, das man die beiden Listviews im Designer auswählen kann. vlt ist mein Ansatz ja auch ganz falsch.

Ich habe bis jetzt folgendes:

Delphi-Quellcode:
type
  TTestListView = class(TWinControl)
  private
   lv1: TListView;
   lv2: TListView;
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
    procedure CreateWnd; override;
  public
   constructor Create(AOwner: TComponent); override;
   destructor Destroy; override;
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Beispiele', [TTestListView]);
end;

constructor TTestListView.Create(AOwner: TComponent);
begin
  inherited;
  lv1 := TListView.Create(AOwner);
  lv1.Tag := 0;
  lv2 := TListView.Create(AOwner);
  lv2.Tag := 0;
end;

procedure TTestListView.CreateWnd;
begin
  inherited;

  IF lv1.Tag = 0 THEN BEGIN
    lv1.Parent := Self;
   END;

  IF lv2.Tag = 0 THEN BEGIN
    lv2.Parent := Self;
  END;

end;

destructor TKDRListViewCards.Destroy;
begin
  IF lv1 <> nil THEN lv1.Free;
  IF lv2 <> nil THEN lv2.Free;
  inherited;
end;
Oliver
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Wie baue ich eine Klasse die zwei Listviews enthält?

  Alt 13. Apr 2006, 05:52
Im Kontruktor:
Zitat:
lv1 := TListView.Create(AOwner);
durch lv1 := TListView.Create(self); und sychron für lv2.

den Destruktor kannst du weglassen. Da das Bereinigen ja vom Owner erledigt wird.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Wie baue ich eine Klasse die zwei Listviews enthält?

  Alt 13. Apr 2006, 06:51
Bin mir net ganz sicher, aber so wie du das momentan hast müste es stimmen.

Soviel ich weis must du ne Variable unter Public bzw. Published eintragen das man sie von ausen überhaupt sieht.

Du hast sie Als Privat deklariert dann sieht man die eh net.


Variablen die in Published eingetragen werden kann glaubig der Objectinspector nachher anzeigen.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
backdraft

Registriert seit: 19. Apr 2005
Ort: Hückeswagen
333 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Wie baue ich eine Klasse die zwei Listviews enthält?

  Alt 13. Apr 2006, 07:29
JO es war der Create(Self)
Danke,
aber das mit dem Destroy hab ich nicht verstanden. Wieso brauche ich den nicht?
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#5

Re: Wie baue ich eine Klasse die zwei Listviews enthält?

  Alt 13. Apr 2006, 07:40
Zitat von backdraft:
aber das mit dem Destroy hab ich nicht verstanden. Wieso brauche ich den nicht?
Delphi ist da mit der VCL etwas entgegenkomment. Beim Erstellen des Objektes gibt man einen Owner, Besitzer an. D.h. jede Klasse (ab TComponent) hat eine Liste mit den Objekten, die "ihr gehoeren". Guckt man sich nun den Destruktor von TComponent an, so werden alle Objekte in dieser Liste freigegeben.
So passiert es auch mit deinen Listviews: Sie werden in die Liste der Komponenten eingetragen, die deine Klasse besizt (und unter Delphi-Referenz durchsuchenComponents zu erreichen ist). Im Destruktor deiner Klasse wird dann auch der Destruktor von TComponent ausgefuehrt, und dort werden die Komponenten dann freigegeben.

greetz
Mike
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Wie baue ich eine Klasse die zwei Listviews enthält?

  Alt 13. Apr 2006, 08:35
Einfach ausgedrückt: Wenn du die ListViews auf's Formular packst, ist der Owner das Formular. Wenn das Formular zerstört wird, wird auch somit alles, was auf ihm ist, wieder freigegeben. Somit auch deine ListViews.
Sascha
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:14 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