AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Allgemeine Abfrage von Klassen

Allgemeine Abfrage von Klassen

Ein Thema von Matze33 · begonnen am 10. Dez 2010 · letzter Beitrag vom 11. Dez 2010
Antwort Antwort
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#1

AW: Allgemeine Abfrage von Klassen

  Alt 10. Dez 2010, 18:28
Hau die Panels eben in eine Liste und iterier über diese Liste?

Delphi-Quellcode:
var
  PanelList : TObjectList;
  i : Integer;
  pn : TPanel;
begin
  PanelList.Add(TPanel.Create(nil));
  PanelList.Add(TPanel.Create(nil));
  PanelList.Add(TPanel.Create(nil));

  for i := 0 to PanelList.Count - 1 do
  begin
    pn := TPanel(PanelList[i]);
    
    // und hier dann eben der Vergleich oder whatever.

  end;
end;
-- EDIT: Kannst natürlich auch eine Methode HitTest(ObjectA: TWinControl; ObjectB: TWinControl) schreiben, die prüft ob sich zwei Objekte überlagern.

-- EDIT2: Du solltest dir mal den Unterschied zwischen einer Instanz der Klasse und der Klasse selbst aneignen, fällt mir gerade auf Eine Klasse ist nur die Definition, was für Eigenschaften und Methoden eine Instanz später mal hat. z.B. gibt es TMensch als Klasse mit den Eigenschaft Name, Adresse, Geburtstag etc. Armin und Matze wären Instanzen dieser Klasse. Teilweise verwendet man auch Objekt als Synonym zu Klasse. Nun solltest den Titel deines Threads besser wählen können.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k (10. Dez 2010 um 18:51 Uhr)
  Mit Zitat antworten Zitat
Matze33

Registriert seit: 25. Aug 2010
38 Beiträge
 
Delphi 6 Personal
 
#2

AW: Allgemeine Abfrage von Klassen

  Alt 10. Dez 2010, 18:53
Wie erstelle ich denn eine PanelList?
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#3

AW: Allgemeine Abfrage von Klassen

  Alt 10. Dez 2010, 18:57
Das ist nur ein Variablenname Der kann auch xyz heißen. Der Typ ist das wichtige dabei: TObjectList. Das ist eine Liste mit all den Objekten, die du eben da rein wirfst. Somit kannst du drüber iterieren.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Matze33

Registriert seit: 25. Aug 2010
38 Beiträge
 
Delphi 6 Personal
 
#4

AW: Allgemeine Abfrage von Klassen

  Alt 10. Dez 2010, 19:29
Oh ja Mist, mein Fehler^^
Er zeigt jetzt aber in der Zeile, wo ich PanelList deklariere "Undeclared identifier: 'TObjectList'" als Fehlermeldung an.
Hab nichts verändert, woran kann das liegen?
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#5

AW: Allgemeine Abfrage von Klassen

  Alt 10. Dez 2010, 19:43
Dir fehlt die Unit, in der TObjectList deklariert ist. Bei uses oben muss noch Contnrs dazu.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Matze33

Registriert seit: 25. Aug 2010
38 Beiträge
 
Delphi 6 Personal
 
#6

AW: Allgemeine Abfrage von Klassen

  Alt 10. Dez 2010, 19:58
Ah OK, danke. Eine Frage noch: Was macht nil? Ist das so was wie decrease?
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

AW: Allgemeine Abfrage von Klassen

  Alt 10. Dez 2010, 20:21
What? Nein. Muss hier doch etwas weiter ausholen Aber eines noch vorweg: Eine Frage, ein Thread. Denn diese Frage hat an sich nichts mehr mit dem vorher gefragten Thema zu tun.

Delphi-Quellcode:
type
  TMensch = class(TObject)
    { Eigenschaften und Methoden (public/private) }
  end;


var
  Person : TMensch;
begin
  Person := TMensch.Create();
  try
    Person.Name := 'Matze';
    Person.Alter := 18;
    Person.FahreNachMuenchen();
  finally
    FreeAndNil(Person);
  end;
end;
So, nun zu dem Code. Das was ich oben geschrieben habe, weißt du hoffentlich nocht, also was eine Klasse und was eine Instanz der Klasse ist. Nun ist es so, dass wenn du eine Instanz erzeugst (Aufruf des Konstruktors Create), dann wird das Objekt im Speicher (RAM) angelegt. Die Verwaltung im Speicher wird ja via Adressen gehandelt. In der Variable Person wird quasi die Adresse des erzeugten Objekts gespeichert, sodass du Zugriff drauf hast. Aber was ist eigentlich *vor* dem Create-Aufruf? Da zeigt Person auf nil, d.h. auf "nichts" -- in anderen Sprachen heißt das Ding NULL. Bei FreeAndNil wird das Objekt welcher sich hinter der, in der Variable Person gespeicherten Adresse verbirgt, freigegeben, d.h. der Speicher wird frei. Gleichzeitig zeigt nun Person auf nil, d.h. auf einen fest definierten Wert, der angibt, dass Person eben auf keine Instanz zeigt.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz