Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Objektvariablen übergeben


erni - Do 06.05.04 20:40
Titel: Objektvariablen übergeben
Hallo,

wie man unschwer an der Anzahl meiner bisherigen Beiträge erkennen kann, bin ich neu hier.
Ich hatte heute das erste mal Kontakt mit Delphi 7 und suche schon seit einer Stunde in meinem Buch "Grundlagen und Profiwissen - Borland Delphi 7" von Doberenz nach der
Lösung zu folgendem Problem:

Ich möchte einer eig. Funktion die ich in einer dafür vorgesehenen Unit zusammen mit anderen Funktion geschrieben habe ein Objekt (Combobox) als
Objektvariable übergeben. Unter Visual Basic habe ich die entspr. Variable als Objekt deklariert und dann in der entspr.
Funktion z.B. mit AddItem (Delphi: .Items.Add() ) entsprechend bearbeitet.
z.B. Einlesen einer Textdatei und befüllen von Textfeldern mit den eingelesenen Werten.

Kann mir jemand sagen wie man das in Delphi macht?

Danke


Motzi - Do 06.05.04 21:02

Meinst du etwas in dieser Richtung?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
MyProcedureXYZ(ComboBox1);


procedure MyProcedureXYZ(aComboBox: TComboBox);
begin
  aComboBox.Items.Add('xyz');
  aComboBox.Items.Add('abc');
  aComboBox.Items.Add('123');
end;


Vorraussetzung ist natürlich, dass es eine ComboBox mit namen ComboBox1 gibt..!


erni - Fr 07.05.04 06:47

:D Ja genau das meine ich! KNUTSCH!
Nur eine Frage noch! Ich muss den realen Namen der Combobox aus der entsprechenden Unit verwenden?!
Das habe ich nicht 1000% verstanden. Kannst Du dazu bitte noch etwas sagen?!


Motzi - Fr 07.05.04 12:51

Naja, der Name den du den Komponenten im Objektinspektor verpasst wird auch automatisch als Variablenname verwendet.. Wolltest du das wissen?


erni - Fr 07.05.04 14:35

hmm . . .???

Ok ist mir klar.
Aber wo kommt dernn diese Anweisung hin?

MyProcedureXYZ(ComboBox1);

In die unit in der sich auch die Funktion dazu befindet, oder?!


Motzi - Fr 07.05.04 14:51

Diese Anweisung kommt dort hin, wo du die Prozedur "MyProcedureXYZ" aufrufen willst...


erni - Fr 07.05.04 15:43

jepp alles klar! Sorry war gerade etwas durcheinander. :(


Klabautermann - Fr 07.05.04 16:06

Hallo,

dir scheind noch nciht ganz klar zu zu sein, wann du wo was aufrufen kannst. Die Schnellerklährung lautet inetwa so:
Dein Projekt ist in mehrere Teile (Units) unterteilt. In jeder Unit kannst du alles verwenden, was in ihr selbst definiert ist. Willst du in einer Unit Proceduren, Funkionen, constanten, Variablen usw. aus einer anderen Unit aufrufen, so musst du diese per uses Anweisung einbinden.

z.B. so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
unit Unit1; // Diese soll in Unit 2 Verwendet werden

interface

function Quadreire(X : Integer) : Integer;

implementation

function Quadreire(X : Integer) : Integer;
begin
  Result := X * X;
end;

end.

// ----------------- Ende der Datei -------------------

unit Unit2;

interface

function Hoch3(X : Integer) : Integer;

implementation
  uses
     Unit1; // Dies sogt dafür, das du Quadreiere aus Unit1 verwenden kannst

function Hoch3(X : Integer) : Integer;
begin
  Result := Quadreire(X) * X;
end;

end.


Die sinnigkeit dieser lösung des Mathematischen Problemms sei mal dahingestellt, aber ich glaube das Prinzieb wird deutlich.

Ansonsten kann ich nur die Letkürer einschlägiger Anfänger Tuturials (1 [http://www.delphi-treff.de/content/tutorials/einsteigerkurs/], 2 [http://www.delphi-source.de/tutorials/index.php?cat=1]) empfehlen.

Gruß
Klabautermann


erni - Fr 07.05.04 18:15

Ja. Danke für die genaue Erklärung mit Bsp.! War äußerts aufschlussreich!