Ich habe ein TWPRichtext in dem ich ein Kontextmenü nur für Bilder gemacht habe. Das ganze habe ich so gelöst:
Code
procedure TText_Erfassung.EditorTextObjectMouseUp(Sender: TWPCustomRtfEdit; pobj: PTTextObj; obj: TWPObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin if (obj is TWPOImage) and (Shift = []) and (Button = mbRight) then begin ContextObject := Obj; GetCursorPos(ContextP); pmBild.Popup(ContextP.X, ContextP.Y); ContextHandled := True; end else ContextHandled := False;end;
Soweit alles in Ordnung. ContextObject ist eine globale Variabel vom Typ TWPObject. In dem Kontextmenü ist folgende Funktion:
Code
procedure TText_Erfassung.Bildverankern1Click(Sender: TObject);begin if Assigned(ContextObject) then begin Editor.TextObjects.ConvertType(ContextObject.AliasTextObj, wpotChar); ContextObject := nil; end;end;
Die ersten 4-8 Versuche bekomme ich eine Zugriffsverletzung weil AliasTextObj nil ist. Danach funktioniert das ganze immer einwandfrei.
Woran liegt das? Wie könnte ich sonst mein Bild identifizieren?
Es gibt ja noch die Möglichkeit Tags zu vergeben und mein Bild dann mit
zu identifizieren. Aber das TWPObject das ich erhalte hat nie den Pointer (AliasTextObj) den ich für ConvertType benötige.
Danke im voraus,
bp