AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TImage.Create() in extra Unit

Ein Thema von Sadrax · begonnen am 25. Mär 2007 · letzter Beitrag vom 25. Mär 2007
Antwort Antwort
Sadrax

Registriert seit: 26. Okt 2004
Ort: Gommern
14 Beiträge
 
#1

TImage.Create() in extra Unit

  Alt 25. Mär 2007, 15:07
Hallo,
ich möchte gerne ein Image zur Laufzeit erzeugen, was ich auch geschafft habe:
Delphi-Quellcode:
var bild : TImage
begin
  bild := TImage.Create(self);
  with bild do
  begin
    parent := formMain;
    left := 50;
    top := 50;
    height := 200;
    width := 200;
    canvas.font.name := 'Arial';
    show;
  end;
end;
So weit so gut, erstelle ich mir aber eine extra Unit und in dieser eine Klasse funktioniert es nicht.
Im constructor der Klasse soll dann das Image erstellt werden, als Parameter wird u.a. eine TForm für die parent-Eigenschaft übergeben.
Wenn ich dann jedoch zu der Stelle komme:
  Spielflaeche := TImage.Create(xxx); funktioniert es nicht.
Das Problem dürfte daran liegen, dass ich mit dem Parameter den die Create-Prozedur benötigt nicht klar komme.
In der Hilfe steht dazu ja folgendes:
Zitat:
AOwner ist die Komponente, die für die Freigabe der Instanz von TImage verantwortlich ist. Diese Komponente wird der Eigenschaft Owner zugewiesen.
Aber wenn ich das Formular, welches ich ja als Parameter bekommen habe, als Parameter übergebe kommt bei der Ausführung des Programmes immer ein Fehler.
Es funktioniert auch nicht wenn ich self, nil oder application übergebe.
Vielleicht könnte mir ja jemand das mit den Parameter welchen ich übergeben muss genauer erklären, oder wenigstens ein Beispiel nennen wie es funktioniert.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

Re: TImage.Create() in extra Unit

  Alt 25. Mär 2007, 15:12
Hi,

Zitat:
als Parameter wird u.a. eine TForm für die parent-Eigenschaft übergeben
was heißt EINE TForm? Du musst die Form übergeben auf der das Image sein soll....
So ungefähr sollte das ganze aussehn:

Delphi-Quellcode:
// Andere Unit:
TKlasse = class
private
  FImage: TImage;
public
  constructor Create(AParent: TForm);
end;

constructor TKlasse.Create(AParent: TForm);
begin
  inherited Create;
  FImage := TImage.Create(AParent);
  with FImage do
  begin
    Parent := AParent;
    //...
  end;
end;

// Haupt-Unit:
var Test: TKlasse;
begin
  Test := TKlasse.Create(Form1);
end;
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Sadrax

Registriert seit: 26. Okt 2004
Ort: Gommern
14 Beiträge
 
#3

Re: TImage.Create() in extra Unit

  Alt 25. Mär 2007, 15:40
Danke, vorallem für das Beispiel.
Das mit der TForm hatte ch falsch ausgedrückt, meinte ich aber so wie du es beschrieben hast,
allerdings hatte ich in der hauptUnit folgenden Fehler:

Zitat:
var Test: TKlasse;
begin
Test := Test.Create(Form1);
end;
Keine Ahnung warum ich das so gemacht hatte, habe ich aber immer total übersehen und überall anders den Fehler gesucht.
Vielen Dank!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: TImage.Create() in extra Unit

  Alt 25. Mär 2007, 15:46
Moin Zusammen,

Vorsicht:
Der Parameter, der im Konstruktor eines TComponent-Nachfolgers angegeben werden sollte ist nicht der Parent, sondern der Owner.
Der Owner ist für die Freigabe zuständig.
Wird er angegeben kümmern sich die internen VCL-Mechanismen darum, dass die Komponente freigeben wird, ansonsten (Owner = nil) muss man sich selber darum kümmern.
Der Parent ist für die Postionierung zuständig.
Die Komponente wird relativ zum Parent angezeigt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  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 21:03 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