AGB  ·  Datenschutz  ·  Impressum  







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

Objekt im Create an Klasse weitergeben?

Ein Thema von Niels · begonnen am 24. Dez 2003 · letzter Beitrag vom 25. Dez 2003
Antwort Antwort
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#1

Objekt im Create an Klasse weitergeben?

  Alt 24. Dez 2003, 22:18
Moin!

Ist es möglich, dass ich irgendwelche Komponenten oder sogar das ganze Formular an eine Klasse weitergebe?
So z.B.:
Bla := TBlub.Create(Form1); In hab mir das folgendermaßen überlegt (Code-Ausschnitt der Klasse):

Delphi-Quellcode:
type
  TBlub = class
  private
    constructor Create(hilfForm: TForm);
    ...
  public
    ...
  end;

var
  Formular: TForm;

constructor Create(hilfForm: TForm);
begin
  Formular := hilfForm // geht das überhaupt?
end;
Mein Problem ist jetzt folgendes. Auf dem Formular ist z.B. ne ListBox und ich will dort was eintragen. Wenn ich jetzt Formular.ListBox1... eingeb, dann meckert der Compiler weil er ja (logischerweiße) die Klasse Form1 nicht kennt, sondern nur die Standardprozeduren und -eigenschaften des TForms.

Gibt es eine Möglichkeit trotzdem auf die ListBox oder auf andere Sachen des Formulars, wie z.B. Prozeduren zuzugreifen?

MfG Niels
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Objekt im Create an Klasse weitergeben?

  Alt 24. Dez 2003, 22:22
Moin Niels,

prinzipiell müsste es gehen, wenn Du die Formularklasse TForm1, also die mit den Komponten, der neuen Klasse sichtbar machst, indem Du die Unit des Formulares mit in die Unit der neuen Klasse einbindest.
Dann verwendest Du nicht die Basisklasse TForm, sondern TForm1.
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
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#3

Re: Objekt im Create an Klasse weitergeben?

  Alt 24. Dez 2003, 22:48
Hoi,

danke...hab gar net dran gedacht, dass ich ja auch Klassen weitergeben kann. Hab das ganze jetzt aber etwas anders geregelt, weil mir das so net gefallen hat.

Jetzt hab ich aber noch ein anderes Problem. Mein Konstruktor Create sieht folgendermaßen aus:

Delphi-Quellcode:
constructor Create(var Formular: TForm; var ListBox: TListBox; cIni: string);
begin
  ...
end;
Das Problem ist jetzt, dass ich das nicht mit

bla := blub.Create(Form1, Form1.ListBox1, 'bla.ini'); aufrufen kann, weil Form1 ja nicht vom Typ TForm sondern vom Typ TForm1 ist. Ich hab auch probiert (Form1 as TForm) aber der Compiler sagt mir immer 'Types of actual and formal var parameters must be identical'.

Kann mir jemand weiterhelfen? Wie kann ich die Übergabe realisieren?

MfG Niels

[edit] Hat sich erledigt, ich geb dir 3 Eigenschaften einzeln weiter..da brauch ich net das gesamte Form1 [/edit]
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#4

Re: Objekt im Create an Klasse weitergeben?

  Alt 24. Dez 2003, 23:12
Jetz bin ich auf ein weiteres Problem gestoßen.

Mein Constructor sieht jetzt so aus:

constructor Create(var Height, Width: integer; var ListBox: TListBox; cIni: string); Wenn ich aber meine Klasse mit

MyVar := TMyClass.Create(Form1.Height, Form1.Width, Form1.ListBox1, 'iniDat.ini'); aufrufe, dann sagt er mir, dass Form1.Height und Form1.Widt konstante Werte sind und nicht als variabel weitergegeben werden können. Da hab ich mir gedacht, ich geb nen Zeiger auf deren Adresse weiter...

Delphi-Quellcode:
type
  IntegerZeiger = ^Integer;
...
constructor Create(var Height, Width: IntegerZeiger; var ListBox: TListBox; cIni: string);

... // andere unit

MyVar := TMyClass.Create(Pointer(@Form1.Height), Pointer(@Form1.Width), Form1.ListBox1, 'iniDat.ini'); // Fehler tritt hier auf
Da bekomm ich aber ne EAccessViolation vom Debugger.

Hat jemand ne Idee, wie ich das machen könnte?

MfG Niels
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

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

Re: Objekt im Create an Klasse weitergeben?

  Alt 25. Dez 2003, 11:55
Moin Niels,

warum deklarierst Du denn im constructor die Parameter als var?
Lass das doch mal weg, oder benutze const.

Im Ursprung dachte ich mir das übrigens so:

Delphi-Quellcode:
Unit Unit2; // die mit der neuen Klasse

interface

uses Unit1; // die mit dem Formular

type
  TBlub = class
  private
    constructor Create(hilfForm: TForm1); // Jetzt kann hier TForm1 genutzt werden
    ...
  public
    ...
  end;

implementation
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
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#6

Re: Objekt im Create an Klasse weitergeben?

  Alt 25. Dez 2003, 18:44
Moin!

Ich hatte deine Idee schon verstanden...Ich wollte aber eben nicht unit 1 in die uses-Liste packen um die Klasse unabhängig von anderen Forms / units zu machen.
Var hab ich davor geschrieben, da das ja Werte sind, die geändert werden sollen (was ja scheinbar net geht so geht).
Muss ich halt mal noch n bissel rumtesten...
Naja trotzdem Danke.

MfG Niels
  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:57 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