AGB  ·  Datenschutz  ·  Impressum  







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

Komponente auf Frame ansprechen

Offene Frage von "TheThrust"
Ein Thema von TheThrust · begonnen am 29. Feb 2008 · letzter Beitrag vom 3. Mär 2008
Antwort Antwort
TheThrust

Registriert seit: 30. Jan 2008
19 Beiträge
 
#1

Komponente auf Frame ansprechen

  Alt 29. Feb 2008, 08:02
Hallo Leute!

Ich habe ein eher ungewöhnliches Problem und ich kann mir gut vorstellen dass ich einfach nur einen Denkfehler gemacht habe:

Es ist ein Frame über folgenden Code in meine Hauptunit eigebunden worden:
Delphi-Quellcode:
uses Unit2, Unit3;

var
  fr : array[0..3] of TFrame;

procedure TForm1.FormCreate(Sender: TObject);
begin
  fr[0] := Unit2.TFrame2.Create(self);
  fr[0].Parent := Form1;
end;
Soweit, sogut, nun möchte ich aber ein Label mit dem Namen Label1 auf dem Frame verändern. Ich habe verschiedene Möglichkeiten ausprobiert, habe aber jede Mal eine Fehlermeldung bekommen:

  fr[0].FindComponent('Label1').Caption := 'hi';
Zitat:
Undeclared identifier 'Caption'
  fr[0].FindComponent(Label1).Caption := 'hi';
Zitat:
Undeclared identifier 'Caption'
fr[0].Label1.Caption := 'hi';
Zitat:
Undeclared Identifier 'Label1'
Mir fällt keine andere Möglichkeit ein...

Ich hoffe da gibt es eine einfache Lösung, mit Forms bekomme ich die ganze sache sehr leicht hin, nur halt mit dem Frame nicht

mfG TheThrust
  Mit Zitat antworten Zitat
Looper

Registriert seit: 28. Sep 2007
Ort: Hamburg
131 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Komponente auf Frame ansprechen

  Alt 29. Feb 2008, 08:08
Das Frame kann man doch auch über FormX. ansprechen oder nicht?

mfg Looper
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#3

Re: Komponente auf Frame ansprechen

  Alt 29. Feb 2008, 10:27
Woher soll der Compiler wissen, welche Komponenten sich auf dem Frame fr[0] befinden? fr ist ja ein Array von TFrame und nicht von TFrame2.
 TFrame2(fr[0]).Label1.Caption := 'hi'; oder(fr[0] as TFrame2).Label1.Caption := 'hi';
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Komponente auf Frame ansprechen

  Alt 29. Feb 2008, 11:20
Zitat:
fr[0].FindComponent('Label1').Caption := 'hi';
TLabel(fr[0].FindComponent('Label1')).Caption := 'hi'; Weil ein TComponent kennt keine Eigenschaft Caption
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Komponente auf Frame ansprechen

  Alt 29. Feb 2008, 11:27
Oder besser einen Softcast:
(fr[0].FindComponent('Label1') as TLabel).Caption := 'hi';
Markus Kinzler
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Komponente auf Frame ansprechen

  Alt 3. Mär 2008, 00:06
Zitat von mkinzler:
Oder besser einen Softcast:
(fr[0].FindComponent('Label1') as TLabel).Caption := 'hi';
Wo ist da eigentlich der Unterschied?
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Komponente auf Frame ansprechen

  Alt 3. Mär 2008, 00:20
Zitat von webcss:
Zitat von mkinzler:
Oder besser einen Softcast:
(fr[0].FindComponent('Label1') as TLabel).Caption := 'hi';
Wo ist da eigentlich der Unterschied?
Der direkte Cast schlägt niemals fehl, auch dann nicht, wenn die Typen eigentlich nicht kompatibel sind. Mit dem Softcast bekommt man dagegen im schlechtesten Fall einen Laufzeitfehler.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := IntToStr(TStrings(Button1).IndexOf('Not a Stringlist'));
end;
-> Compiler beschwert sich nicht, Caption wird (zufällig!) auf "0" gesetzt. Da kommt nicht mal eine Exception

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := IntToStr((Button1 as TStrings).IndexOf('Not a Stringlist'));
end;
-> Compiler bemerkt den Fehler und bricht mit der Meldung "Inkompatible Typen" ab.
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Komponente auf Frame ansprechen

  Alt 3. Mär 2008, 00:23
Eine andere Variante wäre der IS-Operator.

Gruss
Thorsten
  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:13 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