Verstehe ich nicht: was soll das foo und das bar? Ich versteh ja nicht einmal, wieso die Zugriffsverletzung überhaupt ausgelöst wird. Mit deinem Vorschlag erhalte ich jetzt:
Exception der Klasse EAssertionFailed mit der Meldung 'bar Fram_Personen.pas, Zeile 349)'
Achso, jetzt fällt der Groschen (ich glaub, ich muß mich bald nochmal hinlegen): foo und bar dienen lediglich der Kennzeichnung, um an der Fehlermeldung erkennen zu können, ob entweder das PopUpMenu oder die Komponente, von der aus es aufgerufen wird, noch nicht verfügbar ist (oder so ähnlich ...). Das bedeutet, die Eigenschaft PopUpComponent ist Nil, wenn ich das PopUpMenu (PuM) beim ersten Mal via Shortcut aufrufe. Tja, wie macht man das dann? Auf Shortcuts verzichten? Und wieso geht's dann, nachdem ich einmal mit der Maus aufgerufen habe?
Ahh ... jetzt hab ich was rausgefunden: Wenn ich beim ersten Mal in der ersten Komponente einen Text markiere und dann das PuM mit der Maus aufrufe, wird korrekterweise der markierte Text verändert. Danach demarkiere ich den veränderten Text im ersten RichEdit wieder und markiere einen Text im zweiten RichEdit. Rufe ich dann z.B. Fett via Shortcut auf, wird der Text im ersten RichEdit fett gesetzt, obwohl der ja gar nicht markiert ist. Ich muß also beim Enter in ein RichEdit die Eigenschaft PuM_Personen.PopupComponent selber setzen. Das probier ich jetzt gleich mal aus.
Das war's!!!
Delphi-Quellcode:
procedure TFrame_Personen.DbRich_Pers_BioEnter(Sender: TObject);
begin
PuM_Personen.PopupComponent := DbRich_Pers_Bio;
end;
procedure TFrame_Personen.DbRich_Pers_AdresEnter(Sender: TObject);
begin
PuM_Personen.PopupComponent := DbRich_Pers_Adres;
end;
Danke, Himitsu, du bist unersetzlich