Zitat von
s14:
Delphi-Quellcode:
ItemIndex:=k;
OnChange(Self);
break;
... gibt wieder eine zugriffsverletzung! auf "adresse blabla etc"
... er wählt zwar einen Eintrag aus aber dann knallts beim drücken der Combobox
das onchange ereignis der combobox
Delphi-Quellcode:
...
procedure TfoDBEdit.FormFldChange(Sender: TObject);
var
FeldNr:integer;
SatzNr:integer;
begin
SatzNr:= AktZeile- 1;
FldValChanged:=true;
if Sender is TComboBox then
begin
cobsgChange(Sender);
exit;
end; // if TComboBox
...
...hier der code der ausgeführt wird....
Delphi-Quellcode:
procedure TfoDBEdit.cobsgChange(Sender: TObject);
var
sidx:integer;
i:integer;
FeldNr:integer;
SatzNr:integer;
begin
if not (Sender is TComboBox) then
exit;
SatzNr:= AktZeile-1;
if FormStateAkt=viewList then
FeldNr:= AktSpalte
else
FeldNr:= TComboBox(Sender).Tag;
with sgView do
begin
sidx:=TComboBox(Sender).ItemIndex; // ausgewählter Index
Cells[FeldNr, SatzNr+1]:=TComboBox(Sender).Items.Strings[sidx]; // in Grid übernehmen
CellContent[SatzNr,FeldNr].luKey:=TStr(TComboBox(Sender).Items.Objects[sidx]).value; // zugehöriger Wert übernehmen
// suche Combobox die aktuelles Feld als Referenz hat...
for i:=0 to high(CellContent[SatzNr]) do
begin
if i<>FeldNr then
begin
if CellContent[SatzNr, FeldNr].Nme=CellContent[SatzNr,i].reFld then
begin
CellContent[SatzNr,i].reKey:=CellContent[SatzNr,FeldNr].luKey; // RefKey der CoBx ist aktueller LookUpKey
CellContent[SatzNr,i].luKey:=inkaNil; // LuKey der CoBx ist Nil!!
Cells[i,SatzNr+1]:='<undefiniert>'; // Feld ändern im StringGrid
if FormStateAkt=viewRec then // Formular aktualisieren incl. Combobox
DataInForm;
end; // if
end; // if
end; // for
FldValChanged:=true;
end; // with
end;
[Edit] zweite procedure neu eingefügt! [/Edit]