AGB  ·  Datenschutz  ·  Impressum  







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

TEdit mit Rahmen

Ein Thema von zahor · begonnen am 26. Mär 2008 · letzter Beitrag vom 26. Mär 2008
 
zahor

Registriert seit: 27. Jun 2006
Ort: im hintersten Winkel des RAMs
182 Beiträge
 
Delphi 2007 Professional
 
#6

Re: TEdit mit Rand

  Alt 26. Mär 2008, 14:46
so, hab's jetzt mal probiert. allerdings funzt das mit dem OnEnter / OnExit noch nicht. Könntet ihr mir da helfen, was ich da machen muss?
Habe bisher einfach nur einen 1px roten Rahmen zeichnen lassen.
So sieht die Unit aus:
Delphi-Quellcode:
unit SEdit;

interface

uses
  Windows, SysUtils, Classes, Controls, StdCtrls, Messages, graphics;

type
  TSEdit = class(TEdit)
  private
    procedure WMNCCalcSize(var Msg: TWMNCCALCSIZE); message WM_NCCALCSIZE;
    procedure WMNCPAINT(var Msg: TWMNCPaint); message WM_NCPaint;
    procedure unmark;
  protected
    { Protected-Deklarationen }
  public
    procedure RePaint; override;
  published
    procedure DoEnter;
    procedure DoExit;
    { Published-Deklarationen }
  end;

procedure Register;

var h: TWMNCPAINT;
  dc: hDc;
  Pen: hPen;
  OldPen: hPen;
  OldBrush: hBrush;
  sel: boolean=true;

implementation

procedure Register;
begin
  RegisterComponents('Zusätzlich', [TSEdit]);
end;

procedure TSEdit.RePaint;
begin
  WMNCPAINT(h);
end;

procedure TSedit.WMNCCalcSize(var Msg: TWMNCCalcSize);
begin
  exit;
end;

procedure TSEdit.WMNCPAINT(var Msg: TWMNCPAINT);
begin
  inherited;
  if not sel then
    unmark;
  dc := GetWindowDC(Handle);
  Msg.Result := 1;
  //Change the RGB value to change the color
  Pen := CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
  OldPen := SelectObject(dc, Pen);
  OldBrush := SelectObject(dc, GetStockObject(NULL_BRUSH));
  Rectangle(dc, 0, 0, Width, Height);
  SelectObject(dc, OldBrush);
  SelectObject(dc, OldPen);
  DeleteObject(Pen);
  ReleaseDC(Handle, Handle);
end;

procedure TSEdit.DoEnter;
begin
  sel := true;
end;

procedure TSEdit.DoExit;
begin
  sel := false;
end;

procedure TSEdit.unmark;
begin
  inherited;
  dc := GetWindowDC(Handle);
  //Change the RGB value to change the color
  Pen := CreatePen(PS_SOLID, 1, color);
  OldPen := SelectObject(dc, Pen);
  OldBrush := SelectObject(dc, GetStockObject(NULL_BRUSH));
  Rectangle(dc, 0, 0, Width, Height);
  SelectObject(dc, OldBrush);
  SelectObject(dc, OldPen);
  DeleteObject(Pen);
  ReleaseDC(Handle, Handle);
end;

end.
Real Programmers always confuse Christmas and Halloween because Oct31 = Dec25. - Andrew Rutherford
  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 01:00 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