Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>You might hook the WM_Paint message and draw a rectangle on the ControlCanvas if required. One way to do this could look like this:</p> <pre><code>unit Edit_WithFrame_If_Needed_But_Empty; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TEdit = Class(StdCtrls.TEdit) procedure WMPaint(var Message: TWMPaint); message WM_PAINT; procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED; procedure WMKEYUP(var Message: TWMPaint); message WM_KEYUP; private FPaintedRed: Boolean; FRequired: Boolean; procedure CheckForInvalidate; published public Property Required: Boolean read FRequired Write FRequired; End; TForm2 = class(TForm) Button1: TButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; implementation {$R *.dfm} { TEdit } procedure TEdit.CheckForInvalidate; begin if Required and (Length(Trim(Text)) = 0) then begin if not FPaintedRed then Invalidate; end else if FPaintedRed then Invalidate; end; procedure TEdit.CMTextChanged(var Message: TMessage); begin inherited; CheckForInvalidate; end; procedure TEdit.WMKEYUP(var Message: TWMPaint); begin CheckForInvalidate; end; procedure TEdit.WMPaint(var Message: TWMPaint); var CC: TControlCanvas; begin inherited; if Required and (Length(Trim(Text)) = 0) then begin FPaintedRed := true; CC := TControlCanvas.Create; try CC.Control := Self; CC.Pen.Color := clRed; CC.Pen.Width := 3; CC.Rectangle(ClientRect); finally CC.Free; end; end else FPaintedRed := false; end; procedure TForm2.FormCreate(Sender: TObject); begin Edit1.Required := true; Edit3.Required := true; end; end. </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload