AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Componentenart als String -> erstellen der Componente
Thema durchsuchen
Ansicht
Themen-Optionen

Componentenart als String -> erstellen der Componente

Ein Thema von HolgerCW · begonnen am 7. Mär 2008 · letzter Beitrag vom 7. Mär 2008
Antwort Antwort
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

Componentenart als String -> erstellen der Componente

  Alt 7. Mär 2008, 08:05
Hallo zusammen,

ich habe eine ComboBox, in denen ich die Componentenarten als String hinterlegt habe, wie TTabSheet oder TBitBtn.

Nun möchte ich , wenn man z.B. TTabSheet auswählt in einer weiteren ComboBox alle verfügbaren Namen der TTabSheets auf einer Form dort eingefügt werden. Hier mein Code:

Delphi-Quellcode:
procedure TForm1.CB_Item_ArtChange(Sender: TObject);
var
 I: Integer;
 StrList: TStringList;
 Form: TForm;
begin
 
 Form := Form1;
 
 StrList := TStringList.Create();

 For I := 0 to Form.ComponentCount - 1 do
 begin

  if Form.Components[I] is CB_Item_Art.Text then
  begin

   StrList.add(Form.Components[I].Name);

  end;
 end;

 CB_Item.Clear;
 CB_Item := StrList;

end;
Gegen was muss ich in dem Code diesen Eintrag: "CB_Item_Art.Text" ersetzen, damit es klappt ?

Gruss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Componentenart als String -> erstellen der Componente

  Alt 7. Mär 2008, 08:09
Das geht IMHO nur über einen Umweg:if AnsiLowerCase(Form.Components[I].ClassName) = AnsiLowerCase(CB_Item_Art.Text) then
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: Componentenart als String -> erstellen der Componente

  Alt 7. Mär 2008, 08:20
Perfekt,

das funktioniert.

Gruss

Holger
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#4

Re: Componentenart als String -> erstellen der Componente

  Alt 7. Mär 2008, 08:39
Moin,
Jeder Nachfahre von TObject hat eine Methode ClassNameIs, die Du zu dieser Prüfung nutzen kannst.
Noch eine Anmerkung zu Deinem Quelltext: Du referenzierst hier in einer Methode eine Instanz des Methodeneigners. Dadurch ist es nicht mehr möglich, eine weitere Instanz zu erstellen, die wie gewünscht arbeitet.
Außerdem ist an dieser Stelle die Zuweisung zu einer lokalen Variablen überflüssig.
Delphi-Quellcode:
procedure TForm1.CB_Item_ArtChange(Sender: TObject);
var
  I: Integer;
  StrList: TStringList;
  // Form: TForm; ueberfluessig
begin
  //Form := Form1;
  StrList := TStringList.Create();
  For I := 0 to {Form.}ComponentCount - 1 do
  begin
    if Components[I].ClassNameIs (CB_Item_Art.Text) then
    begin
      StrList.add({Form.}Components[I].Name);
    end;
  end;
  CB_Item.Clear;
  CB_Item := StrList; // das funktioniert nicht

end;
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Componentenart als String -> erstellen der Componente

  Alt 7. Mär 2008, 08:41
Wenn ich das richtig überflogen habe, macht die Methode aber auch nichts Anderes als mein Vorschlag.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#6

Re: Componentenart als String -> erstellen der Componente

  Alt 7. Mär 2008, 10:23
Hi,

danke nochmals. Die Proceduren sind gleichwertig.

Zitat:
CB_Item := StrList; // das funktioniert nicht
funktioniert so:

CB_Item.List := StrList;
Zitat:
// Form: TForm; ueberfluessig
begin
//Form := Form1;
Dort werde ich später noch verschiedene Formen zuweisen. Zur Zeit ist das überflüssig.

Danke euch beiden

Gruss

Holger
  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:50 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