ListBox an Curosorposition von RichEdit erscheinen lassen

alixander

Mitglied
Hallo Leute!
Ich will, dass wenn der User bei meinem RichEdit die STRG Taste drückt, dann an der Stelle an der der Cursor ist, eine ListBox auftaucht aus der der User dann bestimmte Sachen aussuchen kann- bis jetzt habt ich es immer so gemacht, aber dann kommt erscheint die ListBox nicht ander Cursorposition , sondern irgendwo anders
Edit=ein TRichEdit;
CodeBox=eine TListBox
Code:
   if(Key==VK_CONTROL)
        {
                CodeBox->Visible=true;
                CodeBox->Top=Edit->CaretPos.y;
                CodeBox->Left=Edit->CaretPos.x;
        }
wenn ich vorher noch CodeBox->Parent=Edit ergänze, dann sieht man überhaupt nichts mehr im Edit.
mfg
 
Ich denke mal dein Ansatz ist gar nicht so schlecht. Allerdings
solltest du ein gemeinsames Bezugssystem wählen, den Bildschirm.

Mit ScreenToClient und ClientToScreen kannst du dir Positionen (TPoint)
relativ zum linken oberen Bildschirmrand ausrechnen.

Wenn du also erst ClientToScreen von deinem Edit machst, und dann
ScreenToClient auf deine ListBox dann sollte die Listbox an gewünschter
Stelle erscheinen.

Verwirrend ? Glaub ich, aber lies dir mal die Hilfe zu den zwei Funktionen
durch, und dir wird es wie Schuppen von den Augen fallen.

Bei mir hat es jedenfalls funktioniert. Hatte ein ähnliches Problem, als
ich mir aus Buttons ein eigenes Menü gestrickt habe (anstatt das
Standard-Kontextmenü zu verwenden ).
 

Neue Beiträge

Zurück