Autor Beitrag
bruder jonas
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: So 27.04.03 16:23 
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:
ausblenden Quelltext
1:
function TfrmSave.fillCombo(sTable, sField, sCombo: string): boolean;					

--> sCombo ist der name der jeweiligen combobox
ausblenden 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 user profile iconTino: Code-Tags hinzugefügt.
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: So 27.04.03 16:25 
Ich denke, das Du sowas nur machen kannst, wenn Du die 5 Comboboxen zur Laufzeit erzeugst.
bruder jonas Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: So 27.04.03 16:34 
Titel: und wie geht das?
kannst du mir das an einem beispiel beschreiben??

danke dir.
bis11
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1247
Erhaltene Danke: 2

Apple Mac OSX 10.11

BeitragVerfasst: So 27.04.03 20:35 
So erstellst Du zum Beispiel ein TSpeedButton :
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 458

Win2K SP3
Delphi 6 Ent
BeitragVerfasst: 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:
ausblenden Quelltext
1:
(Findcomponent('TolleComboBox') as TComboBox).Items.Add('Wow');					
Blackout
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 64



BeitragVerfasst: So 27.04.03 21:30 
@alle: bitte nicht so umständlich :wink:

@bruder jonas:

hi, probiers mal so hier:

ausblenden 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

_________________
MfG Blackout
ShiKai
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: So 04.05.03 00:11 
ich hab' den quelltext jetzt auf die schnelle zwar nicht ausprobiert, aber er sollte (mit einigen änderungen funktionieren).
ausblenden 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 user profile iconTino: Code-Tags hinzugefügt.