AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Füllen einer ComboBox im OnCreate eines Frames
Thema durchsuchen
Ansicht
Themen-Optionen

Füllen einer ComboBox im OnCreate eines Frames

Ein Thema von phorax · begonnen am 13. Nov 2009 · letzter Beitrag vom 13. Nov 2009
Antwort Antwort
phorax

Registriert seit: 20. Sep 2008
12 Beiträge
 
Turbo Delphi für Win32
 
#1

Füllen einer ComboBox im OnCreate eines Frames

  Alt 13. Nov 2009, 17:17
Hallo,

ich möchte eine ComboBox cmbBeruf mit Strings befüllen, wenn das Frame frameStammdaten erstellt wird, in etwa so:

Delphi-Quellcode:
constructor TframeStammdaten.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  with cmbBeruf.Items do
  begin
    Add('Irgendein Beruf');
    Add('Noch ein Beruf');
  end;
  // Weitere Controls initialisieren
end;
Anschließend wird das Frame mit InsertControl in die Hauptform eingefügt. Wenn ich Items.Add weglasse, funktioniert es wunderbar. Doch wenn ich Items.Add hinzufüge - das trifft scheinbar nicht nur für ComboBox, sondern für alle Controls zu, die TStrings beinhalten?!? - wird das Frame ohne Fehlermeldung (!) einfach nicht eingefügt: Ich nehme an, dass es nicht richtig erstellt wird. Kann mir jemand von Euch helfen?
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Füllen einer ComboBox im OnCreate eines Frames

  Alt 13. Nov 2009, 20:01
Hallo,

der Code sieht OK aus.

Zitat:
in etwa so:
Aha ...
Also machst du doch was anderes.

Zeige den wirklichen Code
oder probier es aus
- Auskommentieren
- Testen
- Code wieder reinnehmen


Ausserdem würde ich das with mal ersetzen

Delphi-Quellcode:
    cmbBeruf.Items.Add('Irgendein Beruf');
    cmbBeruf.Items.Add('Noch ein Beruf');
Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Füllen einer ComboBox im OnCreate eines Frames

  Alt 13. Nov 2009, 20:15
Hi,

Ich würde den Code evtl. lieber wirklich ins "echte" OnCreate des Formulars schreiben und nicht in den constructor.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Füllen einer ComboBox im OnCreate eines Frames

  Alt 13. Nov 2009, 20:29
Existieren die Steuerelemente überhaupt zu dem Zeitpunkt schon?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
phorax

Registriert seit: 20. Sep 2008
12 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Füllen einer ComboBox im OnCreate eines Frames

  Alt 13. Nov 2009, 20:32
@hoiko: Das with zu ersetzen, bringt wohl nicht so viel ). "In etwa so", weil noch ungefähr 20 andere Berufe hinzugefügt werden...es klappt aber schon mit einem nicht. Das mit dem Auskommentieren habe ich schon gemacht. Deshalb weiß ich ja, woran es hängt, aber eben nicht warum.
@Neutral General: Ein Frame hat kein "echtes" OnCreate. Deswegen diese Lösung.
@Michael: Ja, inherited Create() müsste eigentlich schon alle Elemente erzeugen. Assigned(cmbBerufe) liefert auch True.
Nachtrag: Es bringt auch nichts, die Werte schon in der Entwurfsansicht festzulegen!?!
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Füllen einer ComboBox im OnCreate eines Frames

  Alt 13. Nov 2009, 20:39
Zitat von Neutral General:
Ich würde den Code evtl. lieber wirklich ins "echte" OnCreate des Formulars schreiben und nicht in den constructor.
Wieso? Funktioniert doch.

Siehe Anhang
Angehängte Dateien
Dateityp: rar frames_and_comboboxes_198.rar (175,7 KB, 3x aufgerufen)
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
phorax

Registriert seit: 20. Sep 2008
12 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Füllen einer ComboBox im OnCreate eines Frames

  Alt 13. Nov 2009, 20:48
@alzaimar: Ja, das funktioniert. Aber nur, wenn ich das Frame zur Design-Time in die Form einfüge. Wenn ich es zur Runtime einfüge (mit InsertControl) geht es nicht...Hab's noch einmal angehängt.
Angehängte Dateien
Dateityp: zip frames_and_comboboxes_530.zip (14,5 KB, 9x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Ralf Kaiser
Ralf Kaiser

Registriert seit: 21. Mär 2005
Ort: Wuppertal
932 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Füllen einer ComboBox im OnCreate eines Frames

  Alt 13. Nov 2009, 20:52
Füge dem Frame doch eine Methode "FillComboBox()" hinzu. Diese Methode füllt dann die Combobox und wird von deinem Code aufgerufen nachdem das Frame eingefügt wurde.
Ralf Kaiser
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#9

Re: Füllen einer ComboBox im OnCreate eines Frames

  Alt 13. Nov 2009, 21:13
Hallo phorax,

warum verwendest du InsertControl?

Delphi-Quellcode:
procedure TMainForm.ButtonClick (Sender: TObject);
var
  Frame: TframeStammdaten;
begin
  Frame := TframeStammdaten.Create(Self);
// InsertControl (Frame);
  Frame.Parent := Self;
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
phorax

Registriert seit: 20. Sep 2008
12 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Füllen einer ComboBox im OnCreate eines Frames

  Alt 13. Nov 2009, 21:18
@Hawkeye219: Weil ich offenbar keine Ahnung habe . Danke!!! Das hat das Problem gelöst! Super!
  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 18:40 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