Hallo Stevie,
erstmal danke für Dein Interesse,
die
DB enthält u.a. drei Felder, die nur mit bestimmten Werten belegt werden dürfen. Diese Werte sind als Items in drei DBComboBox-Komponenten hinterlegt. Mit der Auswahl eines Wertes wird gleichzeitig ein Wert vom Typ SINGLE in die
DB geschrieben, mit dem später etwas berechnet wird. Die Zuweisung erfolgt beim OnChange-Ereignis über case-Anweisung:
Delphi-Quellcode:
procedure TForm1.DBComboBox1Change(Sender: TObject);
begin
ADOTable1.Edit;
case DBComboBox1.ItemIndex of
0: ADOTable1.FieldByName('UC_SpCA').AsFloat := 0.112;
(..)
7: ADOTable1.FieldByName('UC_SpCA').AsFloat := 0.173;
end
end;
Das klappt soweit auch wie gewünscht. Da es allerdings oft der Fall ist, das der Nutzer drei mal den gleichen Wert auswählen möchte, habe ich ein PopupMenu eingebaut mit dem es möglich sein soll den Wert aus DBComboBox1 in DBComboBox2 und DBComboBox3 zu übernehmen.
Da natürlich auch der SINGLE-Wert übernommen werden soll, dachte ich mir in meiner naiven Birne, mache ich das am Besten über ItemIndex:
Delphi-Quellcode:
procedure TForm1.copy1Click(Sender: TObject);
begin
DBComboBox2.ItemIndex := DBComboBox1.ItemIndex;
DBComboBox3.ItemIndex := DBComboBox1.ItemIndex;
end;
Das klappt allerdings nur zum Teil, es steht zwar in allen DBComboBoxen der gleiche Wert, aber die SINGLE-Werte werden wohl deshalb nicht übernommen, weil das OnChange-Ereignis für die anderen DBComboBoxen gar nicht stattfindet wenn ich den ItemIndex gleichsetze.
Wie komme ich da raus ohne alles umzuschreiben?
Das zweite Problem ist, dass die 'kopierten' Werte nicht in die
DB geschrieben werden. Sobald
ADOTable1.Post;
ausgelöst wird, sind DBComboBox1 und 2 wieder 'leer' (ItemIndex: -1) und die entsprechenden
DB-Felder auch.
Ich hoffe, Du siehst jetzt etwas klarer..
gruß, kongo
Als ob wir ganz genau wüßten, wo wir hinwollen...