Theoretisch geht es auch so:
Delphi-Quellcode:
private
type
TLabelMode = (lmCustomerNumber, lmArticleNumber, lmBillNumber, lmOrderNumber, lmName);
procedure SetSearchLabels(const ALabelMode: TLabelMode);
// ...
procedure TTblLieferanten.SetSearchLabels(const ALabelMode: TLabelMode);
const
LabelCaptions: array[TLabelMode, 0..3] of string = (
('1 = Name', '2 = Kunden Nr.', '', ''),
('1 = Name', '3 = Artikel Nr.', '6 = Bezeichnung', '7 = Lieferanten'),
('2 = Kunden Nr.', '5 = Rechnungs Nr.', '', ''),
('1 = Name', '2 = Kunden Nr.', '4 = Auftrags Nr.', ''),
('1 = Name', '', '', '')
);
ComboContents: array[TLabelMode] of string = (
'1'#13#10'2', '1'#13#10'3'#13#10'6'#13#10'7', '2'#13#10'5', '1'#13#10'2'#13#10'4', '1'
);
begin
Label10.Caption := LabelCaptions[ALabelMode][0];
Label11.Caption := LabelCaptions[ALabelMode][1];
Label13.Caption := LabelCaptions[ALabelMode][2];
Label14.Caption := LabelCaptions[ALabelMode][3];
ComboBox2.Items.Text := ComboContents[ALabelMode];
ComboBox2.ItemIndex := 0;
end;
procedure TTblLieferanten.ComboBox3Change(Sender: TObject);
begin
setSearchLabels(TLabelMode(ComboBox3.ItemIndex));
end;
Besser wäre es aber erstens die Komponenten ordentlich zu bezeichnen statt so ein Messie-Formular zu benutzen.
Und zweitens wäre es sinnvoller die Bezeichnungen usw. mit der Funktionalität kombiniert in eigene Klassen zu stecken. Dan können die verschiedenen Suchklassen von einer Elternklasse abgeleitet werden und es muss nur die entsprechende abgeleitete Klasse jeweils benutzt werden. Das macht es sehr viel übersichtlicher.
// EDIT:
Wo war der rote Kasten? Da steht ja schon eine ähnliche Lösung (die ich allerdings für unnötig unübersichtlich halte).