AGB  ·  Datenschutz  ·  Impressum  







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

Variable als Objekt?

Ein Thema von Mat · begonnen am 28. Mai 2003 · letzter Beitrag vom 28. Mai 2003
Antwort Antwort
Mat

Registriert seit: 27. Mai 2003
Ort: Hönow
104 Beiträge
 
Delphi 7 Professional
 
#1

Variable als Objekt?

  Alt 28. Mai 2003, 14:29
Hi,


in jeder Funktion gibt es ja den Parameter "Sender".

Nun kann ich ja dann mit (Sender as TButton) [wenn es denn ein Button ist] alle Eigenschaften, Funktionen etc. dieses Buttons abrufen, ohne das ich den Namen des Buttons kennen kann.


Nun meine Frage.
Ich habe ein Objekt "Image1" und eine (string) Variable, deren Inhalt ebenfalls "Image1" ist.

Kann ich nun das Bild nur ueber die Variable ansprechen?
Ich dachte ja an (var_name as TImage) aber das wollte er ja nicht.

Bin mit den Grundlagen (noch) nicht so fit, gibt's da ueberhaupt Moeglichkeiten?


1000 Dank

Mat


ps: ich hab auch gesucht aber bei derart allg. Begriffen gab's keine "vernuenftigen" ergebnisse
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 28. Mai 2003, 14:36
Moin Mat,

mal ein Beispiel:

Delphi-Quellcode:
var
  sVariable : string;
  compWork : TComponent;

begin
  sVariable := 'Image1';
  // Erfolgt der Aufruf von FindComponent in einer Methodes des Formulares,
  // das das Image enthält, kann man self nehmen, oder weglassen, ansonsten
  // muss der entsprechende Container mit angegeben werden (z.B. Form1.FindComponent(... )
  compWork := self.FindComponent(sVariable);
  if (compWork <> nil) and (compWork is TImage) then ShowMessage('Ich habs');
end;
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
Mat

Registriert seit: 27. Mai 2003
Ort: Hönow
104 Beiträge
 
Delphi 7 Professional
 
#3
  Alt 28. Mai 2003, 14:47
sieht gut aus.

das heisst, ich kann dann mit compWork dasselbe machen, wie mit Image1?

also compWork.Picture ist identisch zu Image1.Picture?


bin nicht zuhause, kanns noch nich ausprobieren..



Danke

Mat
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4
  Alt 28. Mai 2003, 14:57
Moin Mat,

Zitat von Mat:
das heisst, ich kann dann mit compWork dasselbe machen, wie mit Image1?
jein

Wenn Du sicher bist, dass es sich immer um ein TImage handelt, kannst Du die Variable auch gleich als TImage deklarieren, und dann mit

  compWork := TImage(self.FindComponent(sVariable)); füllen, oder mit

Delphi-Quellcode:
TImage(compWork).Picture;
// oder
(compWord as TImage).Picture;
verwenden.

compWork ist nichts weiter als ein Zeiger auf ein Objekt. Wird compWork als TComponent deklariert, stellt es für den Compiler einen Zeiger auf ein Objekt vom Typ TComponent dar. Durch die Verwendung von TImage(...), egal ob im ersten oder zweiten Fall, übernimmst Du gegenüber dem Compiler sozusagen die Verantwortung dafür, dass es sich bei dem Pointer in compWork um ein TImage Objekt handelt, und somit lässt er dann auch, ohne zu meckern, die Verwendung auf die Eigenschaften, Methoden und Ereignisse von TImage zu.
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
Mat

Registriert seit: 27. Mai 2003
Ort: Hönow
104 Beiträge
 
Delphi 7 Professional
 
#5
  Alt 28. Mai 2003, 15:18
gleich als Image deklarieren geht aber nicht.


mal konkret zum Programm

ich habe jeweils Paare von Buttons und Images, die dann immer gleich heissen (also Button_Delete, Image_Delete)


Beim MouseMove-Event der Images soll halt was mit den Buttons passieren.

Bisher hatte ich fuer jedes Image-Element ne eigene Prozedur, was aber Quatsch ist, da ja jedesmal dasselbe passieren soll.

Also will ich ueber die (Sender as TImage).name den Namen des Images rausbekommen, die string-variable dann nach 'button_[Image-Name]' umwandeln (soweit bin ich bisher schon gekommen und dann mit der Variable weitermachen (die ja dann eben wie der zugehoerige Button heisst)


weiss nicht genau, ob deine letzten Beispiele genau das machen, wie gesagt, Theorie hab ich noch nich so drauf

Mat
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6
  Alt 28. Mai 2003, 15:23
Moin Mat,

da deklarierst Du die Variable als TButton, und suchst Dir den passenden mit

Delphi-Quellcode:
var
  compWork : TButton;

begin
  compWork := TButton(FindComponent('Button_'+TImage(Sender).Name));
  // mach was mit compWork
end;
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
Mat

Registriert seit: 27. Mai 2003
Ort: Hönow
104 Beiträge
 
Delphi 7 Professional
 
#7
  Alt 28. Mai 2003, 15:36
ah ja, genau sowas hab ich gesucht

Danke!
  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 17:52 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