Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - namen eines steuerelements als funktionsparameter übergeben
bruder jonas - So 27.04.03 16:23
Titel: namen eines steuerelements als funktionsparameter übergeben
hallo,
ich möchte 5 comboboxen mit inhalten füllen. dafür habe ich eine funktion geschrieben, der ich die passenden parameter übergeben.
Wie kann ich den namen der combobox übergeben, so dass ich im funktionsrumpf den parameter nutzen kann, um daran .items.add anzuhängen
beispiel:
Quelltext
1:
| function TfrmSave.fillCombo(sTable, sField, sCombo: string): boolean; |
--> sCombo ist der name der jeweiligen combobox
Quelltext
1: 2: 3: 4: 5:
| while not SqlQuery.eof do begin XXXXXX.items.add(SqlQuery.fieldbyname(sField).asString); SqlQuery.Next; end; |
--> XXXXX soll der name der combobox sein, den ich in der funktion übergebe.
wie mache ich das??
danke
Moderiert von
Tino: Code-Tags hinzugefügt.
bis11 - So 27.04.03 16:25
Ich denke, das Du sowas nur machen kannst, wenn Du die 5 Comboboxen zur Laufzeit erzeugst.
bruder jonas - So 27.04.03 16:34
Titel: und wie geht das?
kannst du mir das an einem beispiel beschreiben??
danke dir.
bis11 - So 27.04.03 20:35
So erstellst Du zum Beispiel ein TSpeedButton :
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| BasketButton := TSpeedButton.Create(self); BasketButton.Parent := basketstrip; // Name einer GroupBox BasketButton.left := firstbutton_left; // Variable mit einem Wert BasketButton.Top := button_top; // Variable mit einem Wert BasketButton.Height := button_height; // Variable mit einem Wert BasketButton.Width := button_width; // Variable mit einem Wert BasketButton.Caption := Fields[0].AsString; BasketButton.Name := Fields[0].AsString; BasketButton.OnClick := BasketBtnClick; button_top := button_top + 96; |
Alibi - So 27.04.03 20:47
Wieso nur den Namen übergeben und nicht die Combobox?
Naja, wird einen Grund haben...
Nach dem Namen wirst du das mit FindComponent und einem Typecasting mit
as machen können:
Quelltext
1:
| (Findcomponent('TolleComboBox') as TComboBox).Items.Add('Wow'); |
Blackout - So 27.04.03 21:30
@alle: bitte nicht so umständlich :wink:
@bruder jonas:
hi, probiers mal so hier:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| // deine Beispiel Funktion:
function TfrmSave.fillCombo(sTable, sField, sCombo: TComboBox): boolean; // "String" zu "TComboBox" // sCombo ist der name der jeweiligen combobox
while not SqlQuery.eof do begin sCombo.items.add(SqlQuery.fieldbyname(sField).asString); // sCombo.items.add SqlQuery.Next; end;
// So und wennde die Funktion aufrufst gibst du als sCombo z.B. "Form1.ComboBox1" als Parameter mit |
Ich hoffe ich konnte dir weiterhelfen
ShiKai - So 04.05.03 00:11
ich hab' den quelltext jetzt auf die schnelle zwar nicht ausprobiert, aber er sollte (mit einigen änderungen funktionieren).
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure TestComponent(AComponent : TObject); const BComponent = String : 'Test'; begin if (AComponent.ClassType = TComboBox) then begin if (TComboBox(AComponent).Name = BComponent) then begin ...; ...; end; end; |
so jetzt hab' ich sogar die richtigen namen nachgegooglet. so müsste es eigentlich funktionieren und man muss nur die 2 if für alle combos anpassen. d.h. für die gesamte funktion nur eine procedure/function.
viel spaß damit :-)
Moderiert von
Tino: Code-Tags hinzugefügt.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!