Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Problem mit von CustomEdit abgeleiteten Eingabefeld (https://www.delphipraxis.net/54214-problem-mit-von-customedit-abgeleiteten-eingabefeld.html)

LH_Freak 29. Sep 2005 20:11


Problem mit von CustomEdit abgeleiteten Eingabefeld
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich programmiere ja z.Z. eine GUI für M.U.H Messenger und hänge grad am Eingabefeld.
Das Problem ist, dass der Text jetzt so in die Ecke geklatscht ist (siehe Anhang).
Den Text den man darunter erkennt zeichne ich mit DrawText.
Aber irgendwie muss ich die Position, wo der Text des CustomEdits ist ändern

Aenogym 29. Sep 2005 20:13

Re: TMUH_Edit
 
Zitat:

Zitat von LH_Freak
Ich programmiere ja z.Z. eine GUI für M.U.H Messenger und hänge grad am Eingabefeld.
Das Problem ist, dass der Text jetzt so in die Ecke geklatscht ist (siehe Anhang).
Den Text den man darunter erkennt zeichne ich mit DrawText.
Aber irgendwie muss ich die Position, wo der Text des CustomEdits ist ändern

*auf anhang wartet*

Khabarakh 29. Sep 2005 20:16

Re: TMUH_Edit
 
*sich übertragungsgeschwindigkeit für bildupload länger als fünf minuten ausrechnet*

Aenogym 29. Sep 2005 20:22

Re: TMUH_Edit
 
Zitat:

Zitat von Khabarakh
*sich übertragungsgeschwindigkeit für bildupload länger als fünf minuten ausrechnet*

anscheinend nutzt er einen akustikkoppler :lol:

LH_Freak 29. Sep 2005 20:23

Re: TMUH_Edit
 
okay, okay. Hab's hinzugefügt :oops:

Pr0g 29. Sep 2005 20:24

Re: TMUH_Edit
 
Warum zeichnest du den Text über ein wohl schon existierendes Eingabefeld?

LH_Freak 29. Sep 2005 20:26

Re: TMUH_Edit
 
des eingabefeld zeichne ich ja. Der Text der drüber ist, soll ja weg bzw. Position und Hintergrundfarbe geändert werden

Sharky 29. Sep 2005 20:34

Re: TMUH_Edit
 
Zitat:

Zitat von LH_Freak
Ich programmiere ja z.Z. eine GUI für M.U.H Messenger ...

Hai LH_Freak,

es wäre trotzdem nett wenn Du deiner Frage einen aussagekräftigen Titel geben würdest.
Mit TMUH_Edit kann sicher niemand etwas anfangen.

Danke :-)

Hansa 29. Sep 2005 21:13

Re: Problem mit von CustomEdit abgeleiteten Eingabefeld
 
Warum leitest Du denn nicht von TEdit ab ? Es ist doch viel zu mühselig, fast alle schon fertigen Sachen vom TEdit selber zu machen. :shock: Wofür gibts denn override ?

LH_Freak 29. Sep 2005 21:39

Re: Problem mit von CustomEdit abgeleiteten Eingabefeld
 
Könnte ich probieren. Hast du irgendein Codebeispiel?

Das hab ich bis jetzt:

Delphi-Quellcode:
unit MUH_Edit;

interface

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

type

