AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

erkennen wenn anderes Control ausgewält wird

Ein Thema von oki · begonnen am 16. Aug 2007 · letzter Beitrag vom 18. Feb 2008
 
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: erkennen wenn anderes Control ausgewält wird

  Alt 18. Feb 2008, 08:45
Hi Leute,

habe jetzt eine Lösung gefunden. Ich denke, die ist auch recht elegant.

Erstens: eigene Botschaft erstellen:
const wm_Deselect = wm_User + 1; Zweitens: Botschaftsbehandhandlung implementieren
Delphi-Quellcode:
  TBaseCustomControl = class(TCustomControl)
  private
    procedure WMDESELECT(var AMsg: TMessage); message WM_DESELECT;
....

// setzt eigene Eigenschaft und zeichnet deselektiertes Control
procedure TBaseCustomControl.WMDESELECT(var AMsg: TMessage);
begin
  if Pointer(AMsg.LParam) <> self then
    self.Selected := False;
end;
Drittens: aufrufen des Ereignisses für Container und alles entaltenen Controls
Delphi-Quellcode:
procedure TBaseCustomControl.MouseDown(Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
begin
  if not FSelected then begin
    self.SetFocus;
    Selected := True;
    // wenn Shift-Tase nicht gedrückt ist, dann alle anderen Controls deselectieren
    if not (ssShift in Shift) then
      DeselectControls;
  end;
  inherited;
end;

procedure TBaseCustomControl.DeselectControls;
var
  Msg: TMessage;
begin
  Msg.Msg := wm_Deselect;
  Msg.LParam := Longint(self);
  Msg.WParam := 0;
  Msg.Result := 0;
  // Container deselekteieren wenn selektiert
  Parent.Broadcast(Msg);
  // alle anderen Controls deselektieren
  Parent.Perform(wm_Deselect, Msg.LParam, Msg.WParam);
end;
Jo, das klappt bei mir super.

Gruß oki
42
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz