Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
Delphi 11 Alexandria
|
AW: bessere lösung für prozeduren
29. Okt 2011, 10:42
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).
Sebastian Jänicke Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
Geändert von jaenicke (29. Okt 2011 um 10:44 Uhr)
|
|
Zitat
|