TMUH_Edit = class(TCustomEdit)
  private
    BorderCol: TColor;
    BorderCol2: TColor;
    Bckrnd: TColor;
    FCanvas: TCanvas;
    MouseInControl: Boolean;
    procedure NewAdjustHeight;
    procedure CMFontChanged (var Message: TMessage); message CM_FONTCHANGED;
    procedure CMMouseEnter (var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave (var Message: TMessage); message CM_MOUSELEAVE;
    procedure WMSetFocus (var Message: TWMSetFocus); message WM_SETFOCUS;
    procedure WMKillFocus (var Message: TWMKillFocus); message WM_KILLFOCUS;
    procedure WMNCCalcSize (var Message: TWMNCCalcSize); message WM_NCCALCSIZE;
    procedure WMNCPaint (var Message: TMessage); message WM_NCPAINT;
    procedure SetBorderCol(Value:TColor);
    procedure SetBorderCol2(Value: TColor);
    procedure SetBckrnd(Value: TColor);
    procedure Paint(const Clip: HRGN);
  public
    constructor Create (AOwner: TComponent); override;
    procedure Loaded; override;
  published
    property BackgroundColor: TColor read Bckrnd write SetBckrnd;
    property BorderColor: TColor read BorderCOl write SetBorderCol;
    property BorderColor_hell: TColor read BorderCol2 write SetBorderCol2;

    property Align;
    property AutoSize;
    property BorderStyle;
    property CharCase;
    property DragCursor;
    property DragMode;
    property Enabled;
    property Font;
    property HideSelection;
    property MaxLength;
    property OEMConvert;
    property ParentFont;
    property ParentShowHint;
    property PasswordChar;
    property PopupMenu;
    property ReadOnly;
    property ShowHint;
    property TabOrder;
    property TabStop;
    property Text;
    property Visible;

    property OnChange;
    property OnClick;
    property OnDblClick;
    property OnDragDrop;
    property OnDragOver;
    property OnEndDrag;
    property OnEnter;
    property OnExit;
    property OnKeyDown;
    property OnKeyPress;
    property OnKeyUp;
    property OnMouseDown;
    property OnMouseMove;
    property OnMouseUp;
    property OnStartDrag;
   {$IFDEF D4CB4}
    property Anchors;
    property BiDiMode;
    property Constraints;
    property DragKind;
    property ParentBiDiMode;
    property OnEndDock;
    property OnStartDock;
   {$ENDIF}
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('MUH Messenger', [TMUH_EDIT]);
end;

constructor TMUH_Edit.Create (AOwner: TComponent);
begin
  inherited;
  ParentFont := True;
  BorderCol := $00849295;
  BorderCol2 := $00E7EBEF;
  Bckrnd    := clWhite;

  FCanvas := TControlCanvas.Create;
  TControlCanvas(FCanvas).Control := self;

  AutoSize := False;
  Ctl3D := False;
  ControlStyle := ControlStyle - [csFramed];
  SetBounds(0, 0, 121, 19);
end;

procedure TMUH_Edit.Paint(const Clip: HRGN);
var
Points: array [0..8] of TPoint;
aRect: TRect;
R: TRect;
begin
GetWindowRect(Handle, R);

InflateRect(R, 3, 3);

FCanvas.Brush.Color := Bckrnd;
FCanvas.Rectangle(Rect(1,1,Width,Height));
FCanvas.Brush.Color := BorderCol;
FCanvas.FrameRect(Rect(0,0,Width,Height));
FCanvas.Pen.Color := BorderCol2;
FCanvas.MoveTo(1,Height-2);
FCanvas.LineTo(1,1);
FCanvas.LineTo(Width-1,1);
FCanvas.Brush.Style := bsClear;
FCanvas.TextOut(0,0,Text);
end;

procedure TMUH_Edit.NewAdjustHeight;
var
  DC: HDC;
  SaveFont: HFONT;
  Metrics: TTextMetric;
begin
  DC := GetDC(0);
  SaveFont := SelectObject(DC, Font.Handle);
  GetTextMetrics(DC, Metrics);
  SelectObject(DC, SaveFont);
  ReleaseDC(0, DC);

  Height := Metrics.tmHeight + 6;
end;

procedure TMUH_Edit.CMFontChanged(var Message: TMessage);
begin
  inherited;
  if not((csDesigning in ComponentState) and (csLoading in ComponentState)) then
    NewAdjustHeight;
end;

procedure TMUH_Edit.CMMouseEnter(var Message: TMessage);
begin
  inherited;
  if (GetActiveWindow <> 0) then
  begin
    MouseInControl := True;
    Paint(0);
  end;
end;

procedure TMUH_edit.CMMouseLeave(var Message: TMessage);
begin
  inherited;
  MouseInControl := False;
  Paint(0);
end;

procedure TMUH_Edit.WMSetFocus (var Message: TWMSetFocus);
begin
  inherited;
  if not(csDesigning in ComponentState) then
    Paint(0);
end;

procedure TMUH_Edit.WMKillFocus (var Message: TWMKillFocus);
begin
  inherited;
  if not(csDesigning in ComponentState) then
    Paint(0);
end;

procedure TMUH_Edit.WMNCCalcSize (var Message: TWMNCCalcSize);
begin
  inherited;
  InflateRect(Message.CalcSize_Params^.rgrc[0],-3,-3);
end;

procedure TMUH_Edit.Loaded;
begin
  inherited;
  if not(csDesigning in ComponentState) then
    NewAdjustHeight;
end;

procedure TMUH_Edit.WMNCPaint (var Message: TMessage);
begin
  inherited;
  Paint(HRGN(Message.WParam));
end;

procedure TMUH_Edit.SetBorderCol(Value: TCOlor);
begin
BorderCol := Value;
Paint(0);
end;

procedure TMUH_Edit.SetBorderCol2(Value: TCOlor);
begin
BorderCol2 := Value;
end;

procedure TMUH_Edit.SetBckrnd(Value: TCOlor);
begin
Bckrnd := Value;
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:03 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz