Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TEdit mit Hintergrund Image (https://www.delphipraxis.net/105155-tedit-mit-hintergrund-image.html)

Hammer 17. Dez 2007 09:57


TEdit mit Hintergrund Image
 
Ich suche nach einer Komponente bzw. Hilfe dazu wie ich ein TEdit dazu bringe im Hintergrund ein Image anzuzeigen.
Ich habs bis jetzt einfach nicht geschaft dies selbst zu realisieren dh. stelle ich hier mal die Frage und hoffe dass mir jemand weiterhelfen kann.¨

mfg
Adrian

Nuclear-Ping 17. Dez 2007 11:17

Re: TEdit mit Hintergrund Image
 
Was hast du denn versucht?

Theoretisch: Neue Komponente von TEdit ableiten und OnPaint oder OnDraw überschreiben.

Hammer 17. Dez 2007 11:56

Re: TEdit mit Hintergrund Image
 
Hallo

Äh... TEdit hat kein OnPaint oder?

Aktuell kann ich euch folgendes Zeigen.
Anregungen Verbesserungen sind immer Herzlich Willkommen...

Delphi-Quellcode:
unit ImageEdit;

interface

uses
  SysUtils, Classes, Controls, StdCtrls, ExtCtrls, Windows, Messages, Graphics;

type
  TImageEdit = class(TEdit)
  private
    { Private-Deklarationen }
    fBMP : TBitmap ;
    fFocus : Boolean ;
    procedure WMPaint(var msg: TWMPaint); message WM_PAINT;
    procedure WMKillFocus(var Message: TWMSetFocus); message WM_KillFocus ;
    procedure WMSetFocus(var Message: TWMSetFocus); message WM_SetFocus ;

  protected
    { Protected-Deklarationen }

  public
    { Public-Deklarationen }
    constructor Create(aOwner: TComponent); override;
    destructor Destroy; override ;

  published
    { Published-Deklarationen }

  end;



procedure Register;



implementation

procedure Register;
begin
  RegisterComponents('easyLEARN', [TImageEdit]);
end;

{ TImageEdit }

constructor TImageEdit.Create(aOwner: TComponent);
begin
  Inherited ;

  fBMP := TBitmap.Create ;
  fBMP.LoadFromFile('c:\temp\logo_s4u.bmp') ;
end;

destructor TImageEdit.Destroy;
begin
  fBMP.Free ;

  Inherited ;
end;

procedure TImageEdit.WMSetFocus(var Message: TWMSetFocus);
begin
  Inherited;
  fFocus := True ;

  Color := clRed ; // Hack zum Aufrufen von WMPaint
  Color := clWhite ; // Hack zum Aufrufen von WMPaint
end;

procedure TImageEdit.WMKillFocus(var Message: TWMSetFocus);
begin
  Inherited;
  fFocus := False ;

  Color := clRed ; // Hack zum Aufrufen von WMPaint
  Color := clWhite ; // Hack zum Aufrufen von WMPaint
end;

procedure TImageEdit.WMPaint(var msg: TWMPaint);
var dc : hdc;
    canvas :tcanvas;
begin
  Inherited    ;

  if fBMP = NIL then EXIT ;

  if NOT fFocus then
  begin
    if Length(Text) = 0 then
    begin
      dc := getdc(Self.Handle);
      canvas:= tcanvas.Create ;
      Canvas.Handle := DC;
      Canvas.Draw(-5, -3, fBMP);
    end;
  end;
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:07 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 by Thomas Breitkreuz