Autor Beitrag
ssb-blume
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 375
Erhaltene Danke: 7

XP, W7, W8
Deutschland
BeitragVerfasst: So 06.09.09 10:24 
Hallo
Wie kann ich verhindern, dass ein Mausklick, der auf einer beliebige Komponente behandelt wird (OnMouseDown..)
durch Delphi weitergeleitet wird?

Beispiel:
TListView; da will ich nur durch Mausklick Multiselect selbst machen. Geht ja auch, aber der Mausklick wird dann weitergeleitet und in der Komponente dann die Selektierung neu gesetzt, meine ist damit weg..

Beim Tastendruck geht's einfach - in OnKeyDown behandeln und dann Key auf #0 setzen.


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 07.09.2009 um 00:45

_________________
Brain: an apparatus with which we think we think.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: So 06.09.09 10:52 
Das wird mit der Standard-Listview so nicht gehen, du könntest eine eigene Komponente davon ableiten und schauen, ob du es damit machen kannst, indem du die vererbten Sachen vielleicht nicht aufrufst, ich weiß nicht ob das geht. Denn eigentlich kommt die Funktionalität ja von Windows.

Oder du benutzt einfach die VirtualTreeView, die sowieso sehr sehr viele Vorteile gegenüber der Standard-ListView hat.
www.soft-gems.net/in...;id=12&Itemid=33
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 06.09.09 11:39 
Man könnte es auch so versuchen: vor der Deklaration des Formulars folgenden Code einfügen
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
type
  TListView = class(ComCtrls.TListView)
  private
    procedure WMLButtonDown(var Msg: TWMLButtonDown);
      message WM_LBUTTONDOWN;
    procedure WMLButtonUp(var Msg: TWMLButtonUp);
      message WM_LBUTTONUP;
  end;

  TFrmMain = class(TForm)
  ...


Im implementation-Abschnitt dann die Behandlungsroutinen:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TListView.WMLButtonDown(var Msg: TWMLButtonDown);
begin
  Msg.Keys := Msg.Keys or MK_CONTROL;
  inherited;
end;

procedure TListView.WMLButtonUp(var Msg: TWMLButtonUp);
begin
  Msg.Keys := Msg.Keys or MK_CONTROL;
  inherited;
end;
ssb-blume Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 375
Erhaltene Danke: 7

XP, W7, W8
Deutschland
BeitragVerfasst: Mo 07.09.09 08:43 
Danke Jaenicke!
Ich werde mal die Virtualtreeviews versuchen.
Die Mausereignisse abfangen wie von DeddyH gehen zwar, aber dann kommen weitere Probleme, die ich nicht näher erläutern will.
Vielen Dank für die schnellen Antworten!
Hansi

_________________
Brain: an apparatus with which we think we think.