Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: TrackBar Umrandung bzw. Tab entfernen?

  Alt 12. Mär 2009, 15:37
Das mit WS_TABSTOP hat bei mir leider nicht funktioniert. Nach ein paar Versuchen (Delphi 5 unter XP SP 3) ist mein jetziger Stand dieser, scheint bisher zu funktionieren, Garantien übernehme ich aber keine:
Delphi-Quellcode:
unit Nix;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls;

type
  TTrackBar = class(ComCtrls.TTrackBar)
  private
    FOldWnd: HWnd;
    procedure WMSetFocus(var Msg: TWMSetFocus);
      message WM_SETFOCUS;
    procedure WMPaint(var Msg: TWMPaint);
      message WM_PAINT;
  end;

  TForm1 = class(TForm)
    TrackBar1: TTrackBar;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TTrackBar.WMSetFocus(var Msg: TWMSetFocus);
begin
  inherited;
  FOldWnd := Msg.FocusedWnd;
end;

procedure TTrackBar.WMPaint(var Msg: TWMPaint);
var DC: hDC;
    R: TRect;
begin
  inherited;
  if (GetFocus = self.Handle) and (FOldWnd <> self.Handle) then
    begin
      DC := GetWindowDC(self.Handle);
      if DC <> 0 then
        try
          R := Rect(0,0,self.Width,self.Height);
          DrawFocusRect(DC,R);
          FOldWnd := self.Handle;
        finally
          ReleaseDC(self.Handle,DC);
        end;
    end;
end;

end.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat