Einzelnen Beitrag anzeigen

Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#4

Re: Bild per button verändern

  Alt 25. Dez 2005, 19:56
Zitat von gelvuun:
danke erstmal...
nur weil ich noch ziemlich neu bin hab ich noch folgende fragen:
Na dann erstmal Herzlich Willkommen in der Delphi Praxis

Zitat von gelvuun:
was heißt das constructor?
as heißt das self.?
Delphi beherscht ein wenig die Objekt Orientierte Programmierung (OOP). Sehr sehr stark vereinfacht heißt es, dass du aus Klassen konkrete Instanzen machst. Eine Klasse ist ein Bauplan (den du schreibst). Möchtest du jetzt auch was produzieren, so musst du auch die Fabrik anwerfen. Das was sie produziert nennt man eine Instanz.
Für dein Programm heißt dass, das nur eine Instanz auch wirklich Speicher belegt. Die Klasse sagt nur was eine Instanz speichern könnte. Variablen die einen Klassentyp haben (etwas mit = class(...)) sind nur Referenzen auf eine Instanz. Sie zeigen also nur auf eine Instanz oder auf nil, wenn es keine Instanz gibt.

Um nun eine Klasse anzulegen, musst dein Rechner Speicher reservieren. Dazu fragt er Windows nach einer bestimmten Menge Speicher, Winows sucht eine freie Stelle, reserviert den Speicher und gibt die Adresse zurück (das ist dann die Referenz).
Genau das erledigt dein Konstruktor.

Hat die Instanz ihren Zweck erfüllt, brauchst du sie nicht mehr (also auch nicht ihren Speicher), dann rufst du den Destruktor auf. Dieser sagt Windows dann, dass der Speicher wieder freigegeben werden kann.

Bei deinem Formular / Hauptfenster wird der Konstruktor immer schon von Delphi aufgerufen. Da wird dann das Formular erzeugt und dann auch gleich angezeigt. Hier kannst du einfach unter den Ereignissen doppelt auf das OnCreate Ereignis klicken. Dieses wird immer direkt nach dem Aufruf des Konstruktor aufgerufen. Dort kannst du dann die Bitmaps laden. Damit du zwei Bitmaps speichern kannst, musst du vorher im private-Teil deines Forms einfach zwei Variablen vom Typ TBitmap eintragen.
Dies sind dann auch Klassen. Damit du sie benutzen kannst, reserviert TBitmap.Create einfach Speicher für ein TBitmap. Die Adresse würde in meinem Beispiel in BmpKreis gespeichert werden. Da BmpKreis eine Variable von TDeineKlasse (bei dir wahrscheinlich TForm1) ist, sagt self nur, dass du dich auf die eigene Klasse beziehst.
Jede Methode, die zu einer Klasse gehört beginnt immer procedure/function TKlassenname., möchtest du in der Methode auf Variablen von TKlassenname zugreifen stellt man immer ein self. vor. Dann ist klar welche Variable du meinst.
Braucht man auch häufiger mal, z.B. :

Delphi-Quellcode:
type
  TKlasseIrgendwas = class(TObject)
    private
      foo : Integer; // (1)
      procedure setFoo(foo : Integer);
  end;

...

procedure TKlasseIrgendwas.setFoo(foo : Integer); // (2)
begin
  // wie sagst du jetzt, dass die Klassenvariable foo (1) den Wert von diesem foo (2) hier bekommen soll?
  // heißt ja dummerweise beide gleich
  self.foo = foo;
  // self.foo = (1)
  // foo = letzte Deklaration von foo = (2)
end;
  Mit Zitat antworten Zitat