Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi kein Focus bei TMemo (https://www.delphipraxis.net/157855-kein-focus-bei-tmemo.html)

p80286 27. Jan 2011 11:21

Delphi-Version: 5

kein Focus bei TMemo
 
Hallo zusammen,

ich habe innerhalb eines Pagecontrols, mehrere Memos.
Manchmal wenn ich vom einen Memo zum anderen wechsele, egal ob über ActivePage oder per Mouseclick, spinnt die Anzeige der Memos, d.h. der Cursor wird nicht angezeigt und die Auswahl wird nicht markiert. Tastatureingaben werden allerdings übernommen.
Im on_Change des PageControls setze ich den Focus in das entsprechende Memo, aber das hilft nicht in jedem Falle.
Was habe ich übersehen?
Meist hilft es per Mouseclick die Seiten zu wechseln, aber das ist ja nicht der wahre Jacob.

Grüße
K-H

himitsu 27. Jan 2011 11:43

AW: kein Focus bei TMemo
 
OnChange des PageControl wird bescheuerter Weise beim MouseDown ausgelöst (es wird sofort umgeschaltet).
Nn könnte es sein, das das MouseUp (loslassen der Maustaste) den Fokus verschiebt/verändert, nachdem du den Fokus im OnChange auf das Memo gelegt hattest.

Ein Versuch wäre es also Wert erst im OnMouseUp des PageControl den Fokus auf das Memo zu verschieben.

p80286 27. Jan 2011 11:54

AW: kein Focus bei TMemo
 
Versuch macht Kluch!

hat leider nicht so richtig funktioniert.

Ich hab einmal versucht über OnEnter die Focusverschiebung anzuzeigen, und demnach funktioniertt genau das nicht. Es sieht so aus als würde der Focus an einem Memo "kleben" bleiben.

Gruß
K-H

p80286 22. Aug 2013 12:13

AW: kein Focus bei TMemo
 
So nach etwas längerem herumdoktern hab ich das Problem endlich gelöst.
Das eigentliche Problem war, das das TMemo zwar richtig funktionierte, aber die notwendige visuelle Rückmeldung ausblieb. Cursor wird nicht angezeigt, selecktierter Text wird nicht invers angezeigt.

Hiermit war es dann erledigt:
Delphi-Quellcode:
procedure TForm1.M_InputEnter(Sender: TObject);
begin
  if Handle <> 0 then
        SendMessage(Handle, EM_SETREADONLY, Ord(false), 0);
Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz