![]() |
Aus Komponente auf Namen zugreifen
Hallo!
Ich schreibe gerade an einer Komponente. Sie ist vererbt von TLabel. Nun möchte ich den Namen der Komponente auslesen (z.B. Objekt5). Auf sachen wie z.B. left und Top habe ich zugriff, nur nicht auf Name. Beispiele: funzt:
Delphi-Quellcode:
funktioniert nicht:
Left:=x;
Top:=y; Font.Color:=schrift; Color:=hintergrund; Caption:=n;
Delphi-Quellcode:
Diese Meldung bekomme ich:
n:=Name;
Zitat:
|
Re: Aus Komponente auf Namen zugreifen
Funktioniert self.Name?
|
Re: Aus Komponente auf Namen zugreifen
nein, funktioniert leider nicht. Auch schon probiert.
Edit: Da kommt dan diese meldung: Zitat:
|
Re: Aus Komponente auf Namen zugreifen
Wo befindet sich der Code? (Welche Methode?)
|
Re: Aus Komponente auf Namen zugreifen
Ave,
also wenn ich mir von TLabel eine Kompo ableite (D7)
Delphi-Quellcode:
geht der Zugriff auf Name problemlos.
type
TMyLabel = class(TLabel) public constructor Create(AOwner : TComponent); override; end; implementation constructor TMyLabel.Create(AOwner: TComponent); begin inherited; Name := 'TEST'; end; Wo hast Du es den eingebaut? |
Re: Aus Komponente auf Namen zugreifen
Hier ein Teil des Codes (nur mit der betroffenen Prozedur):
Delphi-Quellcode:
Hab das ganze mit dem Komponenten Experten erstellt und dann meinen Senf hinzugefügt
unit Day;
interface uses SysUtils, Classes, Controls, StdCtrls, Graphics; type TDay = class(TLabel) private { Private-Deklarationen } protected { Protected-Deklarationen } public { Public-Deklarationen } procedure rename(name2:String); published { Published-Deklarationen } end; procedure Register; implementation procedure Register; begin RegisterComponents('Eigene Objekte', [TDay]); end; procedure rename(name2:String); var i:Integer; n:String; begin try i:=length(Name2); n:=self.name; <---- Hier ist die Fehlermeldung . . . usw. end; end. |
Re: Aus Komponente auf Namen zugreifen
Hallo,
und funktionierts so:
Delphi-Quellcode:
procedure TDay.rename(name2:String); <---- Hier ist die Änderung
var i:Integer; n:String; begin try i:=length(Name2); n:=Name; <---- Hier ist die Fehlermeldung <---- Hier ist die Änderung . . . usw. end; |
Re: Aus Komponente auf Namen zugreifen
Ave,
es muss auch
Code:
heissen, sonst deklarierst Du keine Methode der Klasse TDay, sondern einfach eine Prozedur.
procedure [b]TDay.[/b]rename(name2:String);
|
Re: Aus Komponente auf Namen zugreifen
Wenn rename eine Methode der klasse wäre, müßte es gehen. Mich wundert aber das er die anderen Eigenschaften so findet. Gibt es vielleicht Variablen mit den Bezeichnungen?
|
Re: Aus Komponente auf Namen zugreifen
nein, gibt es nicht.
Es soll nacher in einem Projekt aufgerufen werden können. Kann mir jemand schreiben wie ich das umschreiben müsste, damit es funktioniert, und ich es dennoch im Späteren Projekt ausführen kann? |
Re: Aus Komponente auf Namen zugreifen
Ave,
Helmi und ich haben es Dir doch schon direkt geschrieben, und mkinzler indirekt. Deine in der Klasse deklarierte Methode Rename benögtigt als Implementierung noch den Präfix des Klassennamens. Ansonsten könnte der Compiler die ja auch nicht unterscheiden, wenn Du mehrere Klassen in eine Unit zusammenfasst, und diese Methoden mit gleichen Namen haben (z.B., wird man oft Create und Destroy haben). Das Rename, in dem Du Name benutzen willst, hat nichts mit der oben deklarierten Klasse zu tun. |
Re: Aus Komponente auf Namen zugreifen
Sorry, hab doch glatt die paar posts übersehen und nur den letzten gelesen :oops:
Danke! den Fehler hätt ich eigentlich sehen müssen... naja.... |
Re: Aus Komponente auf Namen zugreifen
Irgendwie blick ich grad nimmer durch... schaffs net die zu installieren.
Vorhin gings noch. Also, ich erstelle ein neues Package, rechtscklick, hinzufügen, wähle meine Unit aus, OK, rechtscklick auf Package Installieren. Dann kommt ne Meldung des die Komponente registriert worden ist, aber nicht wo, und sie taucht auch nicht in der Liste auf. Was mach ich falsch? |
Re: Aus Komponente auf Namen zugreifen
Poste mal den Code der Register-Prozedur.
|
Re: Aus Komponente auf Namen zugreifen
Is der gleiche wie er oben in meinen großen Quellcode Post steht.
Hab daran nichts verändert. Edit: Das Package taucht in der Liste der Entwurfszeit Packages auf. |
Re: Aus Komponente auf Namen zugreifen
Dann müßte die Komponente sich im Bereich 'Eigene Objekte' befinden. Die Komponenten und der Bereich werden nur beim erstmaligen Installieren des Package angezeigt. Beim Aktualisieren werden dann immer nur neu hinzukekommene Kompos angezeigt.
|
Re: Aus Komponente auf Namen zugreifen
und wie kann man komponenten wieder deinstalieren? Vielleicht habe ich dabei einen Fehler gemacht.
Edit: Habs hinbekommen, wird wieder angezeigt! |
Re: Aus Komponente auf Namen zugreifen
Einfach das Package deinstallieren
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 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