TEdit, TSpinEdit
У TSpinEdit.Button есть дополнительные события, которые не показаны в инспекторе объектов, например, OnUpClick и OnDownClick...
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Как ограничить длинну текста, вводимого в TEdit, так чтобы ширина текста не превышала
ширину TEdit'а?
В примере приведено два способа ограничить длинну текста в TEdit так чтобы она не превышала ширину клиентской области окна TEdit'а и не появлялась прокрутка текста. Первый способ устанавливает свойство TEdit'а MaxLength равным числу букв "W", которые поместятся в TEdit. "W" выбрана потому, что является, наверное, самой широкой буквой в любом шрифте. Этот метод сносно работает для шрифтов с фиксированной шириной букв, но для шрифтов с переменной шириной букв вряд ли сгодится. Второй способ перхватывает событие KeyPress TEdit'а и измеряет ширину уже введенного текста и ширину нового символа. Если ширина больше чем клиентская область TEdit'а новый символ отбрасывается и вызывается MessageBeep.
- Подробности
- Родительская категория: 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
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
Code: |
procedure DoSomethingWithEditControls; var K: Integer; EditArray: array[0..99] of Tedit; begin try for K := 0 to 99 do begin EditArray[K] := TEdit.Create(Self); EditArray[K].Parent := Self; {Устанавливаем необходимые свойства TEdit} SetSomeOtherPropertiesOfTEdit; Left := 100; Top := K * 10; {Что-то делаем при перемещении мыши} OnMouseMove := WhatToDoWhenMouseIsMoved; end; {Делаем все что хотим с полученным массивом Edit-компонентов} DoWhateverYouWantToDoWithTheseEdits; finally for K := 0 to 99 do EditArray[K].Free; end; end;
|
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Это можно давольно легко сделать переопределив на форме процедуру CMDialogKey. Чтобы посмотреть как это работает, поместите на форму Edit и введите следующий код:
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Code: |
{ In this exemple, the only keys allowed are the same allowed in e-mail adresses. }
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); const AllowedChars: string = 'abcdefghijklmnopq' + 'rstuvwxyz01234567_.@'; var i: Integer; Ok: Boolean; begin i := 0; Ok := False; { If you erase next line, user won't be able to type backspace } if Key = #8 then Ok := True; repeat i := i + 1; if Key = AllowedChars[i] then Ok := True; until (Ok) or (i = Length(AllowedChars)); if not Ok then Key := #0; end; |
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
когда TEdit получает фокус надо вызвать:
Code: |
ActivateKeyboardLayout($409, 0); |
если этого мало тогда почитай про WM_INPUTLANGCHANGE
- Подробности
- Родительская категория: 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: |
{TRichEdit}
var pt: TPoint; begin with richedit1 do begin Perform(messages.EM_POSFROMCHAR, WPARAM(@pt), selstart); label1.caption := Format('(%d, %d)', [pt.x, pt.y]); end; end;
{TMemo and TEdit}
var r: LongInt; begin with memo1 do begin r := Perform(messages.EM_POSFROMCHAR, selstart, 0); if r >= 0 then begin label1.caption := IntToStr(HiWord(r)); label2.caption := IntToStr(LoWord(r)); end; end; end; |
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Сегодня поговорим о том, как помочь пользователю ввести в поле ввода текст. Для этого компьютер должен по первым буквам вводимого слова догадаться, что хочет написать пользователь, и предложить ему этот вариант. Один из способов это сделать - дописывать не хватающие буквы к слову, но выделять их.
Нужно решить три задачи:
1. определить вводимые символы,
2. найти слово, начинающееся с этих символов,
3. добавить не хватающие символы и выделить их.
Для решения первой задачи достаточно найти первый символ, не являющийся буквой. Для решения второй задачи можно использовать поиск в StringList. Вставить недостающие символы удобно в специальной переменной типа String.
В этом примере словарь состоит из названий чисел (на английском): от 1 до 10. Иногда словарь можно пополнять, добавляя туда незнакомые слова, вводимые пользователем.
- Подробности
- Родительская категория: VCL
- Категория: TEdit, TSpinEdit
Страница 2 из 3