TEdit, TSpinEdit
Code: |
type {©Drkb v.3(2007): www.drkb.ru} TNumEdit = class(TEdit) procedure CreateParams(var Params: TCreateParams); override; ....... procedure TNumEdit.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.Style := Params.Style or ES_MULTILINE or ES_RIGHT; end; |
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
TEdit не поддерживает выравниваение текста по центру и по правой стороне - лучше использовать компонент TMemo. Вам понадобится запретить пользователю нажимать Enter, Ctrl-Enter и всевозможные комбинации клавиш со стрелками, чтобы избежать появления нескольких сторк в Memo. Этого можно добиться и просматривая содержимое текста в TMemo в поисках кода возврата каретки (13) и перевода строки(10) на событиях TMemo Change и KeyPress. Можно также заменять код возврата каретки на пробел - для того чтобы позволять вставку из буфера обмена многострочного текста в виде одной строки.
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
В форму добавляются TEditBox и TLabel, при этом TLabel постоянно показывает позицию курсора в элементе редактирования.
Code: |
procedure TForm1.Edit1Change(Sender: TObject); begin CurPos := Edit1.SelStart; Label1.Caption := IntToStr(CurPos); end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin If Key = VK_LEFT then dec(CurPos); if Key = VK_RIGHT then inc(CurPos); Label1.Caption:= IntToStr(CurPos); end; |
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Code: |
{ All you have to do is to verride the CreateParams of the class TEdit. Install the following unit as a component. }
unit AlignEdit;
interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TAlign = (eaLeft, eaCenter, eaRight);
TAlignEdit = class(TEdit) private { Private-Deklarationen } FAlign: TAlign; procedure SetAlign(const Value: TAlign); protected { Protected-Deklarationen } procedure CreateParams(var Params: TCreateParams); override; public { Public-Deklarationen } constructor Create(AOwner: TComponent); override; published { Published-Deklarationen } property Alignment: TAlign read FAlign write SetAlign default eaLeft; end;
procedure Register;
implementation
constructor TAlignEdit.Create(Aowner: TComponent); begin inherited Create(AOwner); FAlign := eaLeft; end;
procedure TAlignEdit.SetAlign(const Value: TAlign); begin if FAlign <> Value then begin FAlign := Value; RecreateWnd; end; end;
procedure TAlignEdit.CreateParams(var Params: TCreateParams); begin inherited; case FAlign of eaLeft: Params.Style := Params.Style or ES_LEFT; eaCenter: Params.Style := Params.Style or ES_CENTER; eaRight: Params.Style := Params.Style or ES_RIGHT; end; end;
procedure Register; begin RegisterComponents('SwissDelphiCenter', [TAlignEdit]); end;
end. |
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Как-то раз встала такая проблема: если пользователь какое-то время ничего не вводит в элемент управления Edit, то предупредить его об этом.
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Блокировка вставки нецифровых данных через буфер обмена
Code: |
uses Clipbrd;
function NewEditProc(wnd:HWND; uMsg:UINT; wParam:WPARAM; lParam:LPARAM):integer; stdcall; var s:string; i:integer; begin if (uMsg=WM_PASTE) and Clipboard.HasFormat(CF_TEXT) then begin s := Clipboard.AsText; for i:=1 to Length(s) do if (not (s[i] in ['0'..'9'])) then begin uMsg:=0; break end end; result:=CallWindowProc(Pointer(GetWindowLong(wnd,GWL_USERDATA)),wnd,uMsg,wParam,lParam) end;
procedure TForm1.FormCreate(Sender: TObject); begin SetWindowLong(Edit1.Handle,GWL_STYLE,GetWindowLong(Edit1.Handle,GWL_STYLE) or ES_NUMBER); SetWindowLong(Edit1.Handle,GWL_USERDATA,SetWindowLong(Edit1.Handle, GWL_WNDPROC, LPARAM(@NewEditProc))) end; |
Автор: Krid
Взято из http://forum.sources.ru
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Следующий компонент автоматически подстраивается под текст, вводимый в него:
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
...маленький компонент THintEdit, порожденный от TCustomEdit, который представляет собой с виду обычный TEdit элемент с возможностью автоматического выбора стринговых значений из скрытого списка (так, как это реализовано в Netscape Navigator'е). Описание особенно не нужно, так как выполнено все достаточно элементарно: значения для выбора заносятся в свойство HintList, тип свойства TStrings. При нажатии клавиш вверх/вниз выбираются значения, соответствующие набранным начальным символам.
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Code: |
procedure ClearEdits; var i : Integer; begin for i := 0 to ComponentCount-1 do if (Components[i] is TEdit) then (Components[i] as TEdit).Text := ''; end; |
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Перехватите событие KeyPress и установите key = #0 для недопустимых клавиш.
Code: |
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if ((UpCase(Key) < 'A') or (UpCase(Key) > 'Z')) then Key := #0; end; |
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Это можно давольно легко сделать переопределив на форме процедуру CMDialogKey. Чтобы посмотреть как это работает, поместите на форму Edit и введите следующий код:
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Страница 1 из 3