Autor Beitrag
JRegier
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1268

Win XP Home, Prof, 2003 Server
D6 Enterprise
BeitragVerfasst: Di 27.09.05 09:09 
Hi, ich habe eine DB Control programmiert und habe da ein PopupMenü um
den ControlTyp zu ändern dieser Componente zugewiesen

EDIT
COMBOBOX
CHECKBOX
MEMO
DATEPICKER
-------------
Feld entfernen

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
type
 TFieldTyp = (EDIT, COMBOBOX, .., DATEPICKER, ..); 
 
  TDBField = class(TCustomPanel)
  FField : TControl;
  ...
  ...
  procedure SetFieldType(const Value : TFieldTyp);
  end;
 
  procedure TDBField.SetFieldType(const Value : TFieldTyp);
  begin
  if(Assigned(FField))then
  FreeAndNil(FField);       // Hier bekomme ich Zugriffsverletzung bei dem TDBPlannerDatePicker
  
  case Value of
  EDIT :      begin
              FField := TDBEdit.Create(Self);
              TDBEdit(FField)...
              TDBEdit(FField)...
              end;
  DATEPICKER :begin
              FField := TDBPlannerDatePicker.Create(Self);
              TDBPlannerDatePicker(FField)... 
              ...
              end;

  end;


Wenn ich FreeAndNil(FField); bei dem TDBPlannerDatePicker aufrufe bekomme ich Zugriffsverletzung
bei allen anderen Componenten gibts keine Problemme

Ich habe zuerst gedacht dass die DBPlannerDatePicker Comoponente nicht von TControl ableitet
aber der Hersteller schreibt:

"TDBPlannerDatePicker descends from TControl,
so this cannot be the issue."

Nun hatte ich ein ähnliches Problem wenn ich bei der Eingabe von Enter eine TEdit releasen wollte
aber da gab's auch Zugriffsverletzung!
Kann es sein weil ich dieses Popup der DBPlannerDatePicker zugewiesen habe und ich im PopupMenü den
ControlTyp wähle und dann diese Componente release dass diese Zugriffsverletzung auslöst?

//EDIT

OK ich habe das Problem gelöst! Und zwar indem ich nicht mehr property PopupMenu setze sondern das
PopupMenu einfach per Rechte Maustaste Popupe!
:D