hallo,
ich erzeuge mir folgendermaßen mehrere objekt. quasi 7 objekte in jeder reihe.
Delphi-Quellcode:
procedure TForm1.AuftragNeuenArtikel;
begin
intAuftragAnzahlEdits := intAuftragAnzahlEdits + 1;
ScrollBox1.VertScrollBar.Range := 65 + ((intAuftragAnzahlEdits-1) * 100);
MyLabel := TLabel.Create(self);
//with TLabel(Form1.FindComponent('NewLabelAuftragPos_' + IntToStr(intAuftragAnzahlEdits))) do
with MyLabel do
begin
Name := 'NewLabelAuftragPos_' + IntToStr(intAuftragAnzahlEdits);
Parent := Form1.ScrollBox1;
Font.Size := 10;
Left := 15;
Top := 80 + ((intAuftragAnzahlEdits-1) * 80);
Caption := IntToStr(intAuftragAnzahlEdits);
end;
MyEdit := TEdit.Create(self);
//with TEdit(Form1.FindComponent('NewEditAuftragArt_' + IntToStr(intAuftragAnzahlEdits))) do
with MyEdit do
begin
Name := 'NewEditAuftragArt_' + IntToStr(intAuftragAnzahlEdits);
Parent := Form1.ScrollBox1;
Font.Size := 10;
Width := 33;
Left := 81;
Top := 80 + ((intAuftragAnzahlEdits-1) * 80);
Text := 'A';
MaxLength := 1;
OnKeyPress := AuftragArtCheck;
OnEnter := AuftragAuftragErfassenEditOnEnter;
OnChange := AuftragAuftragErfassenEditOnEnter;
end;
MyEdit := TEdit.Create(self);
//TEdit.Create(Form1).Name := 'NewEditAuftragArtNr_' + IntToStr(intAuftragAnzahlEdits);
//with TEdit(Form1.FindComponent('NewEditAuftragArtNr_' + IntToStr(intAuftragAnzahlEdits))) do
with MyEdit do
begin
Name := 'NewEditAuftragArtNr_' + IntToStr(intAuftragAnzahlEdits);
Parent := Form1.ScrollBox1;
Font.Size := 10;
Width := 60;
Left := 142;
Top := 80 + ((intAuftragAnzahlEdits-1) * 80);
Text := '';
OnKeyPress := AuftragArtikel;
OnEnter := AuftragAuftragErfassenEditOnEnter;
OnChange := AuftragAuftragErfassenEditOnEnter;
end;
//TEdit.Create(Form1).Name := 'NewEditAuftragBez1_' + IntToStr(intAuftragAnzahlEdits);
//with TEdit(Form1.FindComponent('NewEditAuftragBez1_' + IntToStr(intAuftragAnzahlEdits))) do
MyEdit := TEdit.Create(self);
with MyEdit do
begin
Name := 'NewEditAuftragBez1_' + IntToStr(intAuftragAnzahlEdits);
Parent := Form1.ScrollBox1;
Font.Size := 10;
Width := 350;
Left := 245;
Top := 80 + ((intAuftragAnzahlEdits-1) * 80);
Text := '';
ReadOnly := True;
OnEnter := AuftragAuftragErfassenEditOnEnter;
OnChange := AuftragAuftragErfassenEditOnEnter;
end;
//TEdit.Create(Form1).Name := 'NewEditAuftragBez2_' + IntToStr(intAuftragAnzahlEdits);
//with TEdit(Form1.FindComponent('NewEditAuftragBez2_' + IntToStr(intAuftragAnzahlEdits))) do
MyEdit := TEdit.Create(self);
with MyEdit do
begin
Name := 'NewEditAuftragBez2_' + IntToStr(intAuftragAnzahlEdits);
Parent := Form1.ScrollBox1;
Font.Size := 10;
Width := 350;
Left := 245;
Top := 112 + ((intAuftragAnzahlEdits-1) * 80);
Text := '';
ReadOnly := True;
OnEnter := AuftragAuftragErfassenEditOnEnter;
OnChange := AuftragAuftragErfassenEditOnEnter;
end;
//TCheckBox.Create(Form1).Name := 'NewCheckBoxAuftragAktion_' + IntToStr(intAuftragAnzahlEdits);
//with TCheckBox(Form1.FindComponent('NewCheckBoxAuftragAktion_' + IntToStr(intAuftragAnzahlEdits))) do
MyCheckBox := TCheckBox.Create(self);
with MyCheckBox do
begin
Name := 'NewCheckBoxAuftragAktion_' + IntToStr(intAuftragAnzahlEdits);
Parent := Form1.ScrollBox1;
Font.Size := 10;
Left := 625;
Caption := '';
Top := 80 + ((intAuftragAnzahlEdits-1) * 80);
OnEnter := AuftragAuftragErfassenEditOnEnter;
end;
//TEdit.Create(Form1).Name := 'NewEditAuftragMenge_' + IntToStr(intAuftragAnzahlEdits);
//with TEdit(Form1.FindComponent('NewEditAuftragMenge_' + IntToStr(intAuftragAnzahlEdits))) do
MyEdit := TEdit.Create(self);
with MyEdit do
begin
Name := 'NewEditAuftragMenge_' + IntToStr(intAuftragAnzahlEdits);
Parent := Form1.ScrollBox1;
Font.Size := 10;
Width := 75;
Left := 700;
Top := 80 + ((intAuftragAnzahlEdits-1) * 80);
Text := '';
OnKeyPress := AuftrageMengeEnter;
OnEnter := AuftragAuftragErfassenEditOnEnter;
OnChange := AuftragAuftragErfassenEditOnEnter;
end;
end;
diese muss ich dann auch wieder zerstören.
Delphi-Quellcode:
for i:=1 to intAuftragAnzahlEdits do
begin
TLabel(Form1.FindComponent('NewLabelAuftragPos_' + IntToStr(i))).Free;
TEdit(Form1.FindComponent('NewEditAuftragArt_' + IntToStr(i))).Free;
TEdit(Form1.FindComponent('NewEditAuftragArtNr_' + IntToStr(i))).Free;
TEdit(Form1.FindComponent('NewEditAuftragBez1_' + IntToStr(i))).Free;
TEdit(Form1.FindComponent('NewEditAuftragBez2_' + IntToStr(i))).Free;
TCheckBox(Form1.FindComponent('NewCheckBoxAuftragAktion_' + IntToStr(i))).Free;
TEdit(Form1.FindComponent('NewEditAuftragMenge_' + IntToStr(i))).Free;
end;
MyLabel := nil;
MyEdit := nil;
MyCheckBox := nil;
folgende fehlermeldung erhalte ich dann immer
Delphi-Quellcode:
---------------------------
Benachrichtigung über Debugger-
Exception
---------------------------
Im Projekt Project2.exe ist eine
Exception der Klasse EAccessViolation aufgetreten. Meldung: '
Zugriffsverletzung bei Adresse 00403821 in Modul 'Project2.exe'
. Lesen von Adresse 0000001C'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
was mach ich falsch bzw. wie kann man das anders lösen? ich hatte auch schon mal "abstrakte fehler" als meldung bekommen.
wenn ich jetzt einfach alle reihen bis auf die letzte lösche, dann bekomme ich keinen fehler !!! der focus liegt auf keinem der objekte.
danke vielmals
gruß
tkliewe